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"
v1.5.0 | 讀取·建立·轉換·編輯 | 四管道路由 | 驗證: 2026-07-11
來源於7w4.net。
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 |
載入規則: 只讀取使用者當前任務對應的參考檔案,不要全部載入。一次只走一個管道。
遇到錯誤? 載入
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) | 建立(庫) | 公式 | 樣式 | 編輯已有 | 轉換出 |
|---|---|---|---|---|---|---|---|
| ✅ 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) |
狀態圖例:
✅ 已驗證= 已通過自動化或人工驗證;—= 不適用;❌= 不支援。
zipfile、xml.etree.ElementTree、subprocess、json、csv)pdftotext(Git Bash / MSYS2 內建)| 庫 | 用途 | 安裝命令 |
|---|---|---|
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 |
kwps.Application / KWPP.Application / KET.Application(需專業版才可用)Word.Application / PowerPoint.Application / Excel.Application(全版本通用,基礎 ProgID 無版本號)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。宋體/微軟雅黑 + charset=134(推薦 openpyxl 避坑)基於 stdlib(zipfile + ElementTree 全量解析)的預測:
| 格式 | 舒適範圍 | 極限邊界 | 瓶頸 |
|---|---|---|---|
| 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 支援、反模式文件、端到端工作流演示 |
這是一個功能全面、文件詳盡的 Office 工具箱,支援 PDF、Word、Excel、PPT 的讀取和轉換,批次處理能力強,新手也能快速上手。文件質量好,遇到問題有據可查。適合需要離線批次處理 Office 檔案的使用者。不過它依賴 Windows 系統才能發揮全部能力,非 Windows 使用者功能受限;另外處理超大檔案或包含複雜樣式的文件時可能遇到相容性問題,使用前建議做好檔案備份。