我使用 pandas 以以下方式写入excel文件:
import pandas
writer = pandas.ExcelWriter('Masterfile.xlsx')
data_filtered.to_excel(writer, "Main", cols=['Diff1', 'Diff2'])
writer.save()
Masterfile.xlsx已经包含许多不同的选项卡。但是,它还不包含“ Main”。
pandas 正确地写入“主”表,不幸的是,它也删除了所有其他标签。
pandas 文档表示,它对xlsx文件使用openpyxl。快速浏览一下其中的代码ExcelWriter
可以提示可能会发生以下情况:
import pandas
from openpyxl import load_workbook
book = load_workbook('Masterfile.xlsx')
writer = pandas.ExcelWriter('Masterfile.xlsx', engine='openpyxl')
writer.book = book
## ExcelWriter for some reason uses writer.sheets to access the sheet.
## If you leave it empty it will not know that sheet Main is already there
## and will create a new sheet.
writer.sheets = dict((ws.title, ws) for ws in book.worksheets)
data_filtered.to_excel(writer, "Main", cols=['Diff1', 'Diff2'])
writer.save()
您能解释一下writer.sheets的用途吗?
由于某种原因,ExcelWriter使用此变量来访问工作表。如果将其保留为空,则它将不知道工作表Main已经存在,并且将创建一个新工作表。
此解决方案工作正常。但是它有一个缺点。它破坏了电子表格中的公式和连接。有什么想法可以改变这种行为吗?
你到底是怎么坏的..?您可以将其作为一个单独的问题提出来,
openpyxl
并为其打上标签,并提供足够的详细信息:您拥有哪种公式,如何更新数据,如何制动公式。现在我无能为力,我不知道的事情太多了。可以与.xlsm文件一起使用吗?