0

我有一个要附加到的 .xlsx 文件。我在用:

excel_writer = pd.ExcelWriter('asdf.xlsx', engine='openpyxl', mode='a')
df.to_excel(excel_writer, sheet_name='dummy', index=False)
excel_writer.close()

它确实成功地创建了工作表“虚拟”,但删除了“asdf.xlsx”中的所有其他现有工作表。我正在使用附加模式,所以我不太确定还要检查哪里。运行 Pandas 0.20.1 版

我尝试了0.20.1 文档中的代码,但它也覆盖了所有内容。

如果传递现有的 ExcelWriter 对象,则工作表将添加到现有工作簿中。这可用于将不同的 DataFrame 保存到一个工作簿:

writer = pd.ExcelWriter('output.xlsx')
df1.to_excel(writer,'Sheet1')
df2.to_excel(writer,'Sheet2')
writer.save()
4

1 回答 1

1

问题是,您误解了附加功能。这意味着,你追加到当前的 excelwriter,但如果你没有设置模式,你会创建一个新的空 excel 文件。您必须将 ExcelWriter 的模式设置为a(附加)。这将在您每次运行时附加新工作表:

import pandas as pd
from openpyxl import load_workbook

data = [
    {"a": 1, "b": 2}
]

df = pd.DataFrame(data)
df2 = pd.DataFrame(data)

book = load_workbook("output.xlsx")
writer = pd.ExcelWriter('output.xlsx', mode="a")

if "Sheet11" not in book.sheetnames:
    df.to_excel(writer, 'Sheet11')

if "Sheet21" not in book.sheetnames:
    df2.to_excel(writer, 'Sheet21')
    writer.save()

print(book.sheetnames)

编辑:已
添加load_workbook
此答案的一部分基于此答案

于 2020-10-13T17:42:45.113 回答