【问题标题】:Trouble with Xlsxwriter formatting a pandas DataFrame output to excelXlsxwriter 将 pandas DataFrame 输出格式化为 excel 时出现问题
【发布时间】:2016-02-17 06:31:47
【问题描述】:

我创建了一个 pandas pivot_table 并使用 xlsxwriter 将其导出到 excel。但是,格式化并没有按照我的想法告诉它。我在 Stack Overflow 上查看了 xlsxwriter 文档和其他问题,但没有找到解决方案。我有一种感觉,我忽略了一些明显的东西。

# Write to Excel
path = 'some/path'
writer = pd.ExcelWriter(path, engine='xlsxwriter')
df.to_excel(writer, sheet_name='df')

set_column() 的列宽有效。所以我已经为我准备好了,这很好。但是wb.add_format() 子句中的'bold': False'align': 'left' 不是。

# Make it look nice
wb = writer.book
ws = writer.sheets['df']

format = wb.add_format({'bold': False,
                        'align': 'left'})
ws.set_column('A:C', None, format)

ws.set_column(0,0, 10.2)
ws.set_column(1,1, 25.2)
ws.set_column(2,2, 15.2)

writer.save()

或者,以下确实应用了格式,但它删除了单元格 B3 的内容:

ws.write('B3', None, format)

我可以让我的列左对齐而不是粗体吗?


更新: 我已经升级到 pandas 17.0 并且我已经将我的代码更新为:

format_bold = wb.add_format({'bold': False})
format_and_left = wb.add_format({'align': 'left', 'bold': False})

ws.set_column('A:A', 10.2, format_bold)
ws.set_column('B:B', 25.2, format_and_left)
ws.set_column('C:C', 15.2, format_bold)

仍然没有运气。我已经通过print pd.__version__ 确认我的解释器正在使用pandas 0.17.0 版。我还是做错了什么吗?

【问题讨论】:

标签: python excel pandas xlsxwriter


【解决方案1】:

正如@Jkdc 指出的那样,值得确保您使用的是 Pandas 16+,因为在早期版本中存在 XlsxWriter set_column 问题。

但是,您的代码中还有一个问题,您要覆盖 A:C 列的 set_column() 属性,该属性的格式与对列 ABC 的其他调用的格式不同t:

ws.set_column('A:C', None, format)

ws.set_column(0,0, 10.2)
ws.set_column(1,1, 25.2)
ws.set_column(2,2, 15.2)

类似下面的方法应该可以工作(除非有其他问题):

ws.set_column(0, 0, 10.2, format)
ws.set_column(1, 1, 25.2, format)
ws.set_column(2, 2, 15.2, format)

另请注意,as outlined in the documentation 这不适用于日期时间列。对于那些你将不得不使用 Pandas API 来指定格式并且仅限于设置数字格式。

【讨论】:

  • 我确实使用的是旧版本。对更新进行故障排除后,我将重新签入。谢谢!
  • 感谢@jmcnamara,不知何故,这些列仍然显示为粗体和居中。感谢您在这方面的帮助!
  • 等一下。如果我试图覆盖索引列上的 pd.pivot_table 完成的格式设置,我不应该这样做吗?
  • 您不能使用 Pandas 覆盖标题或索引格式。
  • 太好了,我想这回答了我的问题。感谢您的帮助!
猜你喜欢
  • 2017-02-16
  • 1970-01-01
  • 1970-01-01
  • 2021-10-16
  • 1970-01-01
  • 2017-05-25
  • 2022-01-19
  • 1970-01-01
  • 2013-04-30
相关资源
最近更新 更多