【问题标题】:Pandas and xlsxwriter: how to create a new sheet without exporting a dataframe?Pandas 和 xlsxwriter:如何在不导出数据框的情况下创建新工作表?
【发布时间】:2023-03-19 10:09:02
【问题描述】:

如果我直接调用 xlsxwriter 模块,很容易在新文件中创建一个新工作表,并写入其单元格,例如:

import xlsxwriter
workbook = xlsxwriter.Workbook('test 1.xlsx')
wks1=workbook.add_worksheet('Test sheet')
wks1.write(0,0,'some random text')
workbook.close()

但是,我的问题是:如何使用 Pandas.ExcelWriter 对象创建新工作表?该对象可以在导出数据框时创建新工作表,但如果我不这样做 '没有要导出的数据框?

例如假设我已将 4 个数据框导出到 4 个单独的工作表,现在我只想将一些文本写入新工作表。我找到的唯一解决方案是创建一个空数据框,导出它(创建新工作表),然后写入工作表:

import pandas as pd
writer = pd.ExcelWriter('test 2 .xlsx',  engine='xlsxwriter')
df=pd.DataFrame()
df.to_excel(writer, 'new sheet', index=False, startrow=0,startcol=0)
writer.sheets['new sheet'].write(0,0,'some random text')
writer.close()

还有其他方法吗? add_worksheet() 似乎只是工作簿类的方法,而不是 ExcelWriter 的方法

【问题讨论】:

  • Idk 是否有办法做到这一点,但你不喜欢正确的行为吗?使用 xlxwriter 对象将一般更改写入 Excel,而 Pandas 实现仅提供会影响 Excel 文件的 df 方法
  • 可以选择 openpyxl 吗?
  • 除非它在过去一年左右得到显着改善,否则 openpyxl 比 xlsxwriter 慢得多。导出小数据集时差别不大,但导出数值模拟结果的大表时差别很大。而且,在提出 csv 之前,Excel 更方便,因为它允许您应用一些格式,并且因为它允许您在同一个文件中存储 10 个表(每个工作表一个)。但是openpyxl的优势是可以读取现有的Excel文件,这是xlsxwriter做不到的。

标签: python pandas dataframe xlsxwriter


【解决方案1】:

我认为您的操作方式没有任何问题,但您也可以使用 ExcelWriter 中的 XlsxWriter 工作簿对象,如下所示:

writer = pd.ExcelWriter('test 2 .xlsx', engine='xlsxwriter')

workbook = writer.book
worksheet = workbook.add_worksheet('new sheet')
worksheet.write(0, 0, 'some random text')

【讨论】:

  • 啊 - 我需要 writer.book!我试图使用 writer.add_worksheet,但没有奏效。我现在明白了 - 谢谢!
猜你喜欢
  • 2018-04-20
  • 1970-01-01
  • 2023-02-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-20
  • 1970-01-01
  • 2017-05-16
相关资源
最近更新 更多