如何使用 Pandas ExcelWriter 将空工作表添加到现有工作簿中
How to add an empty Worksheet into an existing Workbook using Pandas ExcelWriter
我正在尝试使用 python xlsxwriter 添加一个空的 excel sheet 到现有的 Excel 文件中。
按如下方式设置公式效果很好。
workbook = xlsxwriter.Workbook(file_name)
worksheet_cover = workbook.add_worksheet("Cover")
Output4 = workbook
Output4.close()
但是一旦我尝试将带有数据帧的 sheets 添加到 Excel 中,它会覆盖之前的 excel:
with pd.ExcelWriter('Luther_April_Output4.xlsx') as writer:
data_DifferingRates.to_excel(writer, sheet_name='Differing Rates')
data_DifferingMonthorYear.to_excel(writer, sheet_name='Differing Month or Year')
data_DoubleEntries.to_excel(writer, sheet_name='Double Entries')
我应该如何编写代码,以便我可以将空 sheet 和现有数据帧添加到现有 excel 文件中。
或者,一旦我生成了 Excel 文件,回答如何切换引擎会很有帮助...
感谢您的帮助!
您可以使用 pandas.ExcelWriter
和可选的 mode='a'
参数来附加到现有的 Excel 工作簿。
You can also append to an existing Excel file:
>>> with ExcelWriter('path_to_file.xlsx', mode='a') as writer:`
... df.to_excel(writer, sheet_name='Sheet3')`
然而不幸的是, 这需要使用不同的引擎,因为正如您所观察到的 ExcelWriter
不支持可选的 mode='a'
(追加)。如果您尝试将此参数传递给构造函数,it raises an error.
因此您需要使用不同的引擎来执行追加,例如 openpyxl。您需要确保已安装该软件包,否则您将收到 "Module Not Found" 错误。我已经使用 openpyxl
作为引擎进行了测试,它能够将新工作表附加到现有工作簿:
with pd.ExcelWriter(engine='openpyxl', path='Luther_April_Output4.xlsx', mode='a') as writer:
data_DifferingRates.to_excel(writer, sheet_name='Differing Rates')
data_DifferingMonthorYear.to_excel(writer, sheet_name='Differing Month or Year')
data_DoubleEntries.to_excel(writer, sheet_name='Double Entries')
如果您没有被迫使用 xlsxwriter
,请尝试使用 openpyxl
. Simply pass 'openpyxl' as the Engine for the pandas
built-in ExcelWriter
class. I had asked a question a while back on 。这是有用的代码。它适用于 pd.to_excel()
的语法,并且不会覆盖您现有的工作表。
from openpyxl import load_workbook
import pandas as pd
book = load_workbook(file_name)
writer = pd.ExcelWriter(file_name, engine='openpyxl')
writer.book = book
data_DifferingRates.to_excel(writer, sheet_name='Differing Rates')
data_DifferingMonthorYear.to_excel(writer, sheet_name='Differing Month or Year')
data_DoubleEntries.to_excel(writer, sheet_name='Double Entries')
writer.save()
我正在尝试使用 python xlsxwriter 添加一个空的 excel sheet 到现有的 Excel 文件中。
按如下方式设置公式效果很好。
workbook = xlsxwriter.Workbook(file_name)
worksheet_cover = workbook.add_worksheet("Cover")
Output4 = workbook
Output4.close()
但是一旦我尝试将带有数据帧的 sheets 添加到 Excel 中,它会覆盖之前的 excel:
with pd.ExcelWriter('Luther_April_Output4.xlsx') as writer:
data_DifferingRates.to_excel(writer, sheet_name='Differing Rates')
data_DifferingMonthorYear.to_excel(writer, sheet_name='Differing Month or Year')
data_DoubleEntries.to_excel(writer, sheet_name='Double Entries')
我应该如何编写代码,以便我可以将空 sheet 和现有数据帧添加到现有 excel 文件中。
或者,一旦我生成了 Excel 文件,回答如何切换引擎会很有帮助...
感谢您的帮助!
您可以使用 pandas.ExcelWriter
和可选的 mode='a'
参数来附加到现有的 Excel 工作簿。
You can also append to an existing Excel file:
>>> with ExcelWriter('path_to_file.xlsx', mode='a') as writer:`
... df.to_excel(writer, sheet_name='Sheet3')`
然而不幸的是, 这需要使用不同的引擎,因为正如您所观察到的 ExcelWriter
不支持可选的 mode='a'
(追加)。如果您尝试将此参数传递给构造函数,it raises an error.
因此您需要使用不同的引擎来执行追加,例如 openpyxl。您需要确保已安装该软件包,否则您将收到 "Module Not Found" 错误。我已经使用 openpyxl
作为引擎进行了测试,它能够将新工作表附加到现有工作簿:
with pd.ExcelWriter(engine='openpyxl', path='Luther_April_Output4.xlsx', mode='a') as writer:
data_DifferingRates.to_excel(writer, sheet_name='Differing Rates')
data_DifferingMonthorYear.to_excel(writer, sheet_name='Differing Month or Year')
data_DoubleEntries.to_excel(writer, sheet_name='Double Entries')
如果您没有被迫使用 xlsxwriter
,请尝试使用 openpyxl
. Simply pass 'openpyxl' as the Engine for the pandas
built-in ExcelWriter
class. I had asked a question a while back on pd.to_excel()
的语法,并且不会覆盖您现有的工作表。
from openpyxl import load_workbook
import pandas as pd
book = load_workbook(file_name)
writer = pd.ExcelWriter(file_name, engine='openpyxl')
writer.book = book
data_DifferingRates.to_excel(writer, sheet_name='Differing Rates')
data_DifferingMonthorYear.to_excel(writer, sheet_name='Differing Month or Year')
data_DoubleEntries.to_excel(writer, sheet_name='Double Entries')
writer.save()