Excel列印版格式化

👤 顧冉 ✓ 已認證 📦 v1.0.3 ⭐ 4.5 ⬇️ 79 下載
📄 辦公效率 免費

📖 技能介紹


name: audit-sheet-print-fit description: "將含行標籤的 Excel 工作底稿(如審計底稿)一鍵處理為列印版:標籤行合併貫通、刪除標籤下方說明行/空行(保留資料行)、自適應列寬/行高、A4 fitToPage 列印設定、統一字型顏色,可選脫敏客戶/單位名稱。" agent_created: true tags: ["excel", "xlsx", "列印", "底稿", "審計", "openpyxl"]


底稿列印版處理(audit-sheet-print-fit)

概述

audit-sheet-print-fit 用於把多 sheet 的 Excel 工作底稿整理成乾淨、可直接列印的版本。

核心能力:

  1. 標籤行合併貫通:將指定標籤(預設「審計結論」/「稽核結論」)所在行的縱向/橫向合併解除, 把標籤右側的內容文字在單行內橫向貫通合併到本表最後一列,並統一設為左對齊。
  2. 清理標籤行並保留資料邊界內所有行
  3. 先合併結論延續行:若結論文字跨多行寫在 A 列為空的後續行中,自動合併到標籤行;
  4. 再清空標籤行(結論行)中標籤右側的 0 值、公式,只保留真正的結論文字;
  5. 以 "合計"/"小計"/"總計" 行作為資料邊界:
    • 若結論在資料上方(標籤行下方存在合計行),保留 [標籤行+1, 合計行] 之間的所有行 (含 A 列為空、全為 0/公式的資料行),僅刪除合計行下方的說明行、空行、孤立全零行;
    • 若結論在底稿最下方(合計行在標籤行上方或不存在),刪除結論下方的所有行;

      想要更強大的技能外掛,就來小蔥技能站7w4.net看看吧。

  6. 刪除範圍包含 "審計要點"、"稽核要點"、"編制說明"、"注:"、"備註" 等說明行;
  7. 找不到合計行時,按結論下方是否為空/說明行決定:空/說明行刪除,遇到非空資料行則保留其後所有行。
  8. 也可通過 --mode clear 僅清空說明行內容、保留空行。
  9. 自適應列印版式所有 sheet 都會重新計算列寬與行高;每個 sheet 設定 A4、 fitToPage=1×1、頁邊距 0.4″、橫/縱向自動、顯式列印區域。
  10. 統一字型樣式:全文字型顏色設為黑色、取消加粗、清除單元格底色, 保留字號、字型名、斜體等不變。
  11. 可選脫敏:表頭中 單位名稱:...被審計單位:...客戶名稱:... 等標籤後的 具體名稱替換為 [客戶名稱],避免輸出檔案洩露客戶/被審計單位資訊;預設保留原名稱, 需要脫敏時請使用 --redact

核心實現位於 scripts/process_audit_sheet.py(基於 openpyxl)。


適用場景

當用戶提出以下任一類請求時啟用本技能:

  • "把這份底稿做成列印版 / 打印出來"
  • "標籤的兩行合併成一行,刪掉標籤下面的所有內容"
  • "刪掉標籤下面的明細、審計要點/稽核要點,只保留標籤行"
  • "標籤文字貫通合併,整個表自適應列印"
  • 處理 .xlsx 底稿並要求「只調格式、別改字型」或「做成標準列印版」

快速開始

環境要求

  • Python 3.x
  • openpyxl
pip install openpyxl

基本用法

指令碼路徑:scripts/process_audit_sheet.py

# 預設:匹配「審計結論」或「稽核結論」,刪除標籤下方整行,輸出 <原名>_列印版.xlsx
python scripts/process_audit_sheet.py <輸入.xlsx>

# 指定輸出路徑
python scripts/process_audit_sheet.py <輸入.xlsx> -o <輸出.xlsx>

# 自定義標籤關鍵詞(多個用逗號分隔)
python scripts/process_audit_sheet.py <輸入.xlsx> -o <輸出.xlsx> --keyword "審計結論,稽核結論,審計說明"

# 僅清空下方內容、保留空行
python scripts/process_audit_sheet.py <輸入.xlsx> -o <輸出.xlsx> --mode clear

# 以標準版為參照,逐 cell 套用邊框/對齊格式(不碰字型)
python scripts/process_audit_sheet.py <輸入.xlsx> -o <輸出.xlsx> --reference <標準版.xlsx>

# 輸出檔案脫敏單位/客戶名稱(預設保留原名稱)
python scripts/process_audit_sheet.py <輸入.xlsx> -o <輸出.xlsx> --redact

注意:輸入必須是 .xlsx.xls 需先轉換為 .xlsx


引數說明

