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

时间:2019-02-12 09:54:11

标签: python pandas xlsxwriter python-3.7

我当前的项目涉及编写脚本,该脚本使用Pandas和Xlsxwriter创建Excel文件,并使用cron按计划通过电子邮件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'
   })

这是我用来格式化页眉的代码

worksheet.set_row(row, None, header_format)

根据我在Windows上尝试过的内容,当我注释掉该行以删除标头格式然后应用自己的格式时,它不使用我的自定义格式。在linux上,即使使用先删除标头格式然后删除我的自定义格式的代码,它也将在没有我的自定义格式的情况下执行。它也不返回任何错误。

标题结果:

这是我在Windows中得到的 Expected

这是我在Linux中得到的 What I Got

在Linux和Windows上执行时,代码编写方式是否应不同?如果是,有什么区别?或者在哪里可以找到可以找到这种区别的材料?

1 个答案:

答案 0 :(得分:2)

  

但是,当在测试过程中通过Linux运行脚本时,Header格式会消失,而其他单元格则保持其预期格式。

Windows和Linux之间的区别可能在于Pandas版本。 [Flags] enum FoodOptions { None = 0, Fruits = 1, Drinks = 2, Lunch = 4, Dinner = 8, } var options = FoodOptions.None; if(model.Fruits.Value) options |= FoodOptions.Fruits; if(model.Drinks.Value) options |= FoodOptions.Drinks; if(model.Lunch.Value) options |= FoodOptions.Lunch; if(model.Dinner.Value) options |= FoodOptions.Dinner; 在其中一种熊猫版本中进行了更改。

我建议避免像这样取消设置标头格式,因为它并不是真正的文档功能,而且如您所见,它在Pandas版本中不一致。

相反,我建议从XlsxWriter docs中关闭标题,并像下面的示例一样显式设置标题格式:

pandas.io.formats.excel_header