我当前的项目涉及编写一个使用Pandas和Xlsxwriter制作Excel文件的脚本,并通过电子邮件API按计划发送此文件。在开发过程中在Windows上生成excel文件时,我最初为标题设置的格式运行正常。
但是,在测试期间通过Linux运行脚本时,Header格式化将消失,而其余单元格将保持其预期格式。
我已经包含下面的代码来删除初始标头以使用我自己的自定义标头
pandas.io.formats.excel_header = None
自定义标头格式(适用于Windows):
header_format = workbook.add_format({
'font_name': 'ARIAL',
'font_size': 10,
'bold': True,
'align': 'center',
'border': 1,
'fg_color': '#00D2EB'
})
这是我用来格式化Header的代码
worksheet.set_row(row, None, header_format)
从我在Windows上尝试过的,当我注释掉行以删除标题格式然后应用我自己的行时,它不会使用我的自定义格式。在linux上,即使首先删除标题格式的代码然后我的自定义格式,它也会在没有我的自定义格式的情况下执行。它也不会返回任何错误。
标题结果:
这是我在Windows Expected中得到的
这是我在Linux What I Got中得到的
在Linux和Windows上执行时,代码应该以不同的方式编写吗?如果是,有什么区别或在哪里可以找到找到这种差异的材料?
但是,在测试期间通过Linux运行脚本时,Header格式化将消失,而其余单元格将保持其预期格式。
Windows和Linux之间的区别可能在于Pandas版本。 pandas.io.formats.excel_header
改变了其中一个熊猫版本。
我建议避免像这样取消设置标题格式,因为它不是真正的文档功能,并且您已经看到它在Pandas版本中不一致。
相反,我建议关闭标题并明确设置标题格式,如XlsxWriter docs中的此示例:
# Turn off the default header and skip one row to allow us to insert a
# user defined header.
df.to_excel(writer, sheet_name='Sheet1', startrow=1, header=False)
# Get the xlsxwriter workbook and worksheet objects.
workbook = writer.book
worksheet = writer.sheets['Sheet1']
# Add a header format.
header_format = workbook.add_format({
'bold': True,
'text_wrap': True,
'valign': 'top',
'fg_color': '#D7E4BC',
'border': 1})
# Write the column headers with the defined format.
for col_num, value in enumerate(df.columns.values):
worksheet.write(0, col_num + 1, value, header_format)