You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何自定义设置pd.to_excel()导出Excel文件的表头样式?

Pandas自定义DataFrame导出Excel表头样式操作方法

自定义Pandas导出Excel的表头样式,需要配合Excel写入引擎实现,以下是两种常用的可落地方案:


方案1:使用xlsxwriter引擎(更适合自定义样式场景)

前置依赖安装

pip install pandas xlsxwriter

实现代码

import pandas as pd

# 构造示例DataFrame
df = pd.DataFrame({
    "姓名": ["张三", "李四", "王五"],
    "年龄": [25, 30, 28],
    "部门": ["技术部", "产品部", "运营部"]
})

with pd.ExcelWriter("自定义表头导出.xlsx", engine="xlsxwriter") as writer:
    # 写入DataFrame时关闭默认表头,从第二行开始写数据
    df.to_excel(writer, sheet_name="数据页", startrow=1, header=False, index=False)

    # 获取工作簿和工作表对象
    workbook = writer.book
    worksheet = writer.sheets["数据页"]

    # 自定义表头样式,可按需调整所有参数
    header_style = workbook.add_format({
        "bold": True,  # 加粗
        "align": "center",  # 水平居中
        "valign": "vcenter",  # 垂直居中
        "fg_color": "#E6F3FF",  # 表头背景色
        "border": 1,  # 边框宽度
        "font_size": 12,  # 字体大小
        "font_name": "微软雅黑"  # 字体
    })

    # 手动写入表头并应用自定义样式
    for col_idx, col_name in enumerate(df.columns):
        worksheet.write(0, col_idx, col_name, header_style)

    # 可选:自动调整列宽适配内容
    for col_idx, col_name in enumerate(df.columns):
        max_content_len = max(df[col_name].astype(str).map(len).max(), len(col_name))
        worksheet.set_column(col_idx, col_idx, max_content_len + 2)

方案2:使用openpyxl引擎

前置依赖安装

pip install pandas openpyxl

实现代码

import pandas as pd
from openpyxl.styles import Font, Alignment, PatternFill, Border, Side

# 构造示例DataFrame
df = pd.DataFrame({
    "姓名": ["张三", "李四", "王五"],
    "年龄": [25, 30, 28],
    "部门": ["技术部", "产品部", "运营部"]
})

with pd.ExcelWriter("自定义表头导出_openpyxl.xlsx", engine="openpyxl") as writer:
    df.to_excel(writer, sheet_name="数据页", index=False)
    worksheet = writer.sheets["数据页"]

    # 定义表头样式组件
    header_font = Font(name="微软雅黑", size=12, bold=True, color="FFFFFF")
    header_align = Alignment(horizontal="center", vertical="center")
    header_fill = PatternFill(start_color="4472C4", end_color="4472C4", fill_type="solid")
    thin_border = Side(border_style="thin", color="000000")
    header_border = Border(left=thin_border, right=thin_border, top=thin_border, bottom=thin_border)

    # 给第一行所有单元格(表头)应用样式
    for cell in worksheet[1]:
        cell.font = header_font
        cell.alignment = header_align
        cell.fill = header_fill
        cell.border = header_border

    # 可选:自动调整列宽
    for col in worksheet.columns:
        max_len = 0
        col_letter = col[0].column_letter
        for cell in col:
            if cell.value:
                max_len = max(max_len, len(str(cell.value)))
        worksheet.column_dimensions[col_letter].width = max_len + 2

样式自定义说明

你可以根据自身需求调整样式参数,包括但不限于字体、字号、颜色、背景色、边框粗细、对齐方式等,不需要使用Pandas默认的表头样式即可实现完全自定义。

内容的提问来源于stack exchange,提问作者Mehmet Soydam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 20:45:10