跳到主要内容
Office Open

快速开始

命令行工具 (CLI)

使用 JSON 生成 Office 文件,或从命令行检测与解析支持的格式

office-open 包包含一个命令行工具,可从 JSON 生成文档,也可检测或解析支持的 Office 文件。

#安装

命令行工具随 office-open 包一起安装:

pnpm
pnpm add office-open

#用法

bash
office-open <类型> <输入> [输出]
  • 类型 — 文档类型:docx、pptx 或 xlsx
  • 输入 — JSON 字符串或 JSON 文件路径
  • 输出 — 输出文件路径(默认:output.<ext>)

生成支持全部 OOXML 包变体:docx/docm/dotx/dotm、xlsx/xlsm/xltx/xltm 与 pptx/pptm/potx/potm。

#选项

参数别名说明
--input-file-i从文件读取 JSON
--output-file-o输出文件路径
--help-h显示帮助
--version-v显示版本

#示例

#从 JSON 文件生成

bash
office-open docx input.json "我的文档.docx"

#使用参数

bash
office-open pptx -i slides.json -o "演示文稿.pptx"

#内联 JSON

bash
office-open docx '{"sections":[{"children":[{"paragraph":{"children":["你好,世界!"]}}]}]}' "output.docx"

#检测输入文件

bash
office-open detect input.doc
office-open detect input.rtf --json

格式检测覆盖 OOXML 变体、旧版 .doc/.xls/.ppt、RTF 与 ODF 包。

#解析输入文件

bash
office-open parse input.odt --output model.json

解析结果会返回检测输入对应的 options 族:DocumentOptions、WorkbookOptions 或 PresentationOptions。旧版 DOC/XLS/PPT 仅支持解析;RTF 与 ODT/ODS/ODP 也提供生成器。

#JSON 格式

每种文档类型有各自的必需结构。命令行工具会在生成前根据对应 schema 验证输入。

#DOCX

JSON
{
  "sections": [
    {
      "children": [{ "paragraph": { "children": [{ "text": "你好,世界!", "bold": true }] } }]
    }
  ]
}

#PPTX

JSON
{
  "title": "我的演示文稿",
  "slides": [
    {
      "children": [
        {
          "shape": {
            "x": 100,
            "y": 100,
            "width": 760,
            "height": 340,
            "textBody": { "paragraphs": [{ "children": [{ "text": "你好,世界!", "size": 32 }] }] }
          }
        }
      ]
    }
  ]
}

#XLSX

JSON
{
  "worksheets": [
    {
      "name": "Sheet1",
      "rows": [
        { "cells": [{ "value": "姓名" }, { "value": "分数" }] },
        { "cells": [{ "value": "张三" }, { "value": 95 }] }
      ]
    }
  ]
}

#验证

命令行工具会在生成前验证 JSON 输入。如果输入无效,会给出具体的错误位置和原因:

text
Error: Invalid docx options: at "sections": must be array

#Schema 查询

CLI 也可以查询 JSON Schema — 手写 JSON 或通过 AI 代理编写时,可用来核对精确的字段名、枚举值或单位约束:

bash
office-open schema index docx                              # 按域分组的查询入口
office-open schema index docx --all                        # 全部定义名
office-open schema slice docx ParagraphOptions RunOptions  # 这些类型的子 schema

切片携带所请求类型的完整依赖闭包;未请求的编目域保持为可展开的 stub。泛型定义名在 shell 中需要引号:"HeaderFooterGroup<HeaderFooterReference>"。

完整的 schema 说明请参考 DOCX、PPTX 和 XLSX 文档。