使用 Linux 执行时未出现 Xlsxwriter header 格式
Xlsxwriter header format not appearing when executing with Linux
我当前的项目涉及编写一个脚本,该脚本使用 Pandas 和 Xlsxwriter 创建一个 Excel 文件,并使用 cron 按计划通过电子邮件 API 发送该文件。在开发期间在 Windows 上生成 excel 文件时,我最初为 header 设置的格式工作得很好。
但是,当测试期间 运行 脚本通过 Linux 时,Header 格式消失,而其余单元格保持其预期格式。
我已经包含了下面的代码以删除初始 header 以使用我自己的自定义代码
pandas.io.formats.excel_header = None
自定义 header 格式(适用于 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 上的尝试,当我注释掉删除 header 格式然后应用我自己的格式时,它不会使用我的自定义格式。在 linux 上,即使使用先删除 header 格式然后删除我的自定义格式的代码,它也会在没有我的自定义格式的情况下执行。它也没有 return 任何错误。
Header 结果:
这是我在 Windows 中得到的
Expected
这是我在 Linux 中得到的
What I Got
在Linux和Windows上执行时,代码是否应该写得不同?如果是,有什么区别或者我在哪里可以找到 material 来找到这种差异?
However, when running the script through Linux during testing, the Header formatting disappears while the rest of the cells maintain their intended format.
Windows和Linux的区别大概在Pandas版本上。 pandas.io.formats.excel_header
在其中一个 Pandas 版本中发生了变化。
我建议避免像这样取消设置 header 格式,因为它并不是真正的文档化功能,而且正如您所见,它在 Pandas 版本中并不一致。
相反,我建议关闭 header 并像 XlsxWriter docs:
中的示例一样显式设置 header 格式
# 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)
我当前的项目涉及编写一个脚本,该脚本使用 Pandas 和 Xlsxwriter 创建一个 Excel 文件,并使用 cron 按计划通过电子邮件 API 发送该文件。在开发期间在 Windows 上生成 excel 文件时,我最初为 header 设置的格式工作得很好。
但是,当测试期间 运行 脚本通过 Linux 时,Header 格式消失,而其余单元格保持其预期格式。
我已经包含了下面的代码以删除初始 header 以使用我自己的自定义代码
pandas.io.formats.excel_header = None
自定义 header 格式(适用于 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 上的尝试,当我注释掉删除 header 格式然后应用我自己的格式时,它不会使用我的自定义格式。在 linux 上,即使使用先删除 header 格式然后删除我的自定义格式的代码,它也会在没有我的自定义格式的情况下执行。它也没有 return 任何错误。
Header 结果:
这是我在 Windows 中得到的 Expected
这是我在 Linux 中得到的 What I Got
在Linux和Windows上执行时,代码是否应该写得不同?如果是,有什么区别或者我在哪里可以找到 material 来找到这种差异?
However, when running the script through Linux during testing, the Header formatting disappears while the rest of the cells maintain their intended format.
Windows和Linux的区别大概在Pandas版本上。 pandas.io.formats.excel_header
在其中一个 Pandas 版本中发生了变化。
我建议避免像这样取消设置 header 格式,因为它并不是真正的文档化功能,而且正如您所见,它在 Pandas 版本中并不一致。
相反,我建议关闭 header 并像 XlsxWriter docs:
中的示例一样显式设置 header 格式# 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)