Python 自动化办公实战:基于 openpyxl 与 pandas 的 Excel 数据填充方案
一、前言
在日常办公场景中,Excel 数据处理占据了大量时间。手动复制粘贴不仅效率低下,还容易出错。利用 Python 进行自动化办公,可以显著提高工作效率。本文将深入探讨如何使用 Python 实现 Excel 数据的自动填充,解决批量处理模板数据的痛点。
常见的办公自动化需求包括:根据订单信息填充发货单、根据员工名单生成工资表、将多个工作簿的数据合并到一个主表中等。实现这些功能主要依赖两个强大的库:openpyxl 和 pandas。
- openpyxl:适合需要保留原始 Excel 格式(如颜色、边框、公式)的场景。
- pandas:适合侧重于数据计算、清洗和转换的场景。
本文将通过实际案例,分别展示这两种方法的具体实现步骤。
二、环境准备
在开始编写代码之前,请确保您的开发环境中已安装 Python 3.6 及以上版本。接着,使用 pip 安装所需的第三方库。
pip install openpyxl pandas
如果网络较慢,可以使用国内镜像源加速下载:
pip install openpyxl pandas -i https://pypi.tuna.tsinghua.edu.cn/simple
三、方案一:使用 openpyxl 填充模板
当业务场景要求生成的 Excel 文件必须严格保持原有的格式(例如公司规定的报表模板),openpyxl 是最佳选择。它允许我们直接操作单元格对象,修改其值而不破坏样式。
1. 准备工作
假设我们有一个名为 template.xlsx 的模板文件,其中包含以下结构:
| 行号 | A 列 (姓名) | B 列 (部门) | C 列 (工号) | D 列 (入职日期) |
|---|---|---|---|---|
| 2 | {name} | {dept} | {id} | {date} |
| 3 | {name} | {dept} | {id} | {date} |
我们需要将 {name} 等占位符替换为实际数据。
2. 代码实现
import openpyxl
from datetime import datetime
# 加载工作簿和工作表
wb = openpyxl.load_workbook('template.xlsx')
sheet = wb.active
# 模拟待填充的数据列表
data_list = [
{'name': '张三', : , : , : },
{: , : , : , : },
]
row_index =
data data_list:
row_cells = sheet[row_index]
cell row_cells:
(cell.value):
cell.value = data[]
(cell.value):
cell.value = data[]
(cell.value):
cell.value = data[]
(cell.value):
cell.value = data[]
row_index +=
wb.save()
()


