如何用XlsxWriter在Excel指定工作表写入字符串及数值?解决报错
问题解决办法
错误1:AttributeError: 'str' object has no attribute 'to_excel'
这个错误是因为你直接对字符串/数值变量调用了to_excel()方法——这个方法仅属于pandas的DataFrame或Series对象,普通字符串、数值不能直接使用。
解决思路:把零散的文本、数值变量整理成DataFrame或Series,再写入Sheet3。
示例代码:
import pandas as pd # 假设已有的两个DataFrame df1 = pd.DataFrame({'A': [1,2,3]}) df2 = pd.DataFrame({'B': [4,5,6]}) # 你的文本和数值变量 txt1 = 'TITLE 1' Value1 = 30 txt2 = 'TITLE 2' Value2 = 50 # 把变量整理成DataFrame sheet3_data = pd.DataFrame({ '标题': [txt1, txt2], '数值': [Value1, Value2] }) # 用ExcelWriter统一写入所有工作表 with pd.ExcelWriter('你的文件.xlsx', engine='openpyxl') as writer: df1.to_excel(writer, sheet_name='Sheet1', index=False) df2.to_excel(writer, sheet_name='Sheet2', index=False) sheet3_data.to_excel(writer, sheet_name='Sheet3', index=False)
错误2:KeyError: 'sheet3'
这个错误通常有两种场景:
- 尝试读取已存在的Excel文件,想直接写入不存在的Sheet3,但用了错误的方式(比如先读取整个文件,再试图给
sheet_names里没有的Sheet赋值)。 - 使用
mode='a'追加写入时,引擎不支持动态创建工作表,或者没有正确初始化工作表。
解决思路:
- 如果是新建文件:用上面的
ExcelWriter一次性写入所有工作表,会自动创建Sheet3。 - 如果是给已有文件追加Sheet3:确保使用支持追加的引擎(比如
openpyxl),并且在ExcelWriter中指定mode='a',同时文件不能处于打开状态。
示例代码(追加场景):
with pd.ExcelWriter('你的文件.xlsx', engine='openpyxl', mode='a', if_sheet_exists='new') as writer: sheet3_data.to_excel(writer, sheet_name='Sheet3', index=False)
注意:if_sheet_exists='new'会在Sheet3已存在时创建新的工作表(比如Sheet31),如果要覆盖已存在的Sheet3,可设为if_sheet_exists='replace'。
内容的提问来源于stack exchange,提问作者Mikel Alba
相关产品推荐
相关产品推荐

