熊猫内外的Xlsxwriter锁定

Mic*_*nek 4 python excel pandas xlsxwriter

我正在使用xlsxwriter引擎通过pandas.to_excel()将一些数据帧推入excel工作表,但是我需要在每个表上方添加标题。

这是我想要达到的结果的一个示例: 在此处输入图片说明

我没有看到任何方法使用熊猫的ExcelWriter对象来简单地操纵每个单元格的内容,当我尝试这样做时,我得到了:

例外:忽略大小写的图纸名称“样本”已在使用中。

我猜xlsxwriter会自行锁定。这是一个例子:

xlsx_writer = pd.ExcelWriter(
    get_target_filepath(xlsx_name),
    engine='xlsxwriter'
)

workbook = xlsx_writer.book
worksheet = workbook.add_worksheet(sheet_name)

worksheet.write(1, 1, 'ABC')

_, sample_table = dataframe_tuples[0]
sample_table.to_excel(xlsx_writer, startrow=3, startcol=2, sheet_name=sheet_name)
Run Code Online (Sandbox Code Playgroud)

我可以保存数据帧,然后再用openpyxl进行遍历,但是我严重不喜欢它们进行格式化的方式,这是我下一步要做的。如果我在xlsxwriter中对其进行格式化,然后再用openpyxl将其重新打开,则无法正确保存格式,openpyxl破坏了它。

我不能将excel本身放在服务器上以使用VBA宏进行样式设置。

有什么办法可以解决这个问题,还是我只是做错了什么?

jmc*_*ara 5

您可以通过从熊猫获取工作表引用并在其上调用标准XlsxWriter方法来进行以下操作。像这样:

import pandas as pd


# Create some Pandas dataframes from some data.
df1 = pd.DataFrame({'Data': [11, 12, 13, 14]})
df2 = pd.DataFrame({'Data': [21, 22, 23, 24]})

# Create a Pandas Excel writer using XlsxWriter as the engine.
writer = pd.ExcelWriter('pandas_example.xlsx', engine='xlsxwriter')

# Position the dataframes in the worksheet.
df1.to_excel(writer, sheet_name='Sheet1', index=False, startrow=2)
df2.to_excel(writer, sheet_name='Sheet1', index=False, startrow=9)

# Get the worksheet object.
worksheet = writer.sheets['Sheet1']

# Write some titles above the dataframes.
worksheet.write(1, 0, 'Some random title 1')
worksheet.write(8, 0, 'Some random title 2')

# Close the Pandas Excel writer and output the Excel file.
writer.save()
Run Code Online (Sandbox Code Playgroud)

另请参阅使用Python Pandas和XlsxWriter

输出:

在此处输入图片说明

  • 我检测到错误。在调用 pandas to_excel 之前,我似乎无法获取工作表。之后,工作表“存在”。所以执行顺序是我的问题。谢谢,很高兴认识 xlsxwriter 项目的策划者! (2认同)