xlsxwriter 没有将格式应用到数据帧的 header 行 - Python Pandas
xlsxwriter not applying format to header row of dataframe - Python Pandas
我正在尝试获取数据框并使用 xlsxwriter
从该数据框创建电子表格
我正在尝试对 header 行进行一些格式化,但似乎对该行有效的唯一格式是行高。完全相同的格式设置选项适用于数据框的其他行。
请看下面的代码..
红色(和高度)应用于除 header 行(第 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)
您正在尝试更改页眉的格式,因此您应该先重置默认页眉设置
pd.core.format.header_style = None
然后根据需要应用格式
format = workbook.add_format()
format.set_align('center')
format.set_align('vcenter')
worksheet.set_column('A:C',5, format)
这里是完整的工作代码
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()
如果你有0.22,你必须做pd.io.formats.excel.header_style = None
。检查此 git page。
据我了解,Pandas 设置索引行的格式。有多种方法可以重置它,但这些解决方案不是很可靠。实际格式化也很困难。
接受的答案对所有单元格使用相同的格式,而我只想格式化索引行。
我通过用所需格式写出索引列解决了这个问题:
import pandas as pd
# The data that we're feeding to ExcelWriter
df = pd.DataFrame(
{
"Col A": ["a", "a", "b", "b"],
"Col B": ["a", "b", "c", "d"],
"Col C": [1, 2, 3, 4],
}
)
# The Excel file we're creating
writer = pd.ExcelWriter("pandas_out.xlsx", engine="xlsxwriter")
df.to_excel(writer, sheet_name="Sheet1", index=False) # Prevents Pandas from outputting an index
# The variables we'll use to do our modifications
workbook = writer.book
worksheet = writer.sheets["Sheet1"]
worksheet.set_row(0, 30) # Set index row height to 30
# Find more info here: https://xlsxwriter.readthedocs.io/format.html#format-methods-and-format-properties
header_format = workbook.add_format(
{
"bold": True,
"valign": "vcenter",
"align": "center",
"bg_color": "#d6d6d6",
"border": True,
}
)
# Write the column headers with the defined format.
for col_num, value in enumerate(df.columns.values):
worksheet.write(0, col_num, value, header_format)
# Set format of data
format1 = workbook.add_format({"align": "center"})
worksheet.set_column('A:Z', 10, format1) # Width of cell
writer.save()
我正在尝试获取数据框并使用 xlsxwriter
从该数据框创建电子表格我正在尝试对 header 行进行一些格式化,但似乎对该行有效的唯一格式是行高。完全相同的格式设置选项适用于数据框的其他行。
请看下面的代码..
红色(和高度)应用于除 header 行(第 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)
您正在尝试更改页眉的格式,因此您应该先重置默认页眉设置
pd.core.format.header_style = None
然后根据需要应用格式
format = workbook.add_format()
format.set_align('center')
format.set_align('vcenter')
worksheet.set_column('A:C',5, format)
这里是完整的工作代码
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()
如果你有0.22,你必须做pd.io.formats.excel.header_style = None
。检查此 git page。
据我了解,Pandas 设置索引行的格式。有多种方法可以重置它,但这些解决方案不是很可靠。实际格式化也很困难。
接受的答案对所有单元格使用相同的格式,而我只想格式化索引行。
我通过用所需格式写出索引列解决了这个问题:
import pandas as pd
# The data that we're feeding to ExcelWriter
df = pd.DataFrame(
{
"Col A": ["a", "a", "b", "b"],
"Col B": ["a", "b", "c", "d"],
"Col C": [1, 2, 3, 4],
}
)
# The Excel file we're creating
writer = pd.ExcelWriter("pandas_out.xlsx", engine="xlsxwriter")
df.to_excel(writer, sheet_name="Sheet1", index=False) # Prevents Pandas from outputting an index
# The variables we'll use to do our modifications
workbook = writer.book
worksheet = writer.sheets["Sheet1"]
worksheet.set_row(0, 30) # Set index row height to 30
# Find more info here: https://xlsxwriter.readthedocs.io/format.html#format-methods-and-format-properties
header_format = workbook.add_format(
{
"bold": True,
"valign": "vcenter",
"align": "center",
"bg_color": "#d6d6d6",
"border": True,
}
)
# Write the column headers with the defined format.
for col_num, value in enumerate(df.columns.values):
worksheet.write(0, col_num, value, header_format)
# Set format of data
format1 = workbook.add_format({"align": "center"})
worksheet.set_column('A:Z', 10, format1) # Width of cell
writer.save()