前端 Word 模板参入特定数据 并且下载

要将特定数据插入到现有的 Word 模板中并进行下载,可以使用 Pizzipdocxtemplater 库。这两个库结合起来可以让你方便地将数据插入到 .docx 模板中。以下是详细步骤:

1. 安装所需库

bash 复制代码
npm install pizzip docxtemplater file-saver

2. 准备 Word 模板

创建一个 .docx 文件作为模板,例如 template.docx。在模板中,可以使用类似 {name}{age} 这样的占位符表示需要替换的数据。

3. 编写代码将数据插入模板并下载

javascript 复制代码
import PizZip from "pizzip";
import Docxtemplater from "docxtemplater";
import { saveAs } from "file-saver";

// 加载文件的方法
const loadFile = async (url) => {
  const response = await fetch(url);
  const arrayBuffer = await response.arrayBuffer();
  return arrayBuffer;
};

// 将数据插入到模板并生成文件
const generateDocument = async () => {
  try {
    // 1. 加载模板文件
    const content = await loadFile("/path/to/template.docx"); // 替换成模板文件的路径

    // 2. 创建PizZip实例
    const zip = new PizZip(content);

    // 3. 创建docxtemplater实例
    const doc = new Docxtemplater(zip, {
      paragraphLoop: true,
      linebreaks: true,
    });

    // 4. 设置要插入的数据
    doc.setData({
      name: "张三",
      age: 28,
      job: "前端开发工程师",
    });

    // 5. 替换模板中的占位符
    doc.render();

    // 6. 生成文档并下载
    const out = doc.getZip().generate({
      type: "blob",
      mimeType:
        "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
    });

    saveAs(out, "filled_template.docx");
  } catch (error) {
    console.error("生成文档出错: ", error);
  }
};

// 调用生成文档的函数
generateDocument();

4. 使用注意事项

  • template.docx 文件放置在可通过 URL 访问的位置(例如项目的 public 文件夹)或者自己指定的路径。
  • 在模板文件中使用 {} 包含占位符,例如:{name}{age} 等。

这样,运行时程序会将数据插入到模板中的对应位置,并生成并下载填充后的 Word 文件。

相关推荐
passerby606118 分钟前
完成前端时间处理的另一块版图
前端·github·web components
掘了25 分钟前
「2025 年终总结」在所有失去的人中,我最怀念我自己
前端·后端·年终总结
崔庆才丨静觅28 分钟前
实用免费的 Short URL 短链接 API 对接说明
前端
崔庆才丨静觅1 小时前
5分钟快速搭建 AI 平台并用它赚钱!
前端
崔庆才丨静觅1 小时前
比官方便宜一半以上!Midjourney API 申请及使用
前端
Moment1 小时前
富文本编辑器在 AI 时代为什么这么受欢迎
前端·javascript·后端
崔庆才丨静觅2 小时前
刷屏全网的“nano-banana”API接入指南!0.1元/张量产高清创意图,开发者必藏
前端
剪刀石头布啊2 小时前
jwt介绍
前端
爱敲代码的小鱼2 小时前
AJAX(异步交互的技术来实现从服务端中获取数据):
前端·javascript·ajax
吹牛不交税2 小时前
admin.net-v2 框架使用笔记-netcore8.0/10.0版
vue.js·.netcore