SuperAPI AI 工具集

syncfusion-javascript-docx

办公与效率

查看项目

更新于 10-16 14:07

技能介绍

Syncfusion JavaScript Word 库(@syncfusion/ej2-docx)是一个非 UI 库,用于在 Node.js 和浏览器中创建、读取、编辑和保存 .docx 文件,无需 Microsoft Word。打开再保存的往返过程中,不支持的内容(未知 XML、部件、关系)会被保留。它不执行也不依赖 VBA/OLE/ActiveX 内容,只是将其保留。

安装

npm install @syncfusion/ej2-docx

从包根导入:import { WordDocument } from '@syncfusion/ej2-docx'。

按任务查阅参考

按需要只阅读对应参考:创建 / 打开 / 保存、base64、浏览器与 Node 的 I/O、错误,见 references/getting-started.md;段落、文本、字符与段落格式、列表,见 references/text-and-formatting.md;表格、单元格、合并、表格格式,见 references/tables.md;图片、超链接、字段、内容控件,见 references/inline-content.md;节、页面设置、页眉页脚、页码,见 references/sections-headers-footers.md;限制、注意事项、内部/不支持的 API,见 references/troubleshooting.md。

快速开始

import { WordDocument } from '@syncfusion/ej2-docx';

const document = WordDocument.create(); // 新建空白文档 const section = document.sections[0]; // 在节正文添加内容

const paragraph = section.body.paragraphs[0]; // 默认空段落 paragraph.appendText('Bold intro. ', { bold: true }); paragraph.appendText('Normal text.');

const title = section.body.appendParagraph({ text: 'Quarterly Report' }); title.items; // 段落项(文本范围、制表符等)

const table = section.body.appendTable(); // 1x1 表格 table.resetCells(2, 2); // 调整为 2 行 x 2 列 table.rows[0].cells[0].text = 'Name'; table.rows[0].cells[1].text = 'Qty';

const bytes: Uint8Array = doc.saveSync(); // OPC zip 字节 // Node: fs.writeFileSync('out.docx', bytes) // 浏览器:await doc.save('out.docx') -> 触发下载

打开已有文件

import { readFileSync } from 'node:fs'; const doc = WordDocument.open(new Uint8Array(readFileSync('in.docx'))); console.log([...doc.sections[0].body.paragraphs].map(p => p.text));

核心对象模型

WordDocument → sections[] → Section → body(Body)、pageSetup、headersFooters。

Body / 表格单元格 / 页眉 / 页脚 以有序块(items)保存内容:Paragraph、Table、块级内容控件。body.paragraphs 是带类型的视图。

Paragraph → items(TextRange、Tab、字段、超链接、图片等)、paragraphFormat、listFormat、text(只读纯文本)。

TextRange.characterFormat 保存 run 级格式(bold、italic、fontName、fontSize、textColor 等)。

要点

open 不读取文件路径;请传入字节(Uint8Array/ArrayBuffer)、通过 openAsync 传入 File/Blob,或使用 { format: 'base64' } 传入 base64。

Node 端写文件由开发者完成(fs.writeFileSync),使用 saveSync() 或 await save();save('name.docx') 仅在浏览器中触发下载。

在节正文上添加段落和表格(document.sections[0].body.appendParagraph / appendTable),而不是在 WordDocument 上。对象必须附加到文档才能被修改(分离的对象会抛出 DetachedObjectError)。

使用这些参考中未展示的符号前,请对照所安装版本的 .d.ts 验证 API;部分成员为 @internal,会从发布的类型定义中裁剪。

适用场景

需要在服务端或浏览器端以程序化方式生成、读取或修改 Word 文档,且不希望依赖 Microsoft Word 安装时,可使用该库;适合基于 Node.js 或前端环境处理 .docx 字节流、保留未知内容的往返编辑等任务。限制与注意事项详见 references/troubleshooting.md;官方未在资料中提供的收费、价格、平台支持范围等信息暂未提供。