1. 产品
  2.   字处理
  3.   JavaScript
  4.   Docx-templates
 
  

用于生成动态 Word 文档的 JavaScript API

用于使用 Node.js 和基于浏览器的应用程序创建动态 Word 文档的开源 JavaScript 库。

什么是 Docx-templates?

Docx-Templates 是一个开源的 JavaScript 库,允许软件开发者使用预定义的模板生成动态的 Microsoft Word(.docx)文档。开发者无需手动以编程方式构建 Word 文档,而是可以在 Microsoft Word 中设计模板,并通过嵌入的命令注入动态数据。该库可在 Node.js 和浏览器环境中运行,因而对现代网页和服务器端应用具有高度的通用性。它通过解析 DOCX 文件的内部 XML 结构,在运行时将模板命令替换为实际数据来处理文档。

Docx-Templates 库是一个功能强大的开源工具,适用于 Node.js 和浏览器环境。该库的主要优势在于设计与逻辑的分离。非技术用户可以在 Word 中设计布局和样式,而开发者则专注于注入数据。它支持循环、条件格式等复杂逻辑,甚至可以在文档中直接执行 JavaScript 代码片段。这使其成为需要生成高保真报告而不想与 XML 或专有设计工具纠缠的开发者的理想解决方案。

Previous Next

Docx-templates 入门指南

推荐的安装 Docx-templates 库的方式是通过 npm。请使用以下命令以确保顺利安装。

通过 NPM 安装 Docx-Templates

$ npm install docx-templates 

通过 Yarn 安装 Docx-Templates/strong>

$ yarn add docx-templates 

通过 JS API 的基于模板的文档生成

开源的 Docx-Templates 库允许软件开发者在 Word 中设计文档,并使用简单的命令动态注入数据。这种方法将表现层与逻辑层分离,使模板易于管理和更新,无需更改代码。您可以直接访问数据对象的属性,甚至运行简单表达式。例如,要插入全名,您的模板应如下所示:{firstName} {surname}。库会评估代码并无缝替换。

如何在 JavaScript 应用中动态创建 Word 文档?

import createReport from 'docx-templates';
import fs from 'fs';

const template = fs.readFileSync('template.docx');

const report = await createReport({
  template,
  data: { name: 'John', surname: 'Doe' },
});

fs.writeFileSync('output.docx', report);

通过 JavaScript 动态注入图像

除了文本,开源的 Docx-Templates 库还能即时注入图像。这包括本地文件、来自 URL 的图片,甚至是程序生成的二维码。您可以控制图像的大小和位置。此功能是创建身份证徽章、产品目录或需要动态图表和视觉证据的报告的革命性工具。下面是一个简单示例,演示如何通过 JavaScript API 将图像插入 Word 文档。

如何通过 JavaScript API 在 Word 文档中即时插入图片?

const buffer = await createReport({
  template,
  data: {
    userAvatar: async () => {
      const resp = await fetch('https://example.com/photo.png');
      return { width: 3, height: 3, data: await resp.arrayBuffer(), extension: '.png' };
    }
  },
});
// In Word: {IMAGE userAvatar()}

强大的循环(FOR/END-FOR)

使用 FOR 命令处理数据列表非常顺畅。此功能允许您遍历数组以生成表格行、列表,甚至文档的整个章节。Docx-Templates 库已加入对嵌套循环的支持,使您能够表示复杂的层次结构数据,例如包含各自员工的部门列表,同时保持原始 Word 样式。以下代码示例展示了如何实现此功能。

如何在 JavaScript 应用中使用高级循环?

const buffer = await createReport({
  template,
  data: {
    projects: [
      { name: 'SEO Optimization', status: 'Completed' },
      { name: 'API Integration', status: 'In Progress' }
    ]
  },
});
/* In Word:
{FOR project IN projects}
Project: {project.name} - Status: {project.status}
{END-FOR}
*/

自定义 JavaScript 上下文(EXEC)

Docx-Templates 库最先进的功能之一是能够使用 EXEC(或 !)命令运行任意 JavaScript 代码片段。通过提供 additionalJsContext,您可以向模板公开自定义辅助函数。这使得模板能够在内部执行计算、格式化日期或操作字符串,而无需在主应用逻辑中预处理每一条数据。

 中国人