快速开始
更多格式
解析旧版 Office 与 ODF;生成 RTF 和核心 ODF 文档;并转换 CSV/TSV
总包提供统一的格式探测与解析入口,同时保留现有 options 族。这里没有单独的旧版编辑模型:解析结果会投影到 DocumentOptions、WorkbookOptions 或 PresentationOptions。
#格式矩阵
| 格式 | 解析 | 生成 | 补丁 | 结果模型 |
|---|---|---|---|---|
.doc、.xls、.ppt | ✅ | ❌ | ❌ | 现有文档/工作簿/演示文稿 options |
.rtf | ✅ | ✅ | ❌ | DocumentOptions |
.odt、.ods、.odp | ✅ | ✅ | ❌ | 规范格式族 options |
.csv、.tsv | ✅ | ✅ | ❌ | WorkbookOptions 转换 |
旧版二进制格式有意设计为只读。共享 options 模型仍是 OOXML、编辑器与跨格式转换使用的编辑和持久化契约。
#生成 RTF
import { generateOffice } from "office-open";
const data = await generateOffice("rtf", {
sections: [{ children: [{ paragraph: "Written as RTF" }] }],
});
RTF 写入器输出 parser 的严格 DocumentOptions 投影。无法表示的 OOXML 专属字段会抛出带规范路径和原因的 RtfGenerateError;受支持数据不会被静默丢弃。
ODF 文档包向下依赖内部 odf 模块;同级 ODF 文档包互不导入,只有总包聚合全部公开编解码器。
ODF 文档包拥有各自的规范类型化 surface。内部 odf 模块负责这些 surface 之外的通用节点覆盖;底层图表与数据库编解码器是实现细节,不在聚合 API 中。
#统一解析
import { readFile } from "node:fs/promises";
import { parseOffice } from "office-open";
const data = new Uint8Array(await readFile("input.doc"));
const parsed = await parseOffice(data);
返回对象包含探测到的 type 与三种 options 族之一。RTF 也支持直接传入字符串。
#生成 ODF
import { generateOffice } from "office-open";
const data = await generateOffice("odt", {
sections: [{ children: [{ paragraph: "Written as ODT" }] }],
});
ODF 包会存储未压缩且位于包首的 mimetype,并包含符合规范的 ODF 1.3 manifest。
对于规范专用 surface 之外的元素,请使用规范格式族包暴露的受支持 ODF 投影。
reproducible 仅适用于 OOXML OPC 输出。ODT/ODS/ODP 写入器会拒绝该选项,不会静默忽略。
#CSV 与 TSV
import { csvToWorkbook, tsvToWorkbook } from "office-open/convert";
const workbook = csvToWorkbook("name,score\nAda,99");
分隔文本转换遵循 RFC 4180,保留引号字段中的换行,解析值保持字符串而不做类型猜测。