我想实现一个将文件写入Excel中不同的工作表,如果存在同名工作表,则写入相同工作表,但遇到问题,没有相同工作表能运行,存在相同工作表时出现写入问题,调试时运行到old_df = pd.read_excel出现错误报告,File is not a zip file,有人知道吗?


我想实现一个将文件写入Excel中不同的工作表,如果存在同名工作表,则写入相同工作表,但遇到问题,没有相同工作表能运行,存在相同工作表时出现写入问题,调试时运行到old_df = pd.read_excel出现错误报告,File is not a zip file,有人知道吗?


阿里嘎多学长整理AIGC生成,因移动端显示问题导致当前答案未能完全显示,请使用PC端查看更加详细的解答过程
你遇到的问题是因为 pandas 读取 Excel 文件时,如果工作表已经存在,会抛出错误。为了解决这个问题,你可以使用 pandas 的 ExcelWriter 对象来写入 Excel 文件,并使用 sheet_name 参数指定工作表的名称。
以下是一个示例代码:
import pandas as pd
# 创建一个 ExcelWriter 对象
with pd.ExcelWriter('output.xlsx', engine='openpyxl') as writer:
# 写入第一个工作表
df1.to_excel(writer, sheet_name='Sheet1', index=False)
# 写入第二个工作表
df2.to_excel(writer, sheet_name='Sheet2', index=False)
在上面的代码中,我们使用 ExcelWriter 对象来写入 Excel 文件,并使用 sheet_name 参数指定工作表的名称。如果工作表已经存在,pandas 会自动覆盖该工作表。
如果你想在写入时检查是否存在相同工作表,可以使用 writer.sheets 属性来检查工作表的名称:
import pandas as pd
# 创建一个 ExcelWriter 对象
with pd.ExcelWriter('output.xlsx', engine='openpyxl') as writer:
# 检查是否存在相同工作表
if 'Sheet1' in writer.sheets:
# 如果存在相同工作表,使用 append 模式写入
df1.to_excel(writer, sheet_name='Sheet1', index=False, mode='a', header=False)
else:
# 如果不存在相同工作表,使用写入模式写入
df1.to_excel(writer, sheet_name='Sheet1', index=False)
在上面的代码中,我们检查是否存在相同工作表,如果存在,我们使用 mode='a' 和 header=False 参数来追加写入该工作表。如果不存在,我们使用默认的写入模式写入该工作表。