前端利用JSZipUtils将前端状态数据填入word模板中的
public文件夹下存入模板文件
"file-saver": "^2.0.5", "jszip-utils": "^0.1.0", "pizzip": "^3.1.4", "docxtemplater": "^3.42.7",
<template> <div> </div> </template> <script setup> import {reactive, defineExpose} from 'vue' import Docxtemplater from 'docxtemplater'; import JSZip from 'jszip'; import JSZipUtils from 'jszip-utils'; import { saveAs } from 'file-saver'; const state = reactive({ exportData: null, // 导出的word数据 fileTemplate: '', // public下存放的word模板名称 fileName: '' // 输出文件名 }) const exportWord = () => { console.log('output-> word导出', ) let targetFileName = '' if(state.fileTemplate === 'xxx') { targetFileName = 'zxdc' } if(state.fileTemplate === 'xxx') { targetFileName = 'sjdc' } if(state.fileTemplate === 'xxx') { targetFileName = 'tshc' } if(state.fileTemplate === 'xxx') { targetFileName = 'szdc' } if(state.fileTemplate === 'xxx') { targetFileName = 'xcdc' } if(state.fileTemplate === 'xxx') { targetFileName = 'spdc' } if(state.fileTemplate === 'xxx') { targetFileName = 'jqwh' } // 读取并获得模板文件的二进制内容 JSZipUtils.getBinaryContent(`${targetFileName}.docx`, (error, content) => { // 抛出异常 if (error) throw error; // 创建一个JSZip实例,内容为模板的内容 let zip = new JSZip(content); // 创建并加载docxtemplater实例对象 let doc = new Docxtemplater(); doc.loadZip(zip); // 设置模板变量的值 doc.setData({ ...state.exportData }); 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, state.fileName + '.docx'); }); } defineExpose( { exportWord, state } ) </script>
学而不思则罔,思而不学则殆!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具
2023-03-27 Vue3综合使用案例
2023-03-27 Vue3中的Vuex
2023-03-27 defineExpose(父拿子方法)
2023-03-27 defineEmits传值(子传父)
2023-03-27 defineProps传参(父传子)