👉 项目官网:https://www.python-office.com/ 👈

github star

大家好,这里是程序员晚枫,正在all in AI编程实战

上一讲我们学了 Excel 读取,这讲我们学 Excel 写入——把数据一键写入 Excel。

1、场景说明

你是不是经常做这些事?

  • 每个月手动整理销售数据,复制粘贴到 Excel
  • 给领导汇报要先美化一下表格格式,手动调整半天
  • 每次都要重复做同样的表格,只是换了个日期

用 python-office,这些都可以自动化。

2、最简单的写入:1行代码

1
2
3
4
import office

# 1行代码写入Excel
office.excel.write(path='成绩单.xlsx', data=[['姓名', '语文', '数学'], ['小明', 90, 85]])

运行后,打开 成绩单.xlsx,你会看到:

姓名语文数学
小明9085

🎉 Done!自动生成了!

3、写入列表数据

如果你的数据是列表,可以用这个方式:

1
2
3
4
5
6
7
8
9
10
11
12
import office

# 数据列表
data = [
['姓名', '语文', '数学', '英语'],
['小明', 90, 85, 92],
['小红', 88, 92, 89],
['小刚', 76, 80, 85]
]

# 写入Excel
office.excel.write(path='学生成绩.xlsx', data=data)

4、写入DataFrame数据

如果你用 pandas 处理过数据,可以直接写入:

1
2
3
4
5
6
7
8
9
10
11
12
13
import office
import pandas as pd

# 创建DataFrame
df = pd.DataFrame({
'姓名': ['小明', '小红', '小刚'],
'语文': [90, 88, 76],
'数学': [85, 92, 80],
'英语': [92, 89, 85]
})

# 1行写入
office.excel.write(path='学生成绩.xlsx', data=df)

5、设置格式:让表格更漂亮

python-office 支持自动格式化:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import office

data = [
['姓名', '语文', '数学', '英语', '总分'],
['小明', 90, 85, 92, 267],
['小红', 88, 92, 89, 269],
['小刚', 76, 80, 85, 241]
]

# 写入并自动格式化
office.excel.write(
path='美化成绩单.xlsx',
data=data,
sheet_name='成绩统计',
font_size=12, # 字号12
font_bold=True, # 字体加粗
color='FF0000', # 红色字体
by_range='A1:E1' # 作用于A1到E1范围(表头)
)

效果:表头自动加粗、变大、变红。

6、实战案例:自动生成日报

每天都要填日报?用 python-office 一键生成:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import office
from datetime import date

# 今日日期
today = date.today().strftime('%Y-%m-%d')

# 日报数据
data = [
['日期', today],
['姓名', '程序员晚枫'],
['今日工作', '1. 完成Excel自动化模块\n2. 修复邮件发送bug'],
['明日计划', '1. 继续开发Python课程\n2. 回复用户问题'],
['备注', '无']
]

# 生成日报
office.excel.write(path=f'日报_{today}.xlsx', data=data)

每天运行这个脚本,自动生成带日期的日报。

7、常见问题

Q:写入后打开文件显示乱码?

A:确保文件保存为 .xlsx 格式,不要用 .xls

Q:想追加数据而不是覆盖?

A:可以先读取原数据,再合并写入:

1
2
3
4
df_old = office.excel.read(path='总表.xlsx')
df_new = ... # 新数据
df_combined = pd.concat([df_old, df_new])
office.excel.write(path='总表.xlsx', data=df_combined)

Q:想指定写入哪个Sheet?

A:用 sheet_name 参数:

1
office.excel.write(path='总表.xlsx', data=data, sheet_name='2024年')

8、下讲预告

学会了读写,下一讲我们学 Excel合并——把多个Excel文件一键合并成一个。

敬请期待!


有问题欢迎加微信 python-office 进群交流~

程序员晚枫专注AI编程培训,小白看完他和图灵社区合作的教程《30讲 · AI编程训练营》就能上手做AI项目。

🎓 AI 编程实战课程

想系统学习 AI 编程?程序员晚枫的 AI 编程实战课 帮你从零上手!