Xlsxwriter格式化pandasDataFrame输出到Excel的麻烦
我创build了一个pandaspivot_table并将其导出为xlsxwriter。 但是,格式化并没有达到我所说的要求。 我已经看了xlsxwriter文档和其他问题在这里堆栈溢出,我还没有find一个解决scheme。 我有一种感觉,我忽略了一些明显的东西。
# 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()
子句中的'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)
我可以让我的列左alignment而不是粗体?
更新:我已经升级到pandas17.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。 我还在做错什么?
正如@Jkdc所指出的那样,确保你使用Pandas 16+是值得的,因为在早期版本中有一个XlsxWriter的set_column
问题。
但是,在代码中也存在一个问题,那就是你正在覆盖列A:C
的set_column()
属性,该列的格式与列A
, B
和C
其他调用的格式不同:
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)
还请注意, 正如文档中所述,这不适用于date时间列。 对于那些你将不得不使用pandasAPI来指定格式,并且仅限于设置数字格式。