引數 必填 預設值 說明
input - 輸入.xlsx 路徑(Windows 建議用 C:/...C:\\...
-o, --output <原名>_列印版.xlsx 輸出路徑,不會覆蓋原檔案
--mode delete delete=刪除標籤下方整行;clear=僅清空內容保留空行
--keyword 審計結論,稽核結論 匹配的標籤關鍵詞,可用逗號分隔多個
--reference - 標準版.xlsx 路徑,以之逐 cell 套用邊框/對齊格式
--redact / --no-redact 關閉 是否脫敏表頭中的單位/客戶名稱(預設保留原名稱)

處理流程

  1. 載入工作簿:使用 openpyxl 開啟輸入 .xlsx,原檔案只讀不寫。
  2. 脫敏(可選):對全表單元格掃描,將匹配 單位名稱:...被審計單位:...客戶名稱:...委託單位:...受託單位:...編制單位:...客戶:... 等模式後的具體名稱替換為 [客戶名稱], 保留標籤本身。預設不開啟,可通過 --redact 開啟。
  3. 定位標籤:找到含任一 --keyword 關鍵詞的單元格(行 R,列不固定)。若命中的單元格屬於合併區域,以該合併區域的左上角作為標籤位置。預設關鍵詞為 審計結論稽核結論,可覆蓋 "審計要點"、"稽核要點" 等標籤所在的同類底稿。
  4. 記錄被刪內容座標:刪除前先收集 R+1 及以下非空單元格的座標, 處理後在摘要中列印數量與座標,不輸出單元格值。
  5. 解除 R 行及以下合併並保留表格線:解除標籤縱向合併、內容文字橫向兩行合併、明細區合併; 對原合併區域內的所有單元格繼承合併區已有的邊框樣式,避免解除合併後出現表格線缺失。 R 以上的合併不動。
  6. 合併結論延續行、摺疊標籤縱向合併、清理標籤行並刪除/清空標籤下方說明行/空行
  7. 若標籤本身跨行合併(如 A7:A8),先解除合併並把整個合併區域內的結論文字收集到標籤行,再刪除被摺疊的下方行;
  8. 合併結論延續行:識別緊跟標籤區域、A 列為空或文字且僅含文字的行,將其文本合併到標籤行;A 列出現序號即視為資料行,結束識別
  9. 多段結論(如標籤跨 A8:A10、文字在 B8/B9/B10)會被合併為一段;
  10. 清理標籤行:保留標籤與結論文字,清空標籤右側所有 0 值、公式及其他非文字內容;
  11. 確定資料邊界:
    • 先向下找最近的 "合計"/"小計"/"總計" 行;若找到且位於標籤行下方,則結論在資料上方,保留標籤行到合計行之間的所有行,刪除合計行下方的空行/說明行;
    • 若未向下找到合計行,則向上查詢;若找到且位於標籤行上方,或完全找不到合計行且結論下方只有空行/說明行,則結論在底稿最下方,刪除結論下方所有行;
    • 若完全找不到合計行但結論下方出現非空資料行,則視為結論在資料上方,保留其後所有行;
  12. 刪除/清空說明行:刪除全域性 "審計要點"/"稽核要點" 行,以及邊界外的空行、說明行、孤立全零行;
  13. --mode clear 時僅清空說明行內容。
  14. 內容文字貫通合併並保留合併區邊框:在 R 行上將內容文字單元格橫向合併到工作表實際使用的最後一列(含表頭/邊框的最右非空列),並統一設為左對齊; 合併前取合併區所有單元格邊框的並集並應用到左上角,確保合併後的結論單元格四邊邊框完整。 若標籤格只含關鍵詞而無內容,則從標籤右側第一列開始保留空合併區域。
  15. 自適應列寬
  16. 普通單元格按單列最大內容估算;數值按千分位+兩位小數格式化後估算, 避免實際列印時出現 # 號截斷;
  17. 橫向合併區左上角文字參與「合併區總寬度」計算,確保合併列總寬足夠, 避免貫通文字被截斷;
  18. 列寬上限 20、下限 10,CJK 字元係數 2.0、左右留白 3。
  19. 所有 sheet 都會重新計算列寬,不僅是含標籤的 sheet,避免明細表因原始列寬過窄而顯示 # 號。
  20. 自適應行高:清除固定行高;對橫向合併單元格估算折行行數並設定最小行高, 必要時補充 wrap_text,避免長文本被截斷。
  21. 統一字型樣式:全文字型顏色黑色、取消加粗、清除底色,保留字號/字型名/斜體。
  22. 列印版式設定:A4(paperSize=9)、fitToWidth=1fitToHeight=1fitToPage=True;頁邊距四邊 0.4″、頁首頁尾 0.5″,通過新建 PageMargins 物件整體賦值以覆蓋原模板值; 橫/縱向按內容總寬度自動選擇;顯式列印區域以最終內容邊界計算,避免多出一行空白。
  23. 清理與儲存:清理 delete_rows 遺留的行維度條目,儲存到輸出檔案。

隱私與安全

強制約束

絕對禁止在任何輸出(包括對話回覆、指令碼摘要、日誌、錯誤提示、檔名建議等)中 出現以下資訊:

  • 公司/企業/客戶全稱
  • 組織機構名稱
  • 被審計單位名稱
  • 任何可能識別具體實體的名稱

推薦做法

處理時如需引用檔案或內容,僅使用:

  • 檔名(不含完整路徑中的使用者名稱/公司資訊)
  • 單元格座標(如 B24
  • Sheet 名稱
  • 被審計單位客戶 等泛稱代替具體名稱

指令碼輸出設計

process_audit_sheet.py 的摘要僅輸出 sheet 名稱、標籤是否命中、貫通合併狀態、 刪除行數以及被刪非空單元格的座標,不輸出單元格內容值,確保不洩露資料。

輸入 vs 輸出

  • 輸入檔案:永遠不被修改,保留完整原始資料。
  • 輸出檔案:預設保留表頭單位/客戶名稱;如需脫敏,請加 --redact

關鍵假設與限制

專案 說明
輸入格式 僅支援.xlsx,不支援 .xls
標籤位置 關鍵詞可出現在任意列,不一定在 A 列;默認同時識別「審計結論」「稽核結論」;若標籤本身縱向合併,會被摺疊為單行
標籤行及下方 先摺疊標籤縱向合併、合併結論延續行(A 列序號視為資料行,結束識別),再清理標籤行右側 0 值/公式;以標籤下方最近的 "合計"/"小計"/"總計" 行為資料邊界:結論在資料上方時保留 [標籤行+1, 合計行] 內所有行(含 A 列為空、全 0 行),刪除合計行下方說明行/空行;結論在底稿最下方時刪除結論下方所有行;無合計行時按下方是否為空/說明行決定
內容貫通列 貫通到工作表實際使用的最後一列(最右非空/有邊框列),不再是固定的 ws.max_column
列寬範圍 min_width=10max_width=20
橫/縱向閾值 內容總寬度 > 53 時切換為橫向(A4 豎版可列印寬約 7.47″ ≈ 53 字元)
字型處理 僅改顏色/加粗/底色,不改字號、字型名、斜體
標準版參照 --reference 只複製邊框/對齊,不復制字型

驗證清單

處理完成後建議核對:

  • [ ] 含匹配標籤的 sheet:結論延續行已合併到標籤行;標籤行本身右側的 0 值/公式已清空(只保留標籤和結論文字);結論在資料上方時,[標籤行+1, 合計行] 資料邊界內所有行(含 A 列為空、全 0 行)均保留;結論在底稿最下方時,結論下方無殘留內容;標籤與資料之間的完全空行及邊界下方的說明行/空行/孤立全零行已清理。
  • [ ] 內容文字已橫向貫通到實際最右使用列,且對齊方式為左對齊;標籤本身不再跨行合併。
  • [ ] 列印區域 print_area 與最終 max_row 一致,無多餘空白行;fitToWidth==1fitToHeight==1、四邊頁邊距 0.4″、頁首頁尾 0.5″。
  • [ ] 橫向合併區文字(如表頭)未被截斷,金額/數字列不出現 #,行高能完整顯示折行內容。
  • [ ] 字型顏色為黑色、加粗已取消、單元格底色已清除。
  • [ ] 每個 sheet 的 page_setup.orientationpaperSize==9sheet_properties.pageSetUpPr.fitToPage==True、頁邊距 0.4 正確。
  • [ ] 檔案可正常用 Excel/WPS 開啟,無合併失效或結構損壞。
  • [ ] 對話回覆和摘要中不包含任何公司/客戶名稱等可識別實體資訊。

關於 FDE

本 skill 由 杭州智銀長河科技有限公司 維護

如有問題、建議或定製需求,歡迎通過以下方式聯絡我們:

  • 公司名稱:杭州智銀長河科技有限公司
  • 聯絡電話:15128151755
  • 電子郵箱:huilaing@infrontsmart.com

🤖 AI 評測

這個 Skill 質量較好,程式碼實現成熟、功能完善,文件說明詳盡無歧義。它能很好地處理審計底稿的列印版整理需求,核心功能(標籤合併、內容清理、自適應排版)實現得邏輯嚴密、考慮周全,隱私安全方面也有妥善設計。唯一的小缺憾是沒有附帶示例檔案供使用者直觀參考。總體而言,是一個可靠實用的專業工具。

📊 多維度評分

適應性4.7
規範性4.4
有效性4.5
可靠性4.2
可信度5

📁 包含檔案 (2 個)

📄 SKILL.md 13.7 KB
📄 scripts/process_audit_sheet.py 36.4 KB