【发布时间】:2021-10-21 11:27:01
【问题描述】:
我的代码的工作方式与我希望的完全一样,从 df 获取数据并将其插入到所需的 Excel 文件中,同时跳过相应的行。但是,当我点击 .save() 函数时,其他引用数据的工作表(主要通过枢轴)似乎会中断,即使作者没有触及它们。我可以将数据插入另一个 Excel 文件,复制并粘贴与 python 数据放置的完全相同的数据,并且相应的工作表不会中断,但会显示正确的信息。当 Python 写入文件时,如何阻止其他工作表损坏?
filename_in = 'File Location In'
filename_out = 'File Location Out'
sheet_name = 'Detail'
pos_detail_data_df.to_excel(filename_in, sheet_name=sheet_name, header = False, index = False)
df = pd.read_excel(filename_in, sheet_name=sheet_name)
book = load_workbook(filename_in)
writer = pd.ExcelWriter(filename_out, engine='openpyxl')
writer.book = book
writer.sheets = dict((ws.title, ws) for ws in book.worksheets)
writer.sheets
df.to_excel(writer, sheet_name, index=False, startrow = 2, header = False)
writer.save()
编辑: 代码已更新以反映来自下方的帮助。但是,现在该过程将简单地从我的 filename_out 中删除所有内容,并仅将其替换为 filename_in 中的工作表
【问题讨论】:
-
df在哪里使用?它已创建,但随后出现pos_detail_data_df.to_excel(writer。 “好像坏了”是什么意思? -
@MDR 我对 Python 还是比较陌生,这只是包含在我正在使用的原始编码中。 “中断”是指当我插入数据时,第一张表(未写入)不再维护其切片器或字段设置中的“重复项”。
-
代码看起来不完整。如果您调整工作簿中其他地方引用的工作表,则必须自己更新引用。
-
@CharlieClark 仅供参考:评论我的回答是它是一个切片器扩展。我相信从 2020 年 10 月起,它们不受 groups.google.com/g/openpyxl-users/c/TKnnFMISB0c 的支持。
-
我不认为切片器与任何破损有关。 Openpyxl 将简单地删除它们,但根据下面的答案,它本身不应该破坏任何东西。
标签: python excel pandas openpyxl xlsx