如何使用Pandas ExcelWriter将空工作表添加到现有工作簿中

时间:2019-06-07 16:01:41

标签: python excel pandas xlsxwriter

我正在尝试使用python xlsxwriter将空的excel工作表添加到现有的Excel文件中。

按如下所示设置公式效果很好。

workbook = xlsxwriter.Workbook(file_name)
worksheet_cover = workbook.add_worksheet("Cover")
Output4 = workbook
Output4.close()

但是一旦我尝试向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') 

我应该如何编写代码,以便可以将空白表和现有数据框添加到现有的excel文件中。

或者,一旦我生成了Excel文件,回答一下如何切换引擎将很有帮助...

感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

您可以将pandas.ExcelWriter与可选的mode='a'参数一起使用,以附加到现有的Excel工作簿中。

  

您还可以将其附加到现有的Excel文件中:

>>> 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。您需要确保已安装该软件包,否则将收到“找不到模块”错误。我已经测试过使用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') 

答案 1 :(得分:0)

如果您没有被迫使用\documentclass{beamer} \usepackage[style=authoryear]{biblatex} \usepackage{filecontents} \begin{filecontents*}{\jobname.bib} @book{knuth, author = {Knuth, Donald E.}, title = {The {\TeX} book}, date = 1984, maintitle = {Computers \& Typesetting}, volume = {A}, publisher = {Addison-Wesley}, location = {Reading, Mass.}, langid = {english}, langidopts = {variant=american}, sortyear = {1984-1}, sorttitle = {Computers & Typesetting A}, indexsorttitle= {The TeXbook}, indextitle = {\protect\TeX book, The}, shorttitle = {\TeX book} } \end{filecontents*} \addbibresource{\jobname.bib} \begin{document} \begin{frame} test\footcite{knuth} test\footnotemark[1] \end{frame} \end{document} ,请尝试使用openpyxl。只需为内置ExcelWriter类的xlsxwriter传递'openpyxl'作为引擎。我在why this works上问过一个问题。这是有用的代码。它可以与pandas的语法一起很好地工作,并且不会覆盖您已经存在的工作表。

pd.to_excel()