我已经创建了一个pandas pivot_table,并使用xlsxwriter将其导出到excel。但是,格式化并不是我认为我告诉它要做的事情。我已经查看了xlsxwriter文档以及Stack Overflow上的其他问题,但我还没有找到解决方案。我有一种感觉,我忽视了一些显而易见的事情。
# Write to Excel
path = 'some/path'
writer = pd.ExcelWriter(path, engine='xlsxwriter')
df.to_excel(writer, sheet_name='df')
set_column()
的列宽正常。所以我已经为我做了,这很好。但'bold': False
子句中的'align': 'left'
和wb.add_format()
不是。
# 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。我还在做错什么吗?
答案 0 :(得分:1)
正如@Jkdc指出的那样,确保您使用Pandas 16+是值得的,因为在早期版本中存在XlsxWriter set_column
问题。
但是,您的代码中还存在一个问题,即您要覆盖列set_column()
的{{1}}属性,这些列的格式包含对列A:C
,{{1}的其他调用的格式}和A
不要:
B
以下内容应该可行(除非还有其他问题):
C
另请注意,as outlined in the documentation这对日期时间列不起作用。对于那些您将必须使用Pandas API来指定格式,并且仅限于设置数字格式。