Office Toolkit

👤 Elayzher 📦 v1.5.1 ⭐ 4.7 ⬇️ 698 下載
📄 辦公效率 免費

📖 技能介紹


name: office-toolkit slug: office-toolkit-ela displayName: Office Toolkit version: 1.5.1 description: "Office 檔案離線批處理工具箱,專注「檔案進、檔案出」:讀取 / 建立 / 轉換 / 編輯 PDF·DOCX·PPTX·XLSX。讀取零依賴(純 Python,跨平臺);XLSX 建立支援公式與 13 種財務配色(藍=輸入 / 黑=公式 / 綠=跨表引用);格式轉換支援 WPS 與 Microsoft Office 雙引擎(→PDF / →CSV / →JSON)。適用於批次、離線、自動化的 Office 檔案處理。" license: MIT visibility: public metadata: requires: bins: - python3 optionalBins: - pdftotext pipDeps: - python-pptx==1.0.2 - openpyxl==3.1.5 - pywin32==312 platforms: - windows notes: "讀取功能跨平臺(Python stdlib);Office→PDF 轉換僅限 Windows + WPS/MS Office"


Office Toolkit — Office 檔案工具箱

v1.5.0 | 讀取·建立·轉換·編輯 | 四管道路由 | 驗證: 2026-07-11


定位宣告

Office Toolkit 是離線批處理工具箱,專注「檔案進、檔案出」的批次讀寫 / 建立 / 轉換。 - ✅ 覆蓋 PDF(讀取 / 抽取) - ✅ 跨平臺:讀取功能僅需 Python,macOS / Linux 可執行 - ✅ 零外部服務依賴:純 Python,無需常駐任何編輯器程序 - ✅ 批處理 / 自動化:適合「把 N 個檔案批次轉換 / 抽取」的指令碼活 - ✅ 離線編輯已有 XLSX:改單元格/公式、行列插刪(openpyxl,純本地無 Office) - ✅ 離線編輯已有 DOCX:改文本/段落(stdlib,零依賴,自動備份) - ❌ 不做即時協作編輯:不開啟你正看的文件做所見即所得修改 - ❌ 不接入線上文件:不直接讀寫雲端協作文件

與「即時編輯類 Office skill」互補不重疊:本工具解決離線、批次、無依賴;即時編輯類解決你正在看的某文件要改某句話的互動場景。

平臺相容性

功能 Windows + WPS/MSO macOS / Linux
讀取 PDF/DOCX/PPTX/XLSX ✅(僅需 Python)
建立 DOCX/XLSX(純文本) ✅(stdlib)
建立 PPTX ✅ python-pptx ✅ python-pptx
轉換 →PDF(COM 自動化)
轉換 XLSX→CSV/JSON ✅(stdlib)

Office→PDF 轉換依賴 Windows COM 自動化,需要 Microsoft Office 或 WPS Office 專業版(個人版不註冊 COM 伺服器,會失敗回退 MSO)。


路由表 — 四管道模式

管道 使用者意圖 觸發詞 載入
READ 讀取 開啟/檢視/閱讀 PDF/DOCX/PPTX/XLSX "開啟""看看""讀取""檢視" references/read.md
CREATE 建立 新建/生成/寫出 DOCX/XLSX/PPTX "新建""建立""生成""做一個" references/create.md
CONVERT 轉換 格式轉換 →PDF/→CSV/→JSON/→TXT "轉換""匯出""另存為""轉PDF" references/convert.md
EDIT 編輯 修改已有 XLSX/DOCX:XLSX改單元格/公式/行列插刪;DOCX改文本/段落(備份原檔案) "修改""改""編輯""更新單元格""插入行""刪除列""替換文本" XLSX→references/edit.md;DOCX→references/docx_edit.md

載入規則: 只讀取使用者當前任務對應的參考檔案,不要全部載入。一次只走一個管道。

小蔥技能站7w4.net,專業的AI技能分享平臺。

遇到錯誤? 載入 references/troubleshooting.md 檢視錯誤碼對照表和常見問題解答。 想避開常見坑? 載入 references/anti-patterns.md 檢視「不該怎麼做」的反模式清單。 第一次用? 載入 references/workflow.md 檢視 3 個完整端到端流程演示。

什麼時候用本工具?

以下典型場景適用本工具:

