本教程展示如何使用 Python 的 openpyxl
实现:
-
多工作表遍历:自动查找每月物料表;
-
条件筛选:获取 G 列数量大于 1000 的记录;
-
生成汇总表:从模板复制页面并写入筛选结果;
-
统一样式:批量设定字体、边框、对齐等。
这是一套典型的“Excel 报表自动生成+美化”流程,适合供应链、月度报表、库存分析等场景。
目录
🔍 第一步:遍历每个工作表并获取符合条件的数据
🔁 第二步:根据模板复制工作表并写入数据
💾 第三步:保存最终报表
🖼️ 结果展示区
✅ 项目亮点与优化建议
🔍 第一步:遍历每个工作表并获取符合条件的数据
from openpyxl import load_workbookwb = load_workbook("每月物料表.xlsx")
data = {}
for sheet_name in wb.sheetnames:ws = wb[sheet_name]qty_list = [ws[f"G{r}"].value for r in range(2, ws.max_row + 1)]qty_idx = list(enumerate(qty_list))row_idx = [i+2 for i, v in qty_idx if v and v > 1000]filtered = [ws[f"A{i}:I{i}"] for i in row_idx]data[sheet_name] = filtered
-
利用
ws.sheetnames
获取所有工作表 reddit.com+15openpyxl.readthedocs.io+15realpython.com+15; -
筛选 G 列值大于 1000 的行,保存 A–I 小区间数据。
🔁 第二步:根据模板复制工作表并写入数据
from openpyxl.styles import Border, Side, Font, Alignmentwb = load_workbook("模板.xlsx")
ws_template = wb.active
thin = Side(border_style="thin", color="000000")for month, rows in data.items():ws_new = wb.copy_worksheet(ws_template)ws_new.title = monthfor i, cell_range in enumerate(rows, start=2):for j, cell in enumerate(cell_range[0], start=1):val = cell.value# 日期类型特殊处理if hasattr(val, 'date'):val = val.date()ws_new.cell(row=i, column=j).value = valfor col in range(1, 10):c = ws_new.cell(row=i, column=col)c.font = Font(size=10)c.border = Border(top=thin, left=thin, right=thin, bottom=thin)c.alignment = Alignment(horizontal="left", vertical="center", shrink_to_fit=True)
-
使用
wb.copy_worksheet()
复制模板 medium.com+5openpyxl.readthedocs.io+5reddit.com+5; -
通过双重循环写入每行 9 列数据;
-
统一设置 字体10号、细边框、左对齐+垂直居中、自适应收缩,提高表格整体美观度。
'shrink_to_fit=True'
参数为自适应收缩功能,符合 openpyxl 文档描述 openpyxl.readthedocs.io+4pythonpapers.com+4blog.pythonlibrary.org+4。
💾 第三步:保存最终报表
wb.save("每月(大于1K).xlsx")
生成包含各月工作表的 Excel 文件,每页均为筛选后的数据,并统一样式。
🖼️ 结果展示区
✅ 项目亮点与优化建议
功能 | 说明 |
---|---|
条件筛选 | 自动提取 G 列 >1000 的行数据 |
模板复制 | 用模板样式构建新工作表 |
样式统一 | 字体、边框、对齐、收缩全面设置 |
文件结构 | 多月报表合并于一个文件,便于管理 |
🔧 可扩展功能建议:
-
增加 筛选条件参数(如日期范围、字段阈值自定义);
-
自动生成目录页,汇总每月数据;
-
条件格式高亮(如红色标注高于某阈值行);
-
支持 按列自动计算合计(如每页新增总计行)。
更多实用案例,代码,素材如下:
自取链接:https://pan.quark.cn/s/a46f30accea2
如果你觉得这个案例有帮助,欢迎点赞 ⭐、收藏 ❤️、评论 📣!如需其他类型自动化案例(如 PDF 批量处理、网络爬虫 + 报表生成、邮件群发等),欢迎随时告诉我,我可以继续为你深度定制高实用性内容。