导出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}

相关推荐
DianSan_ERP2 小时前
电商架构演进:如何在高并发场景下实现多平台API的标准化履约?
运维·前端·网络·安全·架构·自动化
殳翰2 小时前
下服务器端开发流程及相关工具介绍(C++)
开发语言·c++
落寞的星星2 小时前
这个对象就包含了已经转换好的DFA和各种词法分析器运转所需要的参数。下一步,我们就可以用ScannerInfo对象创建出Scanner对象,请看下面的代码:
开发语言·c#
nothing&nowhere3 小时前
用 Python 做问卷数据清洗:无效样本检测与处理实战
开发语言·python·数据清洗·数据处理·问卷星·问卷星脚本·刷问卷
2601_961593423 小时前
Rust 开发环境配置繁琐?RustRover 开箱即用搞定编码调试
开发语言·后端·macos·rust
HZZD_HZZD4 小时前
DL/T 645-2026新国标深度解读与智能电表协议适配实战:从帧结构变化到Java采集器升级的全链路改造方案
java·开发语言
碎_浪5 小时前
给键盘党的英语记忆工具:我做了一款「打字背单词」桌面应用
前端·程序员·ai编程
阿成学长_Cain6 小时前
Linux dirs命令详解|Bash目录堆栈管理快速切换目录实战教程
linux·运维·前端·数据库
多加点辣也没关系6 小时前
JavaScript|第4章:类型转换
开发语言·javascript
聪慧的水蜜桃6 小时前
【YFIOs】用C#开发硬件之设备上云
开发语言·c#