典型需求 本工具能力 說明
批次將 10 個 Excel 轉為 PDF 交付 批次 XLSX→PDF 迴圈呼叫 office_to_pdf(),自動重試 + 清理
從 PDF 表格提取結構化資料 PDF→結構化資料 read_pdf() 提取文字,pdf_to_markdown() 保留表格
從零建立含公式的成績表 / 報價單 從零建立 XLSX create_xlsx() + 公式單元格,13 種財務配色樣式
將 Word 文件轉為 PDF 交付客戶 DOCX→PDF COM 自動化,WPS 或 MSO 均可
讀取包含多個工作表的 Excel 多 Sheet 讀取 read_xlsx(path, sheet_index='all')
將 Excel 匯出為 CSV/JSON 供其他系統使用 XLSX→CSV/JSON 純 stdlib,不依賴 Office
修改已有 Excel:改某格數值/公式、插入或刪除行列 編輯已有 XLSX edit_xlsx()(openpyxl),純本地,自動備份原檔案
修改已有 Word 文件中的文本內容 編輯已有 DOCX edit_docx_text()(stdlib),零依賴,自動備份原檔案
從零生成 PPT 彙報文稿 建立 PPTX create_pptx() + python-pptx
檔案無法開啟 / 轉換報錯 / 程序無響應 排查問題 先看 troubleshooting.md,再查 anti-patterns.md

什麼時候不用本工具? - 要改正在看的文件裡某句話 → 用「即時編輯類 skill」(本機即時協作編輯類工具) - 要讀寫騰訊文件/金山文件 → 用對應雲文件 skill - 要做線上協作 → 本工具是離線批處理,不做即時協作

能力矩陣

格式 讀取 建立(stdlib) 建立(庫) 公式 樣式 編輯已有 轉換出
PDF ✅ pdftotext reportlab/fpdf2 →TXT/→DOCX
DOCX ✅ unzip+XML ✅ 已驗證 python-docx ✅ stdlib →PDF ✅COM(WPS+MSO)
PPTX ✅ unzip+XML ❌ 結構複雜 python-pptx ✅ 已驗證 →PDF ✅COM(WPS+MSO)
XLSX ✅ unzip+XML ✅ 已驗證 openpyxl ✅ 已驗證 ✅ SUM/AVG/IF等 ✅ 13位財務色系 編輯已有✅(openpyxl) →CSV/→JSON/→PDF ✅COM(WPS+MSO)

狀態圖例: ✅ 已驗證 = 已通過自動化或人工驗證; = 不適用; = 不支援。

環境依賴

基礎(零額外安裝)

  • Python 3.11+(zipfilexml.etree.ElementTreesubprocessjsoncsv
  • pdftotext(Git Bash / MSYS2 內建)
  • 支援: PDF讀取、DOCX/XLSX/PPTX讀取、DOCX/XLSX基礎建立、XLSX→CSV/JSON

可選 pip 安裝

用途 安裝命令
python-pptx PPTX 建立 pip install python-pptx==1.0.2
openpyxl XLSX 建立(推薦) pip install openpyxl==3.1.5
pywin32 COM 自動化轉 PDF(僅 Windows) pip install pywin32==312

系統軟體(僅 PDF 轉換需要)

  • Microsoft Office 2016+ 或 WPS Office 專業版(個人版不註冊 COM 自動化伺服器,轉 PDF 會失敗並優雅回退 MSO)
  • WPS ProgID: kwps.Application / KWPP.Application / KET.Application(需專業版才可用)
  • MSO ProgID: Word.Application / PowerPoint.Application / Excel.Application(全版本通用,基礎 ProgID 無版本號)
  • 程式碼自動檢測,預設 MSO 優先 → 回退 WPS(見 references/convert.md 候選表):遍歷該格式所有已知候選 ProgID,取首個能真實例項化的;WPS 候選失敗不影響 Office 路徑

其他可選庫: reportlab(PDF建立), python-docx(DOCX建立), docx2pdf(DOCX→PDF), pdf2docx(PDF→DOCX)

更多坑與約束見下方「關鍵技術警告」(ElementTree 名稱空間)與「已知限制」(XLSX 中文字型)。

關鍵技術警告

Python 3.13+ ElementTree 名稱空間 Bug (已驗證)

ElementTree.iter('{namespace}tag') 在 Python 3.13+ 對 OOXML 名稱空間處理不穩定, 可能返回空結果。所有 XML 解析必須使用 tag.endswith('}localname') 方式匹配。

正確寫法: python for elem in root.iter(): if elem.tag.endswith('}row'): ... 錯誤寫法: python for elem in root.iter(f'{NS}row'): # 可能返回空! ...

質量驗證

  • 自動化用例test_p0.py,隨包不釋出):覆蓋 XLSX 建立(公式 / 13 財務色系 / 跨表引用 / IF 公式轉義)、讀取回環(XLSX·DOCX·PPTX)、XLSX→CSV·JSON、EDIT 管道改單元格與行列插刪,全部 PASS。
  • 人工驗證:DOCX / PPTX / XLSX→PDF 的 COM 自動化在 WPS 與 Microsoft Office 2019 雙引擎實測通過。
  • 釋出包不含測試檔案,使用者安裝版本不攜帶測試程式碼。

