Office Document Extractor

👤 michealxie001 📦 v1.0.1 ⭐ 4.3 ⬇️ 772 下載
📄 辦公效率 免費

📖 技能介紹


name: office-doc-extractor description: Convert Microsoft Office documents (DOCX, XLSX, PPTX) to Markdown without any external dependencies. Use when the user needs to extract text from Word documents, Excel spreadsheets, or PowerPoint presentations for analysis, indexing, or LLM processing. Pure Python implementation — no pip install, no subprocess calls, no network downloads required. Works offline.


Office Document Extractor

Zero-dependency converter for Microsoft Office documents. Extracts text and structure from DOCX, XLSX, and PPTX files into clean Markdown.

Quick Start

# Single file
python3 scripts/main.py report.docx -o report.md

# Batch convert a directory
python3 scripts/main.py ./documents --batch -o ./markdown

Supported Formats

Format Extension Output
Word .docx Headings, paragraphs
Excel .xlsx Tables (one per sheet)
PowerPoint .pptx Slides as sections

How It Works

  • DOCX: Parses the ZIP archive's XML directly using Python's zipfile and xml.etree
  • XLSX: Uses bundled openpyxl (pure Python, no C extensions)
  • PPTX: Parses the ZIP archive's slide XML directly

No external commands, no network calls, no pip install required.

Usage

Single File

python3 scripts/main.py <input_file> [-o <output.md>]

Auto-detects format from file extension. If -o is omitted, outputs to <input>.md.

Batch Conversion

python3 scripts/main.py <input_directory> --batch [-o <output_directory>]

Converts all .docx, .xlsx, .pptx files in the directory. Results saved to markdown_output/ by default.

Resources

scripts/

  • main.py — Unified CLI for single-file and batch conversion
  • docx_extractor.py — DOCX → Markdown (standard library only)
  • xlsx_extractor.py — XLSX → Markdown tables (bundled openpyxl)
  • pptx_extractor.py — PPTX → Markdown (standard library only)

Bundled Dependencies

  • openpyxl/ — Pure Python Excel library (v3.1.5)
  • et_xmlfile/ — openpyxl dependency (pure Python)

