问题描述
sites-available
会成功创建工作表“虚拟”,但删除“ asdf.xlsx”中所有其他现有工作表。我正在使用追加模式,所以我不太确定还有其他地方可以检查。 正在运行Pandas版本0.20.1
我尝试了docs for 0.20.1中的代码,但是它也覆盖了所有内容。
如果传递现有的ExcelWriter对象,则工作表将为 添加到现有工作簿中。这可以用来保存不同 DataFrames到一个工作簿:
excel_writer = pd.ExcelWriter('asdf.xlsx',engine='openpyxl',mode='a')
df.to_excel(excel_writer,sheet_name='dummy',index=False)
excel_writer.close()
解决方法
问题是您误解了附加功能。这意味着,您将追加到当前的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
此答案的一部分基于this answer