当前位置: 首页 > news >正文

vue若依导出word文件,简单的实现

首先前端导包,注意exportDocx的导包位置要修改成你自己的

import {exportDocx} from '@/utils/docUtil/docutil.js'; 
import {addDays} from 'date-fns';
import {listGongyi} from "@/api/system/detail";

然后新建一个测试按钮

 <el-col :span="1.5"><el-buttontype="warning"plainicon="el-icon-download"size="mini"@click="generateWordDoc">导出</el-button></el-col>

接下来是js文件

    generateWordDoc(row) {const ids = row.id || this.ids;//查找后台数据库封装数据find(ids).then(response => {console.log(response.data)const data = {form: response.data,list: response.data.aaZzcgPurchases}//模板文件位置在public文件夹里exportDocx('/caigoudan.docx', data, `caigoudan.docx`)});}

然后将下面这个docutil.js文件复制到项目中,我是复制在utils/docUtil中

import docxtemplater from 'docxtemplater';
import PizZip from 'pizzip';
import JSZipUtils from 'jszip-utils';
import {saveAs} from 'file-saver';/**导出docx,导出word@param { String } tempDocxPath 模板文件路径@param { Object } data 文件中传入的数据@param { String } fileName 导出文件名称*/
export const exportDocx = (tempDocxPath, data, fileName) => {// 读取并获得模板文件的二进制内容JSZipUtils.getBinaryContent(tempDocxPath, (error, content) => {// input.docx是模板。我们在导出的时候,会根据此模板来导出对应的数据// 抛出异常if (error) {throw error}// 创建一个JSZip实例,内容为模板的内容const zip = new PizZip(content)// 创建并加载docxtemplater实例对象const doc = new docxtemplater().loadZip(zip)// 设置模板变量的值doc.setData({...data.form,list: data.list})try {// render the document (replace all occurences of {first_name} by John, {last_name} by Doe, ...)doc.render()} catch (error) {const e = {message: error.message,name: error.name,stack: error.stack,properties: error.properties}console.log({error: e})// The error thrown here contains additional information when logged with JSON.stringify (it contains a property object).throw error}const out = doc.getZip().generate({type: 'blob',mimeType: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'}) // Output the document using Data-URIsaveAs(out, fileName)})
}

最后新建一个word模板文件,保存的格式要是docx才行哦
例如:
在这里插入图片描述
只要数据是集合,就得是{#list} 开头{/list}结尾
如果还有其他的集合,则自己修改data的值,记得配合修改:(自己研究一下立马就懂了)
另外自己的模板如果不弄页眉页脚的话,第二页是不显示页眉页脚的,所以要注意
在这里插入图片描述

注意,此模板文件必须放在项目中的public文件夹下 !!!

http://www.lryc.cn/news/144307.html

相关文章:

  • 【LeetCode75】第四十题 最大层内元素和
  • 脱离束缚:数字化工厂中ARM控制器的革命性应用!
  • queue ide is not exists in YARN
  • 【C++】UDP通信:客户端向服务端发送消息并接收服务端回应的消息
  • RabbitMq深度学习
  • EasyExcel自定义字段对象转换器支持转换实体和集合实体
  • Linux重置ROOT密码(CentOS)
  • 【Spring】一文带你彻底搞懂IOC、AOP
  • 国际旅游网络的大数据分析(数学建模练习题)
  • 音视频技术开发周刊 | 308
  • 多旋翼飞控底层算法开发系列实验 | 多旋翼动力系统设计实验3
  • Redis之Sentinel(哨兵)机制
  • 加密的PDF文件,如何解密?
  • 【java】获取当前年份
  • 前端面试话术集锦第一篇
  • NeRFMeshing - 精确提取NeRF中的3D网格
  • 后端面试话术集锦第五篇:rabbitmq面试话术
  • Spring Boot(Vue3+ElementPlus+Axios+MyBatisPlus+Spring Boot 前后端分离)【一】
  • vue3之reactive和ref学习篇
  • 【推荐】Spring与Mybatis集成整合
  • listdir, makedirs, shuffle, exists, webdriver.Chrome, roll方法快速查阅
  • java.nio.ByteBuffer 学习笔记
  • 自动化实时在线静电监控系统的构成
  • Windows 转 mac 记录
  • Linux_4_文本处理工具和正则表达式
  • [Unity]VSCode无代码提示
  • 画流程图都可以用哪些工具?
  • Elasticsearch中倒排索引、分词器、DSL语法使用介绍
  • rabbitmq笔记-rabbitmq进阶-数据可靠性,rabbitmq高级特性
  • 【笔记】判断两个String字符串是否相同(考虑字符串为null的情况)