如何使用XlsxWriter打开带格式表头的已有XLSX文件并写入数据
用Python修改带格式表头的现有Excel文件(保留表头格式)
首先明确:XlsxWriter 不支持修改已存在的XLSX文件,它只能创建新文件。要实现你的需求,有两种可行方案,推荐优先使用openpyxl库,因为它能完美保留原有格式且操作简单。
方案1:使用openpyxl(推荐)
openpyxl是专门用于读写Excel 2010+ xlsx/xlsm文件的库,能完整保留原文件的格式、公式、图表等内容,完全匹配你的需求。
安装依赖
pip install openpyxl
示例代码
from openpyxl import load_workbook # 打开现有Excel文件 # data_only=False:保留单元格公式;True:只保留公式计算后的结果 wb = load_workbook("你的文件路径.xlsx") # 获取目标工作表,也可以用 wb["工作表名称"] 指定具体表 ws = wb.active # 准备要写入的数据(假设表头在第1行,从第2行开始写入) data = [ ["张三", 25, "技术部"], ["李四", 30, "市场部"], ["王五", 28, "财务部"] ] # 遍历数据,写入到对应单元格(覆盖原有内容) for row_num, row_content in enumerate(data, start=2): for col_num, value in enumerate(row_content, start=1): ws.cell(row=row_num, column=col_num, value=value) # 保存文件:可以直接覆盖原文件,也可以指定新文件名避免覆盖 wb.save("更新后的文件.xlsx")
方案2:结合xlrd + XlsxWriter(仅适合简单格式场景)
如果必须使用XlsxWriter,只能通过“读取原文件内容 → 用XlsxWriter重建文件”的方式实现。但这种方式无法完美保留复杂格式(比如单元格填充色、条件格式等),仅适合表头格式简单的场景。
安装依赖
pip install xlrd==1.2.0 # 新版本xlrd不支持xlsx格式,需指定旧版本 pip install XlsxWriter==3.0.8
示例代码
import xlrd import xlsxwriter # 读取原文件的表头和内容 old_wb = xlrd.open_workbook("你的文件路径.xlsx") old_ws = old_wb.sheet_by_index(0) # 获取第一个工作表 # 创建新的XlsxWriter工作簿 new_wb = xlsxwriter.Workbook("更新后的文件.xlsx") new_ws = new_wb.add_worksheet() # 复制表头及基础格式(这里仅实现加粗、居中、边框,复杂格式需额外处理) header_format = new_wb.add_format({ "bold": True, "align": "center", "valign": "vcenter", "border": 1 }) # 写入表头并匹配原文件列宽 for col in range(old_ws.ncols): new_ws.write(0, col, old_ws.cell_value(0, col), header_format) # 复制原文件列宽 new_ws.set_column(col, col, old_wb.sheet_horz_used(col)) # 写入新数据(从第2行开始) data = [ ["张三", 25, "技术部"], ["李四", 30, "市场部"], ["王五", 28, "财务部"] ] for row_num, row_content in enumerate(data, start=1): new_ws.write_row(row_num, 0, row_content) new_wb.close()
注意事项
- 优先选择方案1,openpyxl能完全满足“保留表头格式+修改数据”的需求,无需额外处理格式兼容问题
- 方案2仅适合简单场景,复杂格式会丢失,不推荐用于有高级格式的Excel文件
内容的提问来源于stack exchange,提问作者sure will
相关产品推荐
相关产品推荐

