导出word模板开发记录

exportWordDocx.js

import JSZipUtils from "jszip-utils"

import Docxtemplater from "docxtemplater"

import {saveAs} from "file-saver"

import PizZip from "pizzip"

复制代码
const exportWordDocx = (demoUrl, docxData, fileName) => {
	// 读取并获得模板文件的二进制内容
	JSZipUtils.getBinaryContent(
		demoUrl,
		function (error, content) {
			// 抛出异常
			if (error) {
				throw error
			}
			
			// 创建一个PizZip实例,内容为模板的内容
			let zip = new PizZip(content)
			// 创建并加载docxtemplater实例对象
			let doc = new Docxtemplater(zip, {
				linebreaks: true,
				nullGetter: function () {
					return ""
				}
			})
			doc.setData({
				...docxData,
			})
			
			try {
				// 用模板变量的值替换所有模板变量
				doc.render()
			} catch (error) {
				// 抛出异常
				let e = {
					message: error.message,
					name: error.name,
					stack: error.stack,
					properties: error.properties,
				}
				// console.log(JSON.stringify({error: e}))
				throw error
			}
			
			// 生成一个代表docxtemplater对象的zip文件(不是一个真实的文件,而是在内存中的表示)
			let out = doc.getZip().generate({
				type: "blob",
				mimeType:
					"application/vnd.openxmlformats-officedocument.wordprocessingml.document",
			})
			// 将目标文件对象保存为目标类型的文件,并命名
			saveAs(out, fileName)
		}
	)
}

export default exportWordDocx

使用:

import exportWordDocx from ".../exportWordDocx"

exportWordDocx(baseUrl + "doc/template2.docx",{

a:'要替换的字段'.b:'要替换的字段2'}, '文件名称.doc')

模板文件template2.docx:

{a}{b}

相关推荐
民乐团扒谱机4 分钟前
【微实验】谐波乘积谱(HPS)算法深度解析:原理、数学与代码实现
开发语言·人工智能·python·算法·语音识别·音乐
报错小能手14 分钟前
Go 语言结构 基础语法
开发语言·后端·golang
Lazionr15 分钟前
stack与queue:底层实现与容器适配器
开发语言·数据结构·c++
张元清36 分钟前
React useLatest Hook:在异步回调里读到最新状态 (2026)
javascript·react.js
Hello_Damon_Nikola38 分钟前
CH573从入门到精通
c语言·开发语言·单片机·嵌入式硬件
Logintern091 小时前
Langgraph使用MemorySaver建立有记忆的图
开发语言·windows·python
CAD老兵1 小时前
让 AI Coding Agent 直接访问 CAD 文档:GitMCP 实战指南
前端·人工智能·github
豆沙沙包?1 小时前
C++~~~vector容器(p31-P40)
开发语言·c++
程序员鱼皮1 小时前
DeepSeek Harness 最新邪修曝光!被吹成核弹的极简模式,真的夯吗?
前端·后端·ai编程
必须会一定会1 小时前
GLM-5.3 迁移实战:强制思考、1M 上下文与官方编程基准
android·开发语言·kotlin