xlsxwriter没有将格式应用于数据帧的标题行 - Python Pandas

Stu*_*nce 5 python excel pandas xlsxwriter

我正在尝试使用xlsxwriter获取数据框并使用该数据框创建电子表格

我试图对标题行进行一些格式化,但似乎在该行上工作的唯一格式是行高.完全相同的格式选项适用于数据框的其他行.

请看下面的代码..

红色(和高度)应用于除标题行(第2行)以外的所有行 - 红色应用于第0行和第3行,但只有高度应用于第2行

任何帮助将非常感激

import numpy as np
import pandas as pd
from pandas.io.data import DataReader
from pandas import DataFrame
from IPython import display

import xlsxwriter

WorkBookName="test.xlsx"



df3=pd.read_csv("https://raw.githubusercontent.com/wesm/pydata-book/master/ch08/tips.csv", sep=',')

writer = pd.ExcelWriter(WorkBookName, engine='xlsxwriter')
df3.to_excel(writer, sheet_name="sheet",index=False,startrow=2)


workbook  = writer.book
worksheet = writer.sheets["sheet"]

worksheet.write(0,0,"text string")
worksheet.write(0,1,"text string")
worksheet.write(0,2,"text string")
worksheet.write(0,3,"text string")


color_format = workbook.add_format({'color': 'red'})
worksheet.set_row(0,50,color_format)
worksheet.set_row(2,50,color_format)
worksheet.set_row(3,50,color_format)    


writer.save()

display.FileLink(WorkBookName)
Run Code Online (Sandbox Code Playgroud)

Shi*_*ijo 8

您正在尝试更改标头的格式,因此您应首先重置默认标头设置

pd.core.format.header_style = None
Run Code Online (Sandbox Code Playgroud)

然后根据需要应用格式

format = workbook.add_format()
format.set_align('center')
format.set_align('vcenter')

worksheet.set_column('A:C',5, format)
Run Code Online (Sandbox Code Playgroud)

这是完整的工作代码

d=pd.DataFrame({'a':['a','a','b','b'],
               'b':['a','b','c','d'],
               'c':[1,2,3,4]})
d=d.groupby(['a','b']).sum()

pd.core.format.header_style = None

writer = pd.ExcelWriter('pandas_out.xlsx', engine='xlsxwriter')
workbook  = writer.book
d.to_excel(writer, sheet_name='Sheet1')

worksheet = writer.sheets['Sheet1']

format = workbook.add_format()
format.set_align('center')
format.set_align('vcenter')

worksheet.set_column('A:C',5, format)
writer.save()
Run Code Online (Sandbox Code Playgroud)

  • @Shijo 祝福你。在这件事上我正在用头撞墙。对于所有人来说,在调用“pd.ExcelWriter”之前调用“pd.core.format.header_style = None”非常重要。 (2认同)