首页 > 解决方案 > 如何在写入 Excel 时格式化数据框

问题描述

我正在尝试在写入 excel 时格式化数据框。

对于 Xlsxwriter:因为我们无法格式化标题。我将标题复制到第一行并尝试更改第一行的格式(我header=False在写入 excel 时设置)。我需要格式化标题的特定部分。像前 3 个标题是粗体,接下来的三个是红色等。有没有办法设置特定的标题格式?现在我可以为整行或整列做任何事情。我已准备好遍历行和列,但为此我认为我需要使用.write,这里的问题是.write我也需要插入一个值,但该值已经可以从 Dataframe 获得。

我如何针对特定单元格(如 A1、A2、A3)进行格式化,以便对其进行不同的格式化。

标签: pythonpandasxlsxwriter

解决方案


您可以使用以下方式进行自定义格式设置xlsxwriter

示例数据框:

    id  PER Team
0   1   12  OKC
1   2   14  OKC
2   3   11  GSW

有标题的自定义格式化程序:

writer = pd.ExcelWriter("file.xlsx", engine='xlsxwriter')

df.to_excel(writer, sheet_name='Sheet1', startrow=1, header=False, index=False)

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

# add custom headers
header_format1 = workbook.add_format({
    'bold': True,
    'border': 1})

header_format2 = workbook.add_format({
    'bold': True,
    'fg_color': '#ffcccc',
    'border': 1})

#add columns required for each format
column_format1 = ["id"]
column_format2 = ["PER", "Team"]

for col_num, value in enumerate(df.columns.values):
    if value in column_format1:
        worksheet.write(0, col_num, value, header_format1)
    elif value in column_format2:
        worksheet.write(0, col_num, value, header_format2)

    column_len = df[value].astype(str).str.len().max()

    column_len = max(column_len, len(value)) + 3
    print(column_len)

    worksheet.set_column(col_num, col_num, column_len)

writer.save()

输出Excel格式:

在此处输入图像描述


推荐阅读