You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用docx-templates实现单页表格填充单条数据?

问题描述

我正在使用docx-templates通过模板填充数据生成Word文件,模板是表格,希望每条数据单独占一页表格,但不知道怎么实现。

现有代码

import { createReport } from 'docx-templates';
import fs from 'fs'; // 补充缺失的模块导入

let content = fs.readFileSync("./Check List Template.docx");
let rosterA=[
  { a: 'Operator4', count: 1, b: 'Operator6', c: 'Operator8' },
  { a: 'Operator5', count: 2, b: 'Operator6', c: 'Operator8' },
  { a: 'Operator5', count: 3, b: 'Operator1', c: 'Operator4' },
  { a: 'Operator6', count: 4, b: 'Operator8', c: 'Operator1' },
  { a: 'Operator6', count: 5, b: 'Operator4', c: 'Operator8' },
  { a: 'Operator4', count: 6, b: 'Operator6', c: 'Operator1' },
  { a: 'Operator8', count: 7, b: 'Operator6', c: 'Operator5' },
  { a: 'Operator8', count: 8, b: 'Operator6', c: 'Operator4' },
  { a: 'Operator', b: 'Operator8', count: 9, c: 'Operator5' },
  { a: 'Operator1', count: 10, b: 'Operator4', c: 'Operator6' },
  { a: 'Operator1', count: 11, b: 'Operator5', c: 'Operator6' }
]
const buffer = await createReport({
    template: content,
    data: {        
        rosterA        
    }
});
fs.writeFileSync("output.docx",buffer);

模板截图

模板截图

解决方法

要实现每条数据生成单独一页的表格,需在Word模板中结合docx-templates的循环标签与分页设置,步骤如下:

  1. 修改Word模板

    • 打开模板文件,在表格开头位置插入循环起始标签 {#rosterA},在表格末尾之后插入分页符(Word操作路径:「插入」→「分页」),再在分页符后方插入循环结束标签 {/rosterA}。
    • 注:此方式会在最后一条数据后生成空白页,若需避免可使用条件标签优化。
  2. 优化分页(可选)
    在模板中把分页符替换为带条件判断的内容:

    {^if index !== rosterA.length - 1}
    [此处插入分页符]
    {/if}
    

    其中index是docx-templates循环时的内置变量,代表当前数据项的索引,通过判断是否为最后一条数据,避免生成多余空白页。

  3. 重新生成文档
    保存修改后的模板,运行原有代码即可生成每条数据单独占一页的Word文件。


内容的提问来源于stack exchange,提问作者The KNVB

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 23:53:14