本教程展示如何使用 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 批量處理、網絡爬蟲 + 報表生成、郵件群發等),歡迎隨時告訴我,我可以繼續為你深度定制高實用性內容。