Limitations

  • Does not extract images or embedded objects (text only)

    本技能來自小蔥技能站7w4.net。

  • Does not preserve complex formatting (colors, fonts, layouts)
  • Does not handle encrypted/password-protected files
  • No OCR for scanned documents (use OpenClaw's native pdf tool for that)

Why This Skill?

Existing markitdown-based skills require pip install or external CLI tools, which triggers ClawHub security warnings. This skill is 100% self-contained — install it and use it immediately, even offline.

🤖 AI 評測

這是一個功能實用的文件轉換工具,能將 Word、Excel、PowerPoint 文件轉為 Markdown 格式。優點是無需安裝額外依賴即可使用,介面簡潔操作方便。不足是隻能提取文字內容,無法保留原文件中的圖片、樣式和排版,對加密檔案也無法處理。適合對格式要求不高的文本提取場景使用。

📊 多維度評分

適應性4.8
規範性4.2
有效性4.2
可靠性4.2
可信度4.8

📁 包含檔案 (199 個)

📄 SKILL.md 2.5 KB
📄 _meta.json 139 B
📄 scripts/docx_extractor.py 2.8 KB
📄 scripts/et_xmlfile/__init__.py 228 B
📄 scripts/et_xmlfile/incremental_tree.py 33.7 KB
📄 scripts/et_xmlfile/xmlfile.py 4.8 KB
📄 scripts/main.py 2.9 KB
📄 scripts/openpyxl/__init__.py 603 B
📄 scripts/openpyxl/_constants.py 306 B
📄 scripts/openpyxl/cell/__init__.py 122 B
📄 scripts/openpyxl/cell/_writer.py 3.9 KB
📄 scripts/openpyxl/cell/cell.py 8.7 KB
📄 scripts/openpyxl/cell/read_only.py 3 KB
📄 scripts/openpyxl/cell/rich_text.py 5.5 KB
📄 scripts/openpyxl/cell/text.py 4.3 KB
📄 scripts/openpyxl/chart/_3d.py 3 KB
📄 scripts/openpyxl/chart/__init__.py 564 B
📄 scripts/openpyxl/chart/_chart.py 5.6 KB
📄 scripts/openpyxl/chart/area_chart.py 2.8 KB
📄 scripts/openpyxl/chart/axis.py 12.3 KB
📄 scripts/openpyxl/chart/bar_chart.py 4 KB
📄 scripts/openpyxl/chart/bubble_chart.py 2 KB
📄 scripts/openpyxl/chart/chartspace.py 5.9 KB
📄 scripts/openpyxl/chart/data_source.py 5.6 KB
📄 scripts/openpyxl/chart/descriptors.py 736 B
📄 scripts/openpyxl/chart/error_bar.py 1.8 KB
📄 scripts/openpyxl/chart/label.py 4 KB
📄 scripts/openpyxl/chart/layout.py 2 KB
📄 scripts/openpyxl/chart/legend.py 2 KB
📄 scripts/openpyxl/chart/line_chart.py 3.9 KB
📄 scripts/openpyxl/chart/marker.py 2.5 KB
📄 scripts/openpyxl/chart/picture.py 1.1 KB
📄 scripts/openpyxl/chart/pie_chart.py 4.7 KB
📄 scripts/openpyxl/chart/pivot.py 1.7 KB
📄 scripts/openpyxl/chart/plotarea.py 5.7 KB
📄 scripts/openpyxl/chart/print_settings.py 1.4 KB
📄 scripts/openpyxl/chart/radar_chart.py 1.5 KB
📄 scripts/openpyxl/chart/reader.py 802 B
📄 scripts/openpyxl/chart/reference.py 3 KB
📄 scripts/openpyxl/chart/scatter_chart.py 1.5 KB
📄 scripts/openpyxl/chart/series.py 5.8 KB
📄 scripts/openpyxl/chart/series_factory.py 1.3 KB
📄 scripts/openpyxl/chart/shapes.py 2.7 KB
📄 scripts/openpyxl/chart/stock_chart.py 1.6 KB
📄 scripts/openpyxl/chart/surface_chart.py 2.8 KB
📄 scripts/openpyxl/chart/text.py 1.8 KB
📄 scripts/openpyxl/chart/title.py 1.9 KB
📄 scripts/openpyxl/chart/trendline.py 3 KB
📄 scripts/openpyxl/chart/updown_bars.py 897 B
📄 scripts/openpyxl/chartsheet/__init__.py 71 B
📄 scripts/openpyxl/chartsheet/chartsheet.py 3.8 KB
📄 scripts/openpyxl/chartsheet/custom.py 1.7 KB
📄 scripts/openpyxl/chartsheet/properties.py 679 B
📄 scripts/openpyxl/chartsheet/protection.py 1.2 KB
📄 scripts/openpyxl/chartsheet/publish.py 1.5 KB
📄 scripts/openpyxl/chartsheet/relation.py 2.7 KB
📄 scripts/openpyxl/chartsheet/views.py 1.3 KB
📄 scripts/openpyxl/comments/__init__.py 67 B
📄 scripts/openpyxl/comments/author.py 388 B
📄 scripts/openpyxl/comments/comment_sheet.py 5.6 KB
📄 scripts/openpyxl/comments/comments.py 1.4 KB
📄 scripts/openpyxl/comments/shape_writer.py 3.7 KB
📄 scripts/openpyxl/compat/__init__.py 1.6 KB
📄 scripts/openpyxl/compat/abc.py 155 B
📄 scripts/openpyxl/compat/numbers.py 1.6 KB
📄 scripts/openpyxl/compat/product.py 264 B
📄 scripts/openpyxl/compat/singleton.py 1023 B
📄 scripts/openpyxl/compat/strings.py 604 B
📄 scripts/openpyxl/descriptors/__init__.py 1.9 KB
📄 scripts/openpyxl/descriptors/base.py 7 KB
📄 scripts/openpyxl/descriptors/container.py 889 B
📄 scripts/openpyxl/descriptors/excel.py 2.4 KB
📄 scripts/openpyxl/descriptors/namespace.py 313 B
📄 scripts/openpyxl/descriptors/nested.py 2.5 KB
📄 scripts/openpyxl/descriptors/sequence.py 3.4 KB
📄 scripts/openpyxl/descriptors/serialisable.py 7.2 KB
📄 scripts/openpyxl/descriptors/slots.py 824 B
📄 scripts/openpyxl/drawing/__init__.py 66 B
📄 scripts/openpyxl/drawing/colors.py 14.9 KB
📄 scripts/openpyxl/drawing/connector.py 3.8 KB
📄 scripts/openpyxl/drawing/drawing.py 2.3 KB
📄 scripts/openpyxl/drawing/effect.py 9.2 KB
📄 scripts/openpyxl/drawing/fill.py 12.8 KB
📄 scripts/openpyxl/drawing/geometry.py 17.1 KB
📄 scripts/openpyxl/drawing/graphic.py 4.7 KB
📄 scripts/openpyxl/drawing/image.py 1.4 KB
📄 scripts/openpyxl/drawing/line.py 3.8 KB
📄 scripts/openpyxl/drawing/picture.py 4.1 KB
📄 scripts/openpyxl/drawing/properties.py 4.8 KB
📄 scripts/openpyxl/drawing/relation.py 344 B
📄 scripts/openpyxl/drawing/spreadsheet_drawing.py 10.5 KB
📄 scripts/openpyxl/drawing/text.py 21.9 KB
📄 scripts/openpyxl/drawing/xdr.py 626 B
📄 scripts/openpyxl/formatting/__init__.py 59 B
📄 scripts/openpyxl/formatting/formatting.py 2.6 KB
📄 scripts/openpyxl/formatting/rule.py 9.1 KB
📄 scripts/openpyxl/formula/__init__.py 69 B
📄 scripts/openpyxl/formula/tokenizer.py 14.7 KB
📄 scripts/openpyxl/formula/translate.py 6.5 KB
📄 scripts/openpyxl/packaging/__init__.py 90 B
📄 scripts/openpyxl/packaging/core.py 4 KB
📄 scripts/openpyxl/packaging/custom.py 6.6 KB
📄 scripts/openpyxl/packaging/extended.py 4.7 KB
📄 scripts/openpyxl/packaging/interface.py 920 B
📄 scripts/openpyxl/packaging/manifest.py 5.2 KB
📄 scripts/openpyxl/packaging/relationship.py 3.9 KB
📄 scripts/openpyxl/packaging/workbook.py 6.3 KB
📄 scripts/openpyxl/pivot/__init__.py 35 B
📄 scripts/openpyxl/pivot/cache.py 27.2 KB
📄 scripts/openpyxl/pivot/fields.py 6.9 KB
📄 scripts/openpyxl/pivot/record.py 2.6 KB
📄 scripts/openpyxl/pivot/table.py 39.8 KB
📄 scripts/openpyxl/reader/__init__.py 35 B
📄 scripts/openpyxl/reader/drawings.py 2.2 KB
📄 scripts/openpyxl/reader/excel.py 12.1 KB
📄 scripts/openpyxl/reader/strings.py 1.1 KB
📄 scripts/openpyxl/reader/workbook.py 4.3 KB
📄 scripts/openpyxl/styles/__init__.py 363 B
📄 scripts/openpyxl/styles/alignment.py 2.1 KB
📄 scripts/openpyxl/styles/borders.py 3.2 KB
📄 scripts/openpyxl/styles/builtins.py 30.5 KB
📄 scripts/openpyxl/styles/cell_style.py 5.3 KB
📄 scripts/openpyxl/styles/colors.py 4.5 KB
📄 scripts/openpyxl/styles/differential.py 2.2 KB
📄 scripts/openpyxl/styles/fills.py 6.2 KB
📄 scripts/openpyxl/styles/fonts.py 3.4 KB
📄 scripts/openpyxl/styles/named_styles.py 7.1 KB
📄 scripts/openpyxl/styles/numbers.py 5 KB
📄 scripts/openpyxl/styles/protection.py 394 B
📄 scripts/openpyxl/styles/proxy.py 1.4 KB
📄 scripts/openpyxl/styles/styleable.py 4.4 KB
📄 scripts/openpyxl/styles/stylesheet.py 8.6 KB
📄 scripts/openpyxl/styles/table.py 2.7 KB
📄 scripts/openpyxl/utils/__init__.py 324 B
📄 scripts/openpyxl/utils/bound_dictionary.py 717 B
📄 scripts/openpyxl/utils/cell.py 6.8 KB
📄 scripts/openpyxl/utils/dataframe.py 2.9 KB
📄 scripts/openpyxl/utils/datetime.py 4.4 KB
📄 scripts/openpyxl/utils/escape.py 790 B
📄 scripts/openpyxl/utils/exceptions.py 889 B
📄 scripts/openpyxl/utils/formulas.py 4.1 KB
📄 scripts/openpyxl/utils/indexed_list.py 1.2 KB
📄 scripts/openpyxl/utils/inference.py 1.5 KB
📄 scripts/openpyxl/utils/protection.py 830 B
📄 scripts/openpyxl/utils/units.py 2.6 KB
📄 scripts/openpyxl/workbook/__init__.py 68 B
📄 scripts/openpyxl/workbook/_writer.py 6.4 KB
📄 scripts/openpyxl/workbook/child.py 4 KB
📄 scripts/openpyxl/workbook/defined_name.py 5.3 KB
📄 scripts/openpyxl/workbook/external_link/__init__.py 71 B
📄 scripts/openpyxl/workbook/external_link/external.py 4.4 KB
📄 scripts/openpyxl/workbook/external_reference.py 348 B
📄 scripts/openpyxl/workbook/function_group.py 803 B
📄 scripts/openpyxl/workbook/properties.py 5.1 KB
📄 scripts/openpyxl/workbook/protection.py 5.9 KB
📄 scripts/openpyxl/workbook/smart_tags.py 1.2 KB
📄 scripts/openpyxl/workbook/views.py 5.1 KB
📄 scripts/openpyxl/workbook/web.py 2.6 KB
📄 scripts/openpyxl/workbook/workbook.py 12.9 KB
📄 scripts/openpyxl/worksheet/__init__.py 35 B
📄 scripts/openpyxl/worksheet/_read_only.py 5.6 KB
📄 scripts/openpyxl/worksheet/_reader.py 16 KB
📄 scripts/openpyxl/worksheet/_write_only.py 4.1 KB
📄 scripts/openpyxl/worksheet/_writer.py 10 KB
📄 scripts/openpyxl/worksheet/cell_range.py 14.7 KB
📄 scripts/openpyxl/worksheet/cell_watch.py 608 B
📄 scripts/openpyxl/worksheet/controls.py 2.7 KB
📄 scripts/openpyxl/worksheet/copier.py 2.3 KB
📄 scripts/openpyxl/worksheet/custom.py 639 B
📄 scripts/openpyxl/worksheet/datavalidation.py 6 KB
📄 scripts/openpyxl/worksheet/dimensions.py 8.9 KB
📄 scripts/openpyxl/worksheet/drawing.py 275 B
📄 scripts/openpyxl/worksheet/errors.py 2.4 KB
📄 scripts/openpyxl/worksheet/filters.py 13.5 KB
📄 scripts/openpyxl/worksheet/formula.py 1 KB
📄 scripts/openpyxl/worksheet/header_footer.py 7.7 KB
📄 scripts/openpyxl/worksheet/hyperlink.py 1.1 KB
📄 scripts/openpyxl/worksheet/merge.py 4 KB
📄 scripts/openpyxl/worksheet/ole.py 3.4 KB
📄 scripts/openpyxl/worksheet/page.py 4.8 KB
📄 scripts/openpyxl/worksheet/pagebreak.py 1.8 KB
📄 scripts/openpyxl/worksheet/picture.py 185 B
📄 scripts/openpyxl/worksheet/print_settings.py 5.1 KB
📄 scripts/openpyxl/worksheet/properties.py 3 KB
📄 scripts/openpyxl/worksheet/protection.py 3.7 KB
📄 scripts/openpyxl/worksheet/related.py 335 B
📄 scripts/openpyxl/worksheet/scenario.py 2.3 KB
📄 scripts/openpyxl/worksheet/smart_tag.py 1.6 KB
📄 scripts/openpyxl/worksheet/table.py 11.4 KB
📄 scripts/openpyxl/worksheet/views.py 4.9 KB
📄 scripts/openpyxl/worksheet/worksheet.py 26.9 KB
📄 scripts/openpyxl/writer/__init__.py 35 B
📄 scripts/openpyxl/writer/excel.py 9.3 KB
📄 scripts/openpyxl/writer/theme.py 10.1 KB
📄 scripts/openpyxl/xml/__init__.py 1016 B
📄 scripts/openpyxl/xml/constants.py 4.7 KB
📄 scripts/openpyxl/xml/functions.py 2 KB
📄 scripts/pptx_extractor.py 2.5 KB
📄 scripts/xlsx_extractor.py 2.4 KB