如何使用openpyxl为Excel工作表添加表格并设置样式
使用openpyxl为Excel数据创建带样式的表格
实现步骤
要完成创建表格和设置样式的需求,需要用到openpyxl.worksheet.table模块中的Table和TableStyleInfo类,以下是具体实现方法:
1. 创建表格对象
首先确定数据的单元格范围:写入DataFrame后,通过工作表的max_column和max_row属性自动获取数据边界,避免手动硬编码范围。然后实例化Table对象,指定数据范围和表格名称(名称需唯一),最后将表格添加到工作表中。
2. 设置表格样式
通过TableStyleInfo配置表格的视觉样式,可选择Excel内置的表格样式名称,同时控制行/列条纹、首末列高亮等显示选项。
修改后的完整代码
import pandas as pd from openpyxl import Workbook from openpyxl.utils.dataframe import dataframe_to_rows from openpyxl.worksheet.table import Table, TableStyleInfo df = pd.DataFrame({ 'name': ['Lorem', 'Ipsum', 'Dolor', 'Sit', 'Amet'], 'value_1': [4, 7, 2, 4, 6], 'value_2': [1.23, 4.56, 7.13, 0.12, 0.] }) wb = Workbook() ws = wb.active # 写入DataFrame数据到工作表 for r in dataframe_to_rows(df, index=False, header=True): ws.append(r) # 自动计算数据范围(从A1到最后一列最后一行) max_col = ws.max_column max_row = ws.max_row table_ref = f"A1:{chr(64 + max_col)}{max_row}" # 创建表格对象 table = Table(displayName="DataTable", ref=table_ref) # 配置表格样式 style = TableStyleInfo( name="TableStyleMedium9", # 内置样式,可替换为TableStyleLight/Medium/Dark系列 showFirstColumn=False, showLastColumn=False, showRowStripes=True, # 开启行条纹高亮 showColumnStripes=False ) table.tableStyleInfo = style # 将表格添加到工作表 ws.add_table(table) wb.save('pandas_table_example.xlsx')
补充说明
- 内置样式参考:Excel提供了多组内置表格样式,命名规则为
TableStyleLightX(浅色)、TableStyleMediumX(中等色)、TableStyleDarkX(深色),替换name参数即可切换不同配色和格式。 - 自定义进阶样式:如果需要更精细的格式控制(比如单独修改表头字体粗细、单元格背景色),可以结合
openpyxl.styles模块对单元格逐个设置,但需注意内置表格样式会优先覆盖单独设置的单元格格式,可先禁用内置样式再做自定义调整。
内容的提问来源于stack exchange,提问作者Barranka
相关产品推荐
相关产品推荐

