使用Linux执行时不会出现Xlsxwriter标头格式

问题描述 投票:1回答:1

我当前的项目涉及编写一个使用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上执行时,代码应该以不同的方式编写吗?如果是,有什么区别或在哪里可以找到找到这种差异的材料?

python pandas xlsxwriter python-3.7
1个回答
2
投票

但是,在测试期间通过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)
© www.soinside.com 2019 - 2024. All rights reserved.