openpyxl写入Excel的核心是创建/加载工作簿、获取工作表、通过坐标或行列赋值,必须调用wb.save()才能真正保存;支持新建、修改、批量写入及样式设置。
openpyxl 写入 Excel 表格的核心是:先创建或加载工作簿(Workbook),再获取工作表(Worksheet),最后通过单元格坐标(如 A1)或行列索引(如 row=2, column=3)赋值即可。不需要“保存”动作以外的额外提交步骤,但务必记得调用 wb.save() 才能真正写入文件。
创建新表格并写入数据
适合从零开始生成 Excel 文件:
- 用
Workbook()创建空白工作簿,默认带一个名为Sheet的工作表 - 用
ws['A1'] = '标题'或ws.cell(row=2, column=3, value='内容')写入单个单元格 - 支持直接写入数字、字符串、布尔值、日期(
datetime对象)、公式(以=开头的字符串) - 写完后必须调用
wb.save('output.xlsx'),否则数据只在内存中
加载已有表格并修改写入
适合在原文件基础上追加或更新内
容:
- 用
load_workbook('data.xlsx')打开现有文件(注意:不能打开已打开的 Excel 文件,会报错) - 默认读取为“可编辑”模式,可直接修改单元格,例如
ws['B5'] = 100 - 若只需读取不修改,加参数
read_only=True可提升速度、节省内存 - 修改后仍需
wb.save('data.xlsx')—— 即使覆盖原文件也要显式保存
批量写入与样式控制(简要)
提升效率和可读性的小技巧:
- 写入二维列表可用
ws.append([1, 2, 3])追加一行;循环调用可写入多行 - 设置字体、对齐、边框等样式,需导入
from openpyxl.styles import Font, Alignment, Border, Side - 例如加粗:
ws['A1'].font = Font(bold=True);居中:ws['A1'].alignment = Alignment(horizontal='center') - 注意:样式操作不会自动应用到整列/整行,需逐单元格设置或用循环批量处理
基本上就这些。写入本身不复杂,但容易忽略保存、文件被占用、中文乱码(openpyxl 默认支持 UTF-8,一般无问题)这几个点。








