pandas xlsxwriter,格式标题 [英] pandas xlsxwriter, format header

查看:737
本文介绍了 pandas xlsxwriter,格式标题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用xlsxwriter将pandas DataFrame保存为_excel。我设法格式化所有的数据(设置列宽,字体大小等),除了改变标题的字体,我找不到方法来做到这一点。这里是我的例子:
$ b $ $ pre pre pre $ data $ pd.DataFrame({'test_data':[1, 2,3,4,5]})
writer = pd.ExcelWriter('test.xlsx',engine ='xlsxwriter')

data.to_excel(writer,sheet_name ='test ',index = False)

workbook = writer.book
worksheet = writer.sheets ['test']

font_fmt = workbook.add_format({'font_name ':'Arial','font_size':10})
header_fmt = workbook.add_format({'font_name':'Arial','font_size':10,'bold':True})

worksheet.set_column('A:A',None,font_fmt)
worksheet.set_row(0,None,header_fmt)

writer.save()

尝试设置标题格式的倒数第二行什么也不做。

  pd.core.format.header_style = None 

所有在一起:

 将pandas导入为pd 

data = pd.DataFrame ({'test_data':[1,2,3,4,5]})
writer = pd.ExcelWriter('test.xlsx',engine ='xlsxwriter')

pd .core.format.header_style = None

data.to_excel(writer,sheet_name ='test',index = False)

workbook = writer.book
工作表= writer.sheets ['test']

font_fmt = workbook.add_format({'font_name':'Arial','font_size':10})
header_fmt = workbook.add_format({ 'font_name':'Arial','font_size':10,'bold':True})

worksheet.set_column('A:A',None,font_fmt)
worksheet.set_row (0,None,header_fmt)

writer.save()

通过 jmcnamara ,谢谢:



在Excel中,单元格格式覆盖行格式o verrides列格式。 pd.core.format.header_style 被转换为格式并应用于标题中的每个单元格。因此,默认值不能被 set_row()覆盖。设置 pd.core.format.header_style None 表示标题单元格没有用户定义的格式,因此可以用 set_row()

重写。编辑:版本 0.18。 1 您必须更改

  pd.core.format.header_style = None 

到:

  pd.formats.format.header_style = None 

谢谢 krvkir


I'm saving pandas DataFrame to_excel using xlsxwriter. I've managed to format all of my data (set column width, font size etc) except for changing header's font and I can't find the way to do it. Here's my example:

import pandas as pd
data = pd.DataFrame({'test_data': [1,2,3,4,5]})
writer = pd.ExcelWriter('test.xlsx', engine='xlsxwriter')

data.to_excel(writer, sheet_name='test', index=False)

workbook  = writer.book
worksheet = writer.sheets['test']

font_fmt = workbook.add_format({'font_name': 'Arial', 'font_size': 10})
header_fmt = workbook.add_format({'font_name': 'Arial', 'font_size': 10, 'bold': True})

worksheet.set_column('A:A', None, font_fmt)
worksheet.set_row(0, None, header_fmt)

writer.save()

The penultimate line that tries to set format for the header does nothing.

解决方案

I think you need first reset default header style, then you can change it:

pd.core.format.header_style = None

All together:

import pandas as pd

data = pd.DataFrame({'test_data': [1,2,3,4,5]})
writer = pd.ExcelWriter('test.xlsx', engine='xlsxwriter')

pd.core.format.header_style = None

data.to_excel(writer, sheet_name='test', index=False)

workbook  = writer.book
worksheet = writer.sheets['test']

font_fmt = workbook.add_format({'font_name': 'Arial', 'font_size': 10})
header_fmt = workbook.add_format({'font_name': 'Arial', 'font_size': 10, 'bold': True})

worksheet.set_column('A:A', None, font_fmt)
worksheet.set_row(0, None, header_fmt)

writer.save()

Explaining by jmcnamara, thank you:

In Excel a cell format overrides a row format overrides a column format.The pd.core.format.header_style is converted to a format and is applied to each cell in the header. As such the default cannot be overridden by set_row(). Setting pd.core.format.header_style to None means that the header cells don't have a user defined format and thus it can be overridden by set_row().

EDIT: In version 0.18.1 you have to change

pd.core.format.header_style = None

to:

pd.formats.format.header_style = None

thanks krvkir.

这篇关于 pandas xlsxwriter,格式标题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