已知限制

  • DOCX/XLSX stdlib 建立僅支援純文本/數值,無樣式表格圖片
  • PPTX 建立必須用 python-pptx(WPS 要求 47 個內部檔案,stdlib 不可行)
  • PDF→DOCX 轉換質量低,建議兩步法: pdftotext + create_docx
  • PDF 掃描件無法提取文字,需 OCR
  • Office→PDF 轉換僅限 Windows + WPS/MS Office
  • XLSX 中文字型:stdlib 手寫必須設 宋體/微軟雅黑 + charset=134(推薦 openpyxl 避坑)

效能預期(文件大小承載)

基於 stdlib(zipfile + ElementTree 全量解析)的預測:

格式 舒適範圍 極限邊界 瓶頸
PDF 500MB+ ~2GB pdftotext 是 C 程式,幾乎無上限
DOCX ~10MB ~30MB ElementTree 記憶體 ≈ XML ×5-10
XLSX ~5MB / ~2萬行 ~15MB / ~6.5萬行 超 2 萬行建議 openpyxl read_only
PPTX ~50MB / ~200頁 ~100MB 每 slide XML 較小,整體可控
COM轉換 取決於 Office ~100MB+ 瓶頸在 COM 呼叫超時

ElementTree 是全量解析(非流式),記憶體開銷約為原始 XML 的 5-10 倍。 日常文件(報告/表格/PPT)完全夠用;超大 XLSX 建議切換 openpyxl 流式模式。

變更記錄

版本 日期 變更
1.5.1 2026-07-23 釋出主頁清理:最佳化描述、移除內部測試/評審內容、變更記錄精簡為公開版
1.5.0 2026-07-11 新增 DOCX 編輯能力、DOCX 排版規範工具、DOCX 模板骨架
1.4.5 2026-07-07 OOXML 關係檔案修復、Office/WPS 程序殘留三層防護、多 Sheet 支援、反模式文件、端到端工作流演示

🤖 AI 評測

這是一個功能全面、文件詳盡的 Office 工具箱,支援 PDF、Word、Excel、PPT 的讀取和轉換,批次處理能力強,新手也能快速上手。文件質量好,遇到問題有據可查。適合需要離線批次處理 Office 檔案的使用者。不過它依賴 Windows 系統才能發揮全部能力,非 Windows 使用者功能受限;另外處理超大檔案或包含複雜樣式的文件時可能遇到相容性問題,使用前建議做好檔案備份。

📊 多維度評分

適應性4.8
規範性4.7
有效性4.7
可靠性4.6
可信度4.9

📁 包含檔案 (29 個)

📄 SKILL.md 10.2 KB
📄 references/anti-patterns.md 8.3 KB
📄 references/convert.md 23.6 KB
📄 references/create.md 22.4 KB
📄 references/docx_edit.md 3.5 KB
📄 references/edit.md 6.1 KB
📄 references/read.md 10.1 KB
📄 references/troubleshooting.md 4.7 KB
📄 references/workflow.md 7.1 KB
📄 scripts/com_probe.py 3.7 KB
📄 scripts/docx_edit.py 2.1 KB
📄 scripts/docx_format.py 3.4 KB
📄 scripts/formula_check.py 8 KB
📄 scripts/pre_publish.py 3.9 KB
📄 scripts/version_check.py 4.7 KB
📄 templates/minimal_docx/[Content_Types].xml 694 B
📄 templates/minimal_docx/_rels/.rels.txt 454 B
📄 templates/minimal_docx/docProps/core.xml 457 B
📄 templates/minimal_docx/word/document.xml 421 B
📄 templates/minimal_docx/word/styles.xml 1.1 KB
📄 templates/minimal_xlsx/[Content_Types].xml 1.1 KB
📄 templates/minimal_xlsx/_rels/.rels.txt 598 B
📄 templates/minimal_xlsx/docProps/app.xml 192 B
📄 templates/minimal_xlsx/docProps/core.xml 428 B
📄 templates/minimal_xlsx/xl/_rels/workbook.xml.rels.txt 576 B
📄 templates/minimal_xlsx/xl/sharedStrings.xml 161 B
📄 templates/minimal_xlsx/xl/styles.xml 5.6 KB
📄 templates/minimal_xlsx/xl/workbook.xml 318 B
📄 templates/minimal_xlsx/xl/worksheets/sheet1.xml 584 B