docxtemplater、pizzip、jszip-utils、file-saver 前端实现导出word

article/2025/10/4 8:40:59

一、准备工作

1、插件安装:

npm i docxtemplater pizzip jszip-utils file-saver -S

2、安装完成:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Iu1VJ6mQ-1653906589782)(C:\Users\huawei\AppData\Roaming\Typora\typora-user-images\image-20220530160346164.png)]

3、导出的模板文件。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OTjBDoVS-1653906589784)(C:\Users\huawei\AppData\Roaming\Typora\typora-user-images\image-20220530161012157.png)]

我这里是将其命名word-export.docx,并将其放在public/docxs目录下,如图所示:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-trHu6cWE-1653906589785)(C:\Users\huawei\AppData\Roaming\Typora\typora-user-images\image-20220530173756156.png)]

二、实现代码

页面使用:

<template><div><el-button type="primary" size="mini" @click="exportWord">导出word</el-button><div style="margin: 20px 10px; width: 500px">使用 JSON 数据格式作为输入,可以处理docx 和 ppt模板。不像一些其它的工具,比如 docx.js, docx4j, python-docx 等,需要自己编写代码来生成文件,docxtemplater只需要用户通过标签的形式编写模板,就可以生成文件。</div></div>
</template>
<script>
import docxtemplater from 'docxtemplater'
import PizZip from 'pizzip'
import JSZipUtils from 'jszip-utils'
import { saveAs } from 'file-saver'export default {data() {return {}},mounted() {},methods: {// 导出wordexportWord() {const docTitle = "测试报表"// 读取并获得模板文件的二进制内容JSZipUtils.getBinaryContent('./docxs/word-export.docx', function(error,content) {// model.docx是模板。我们在导出的时候,会根据此模板来导出对应的数据// 抛出异常if (error) {throw error}// 创建一个PizZip实例,内容为模板的内容const zip = new PizZip(content)// 创建并加载docxtemplater实例对象// eslint-disable-next-line new-capconst doc = new docxtemplater().loadZip(zip)// 设置模板变量的值doc.setData({year: '2022',month: '05',JSON: 'json',ex: 'docx.js, docx4j, python-docx'})try {// 用模板变量的值替换所有模板变量doc.render()} catch (error) {// 抛出异常const e = {message: error.message,name: error.name,stack: error.stack,properties: error.properties}console.log(JSON.stringify({ error: e }))throw error}// 生成一个代表docxtemplater对象的zip文件(不是一个真实的文件,而是在内存中的表示)const out = doc.getZip().generate({type: 'blob',mimeType:'application/vnd.openxmlformats-officedocument.wordprocessingml.document'})// 将目标文件对象保存为目标类型的文件,并命名,这里可以使用.doc,也可以使用.docx,但.doc兼容性也好一些,所以就采用了.docsaveAs(out, `${docTitle}.doc`)})}}
}
</script>

方法封装:

将该功能封装为一个mixin,取名export-word.js

import docxtemplater from 'docxtemplater'
import PizZip from 'pizzip'
import JSZipUtils from 'jszip-utils'
import { saveAs } from 'file-saver'export default {methods: {// 点击导出wordexportWord(data,docTitle = '内部质量保证体系行政管理人员自我诊断与改进登记表') {// let that = this;// 读取并获得模板文件的二进制内容JSZipUtils.getBinaryContent('/docxs/world-export.docx', function(error,content) {// model.docx是模板。我们在导出的时候,会根据此模板来导出对应的数据// 抛出异常if (error) {throw error}// 创建一个PizZip实例,内容为模板的内容const zip = new PizZip(content)// 创建并加载docxtemplater实例对象// eslint-disable-next-line new-capconst doc = new docxtemplater().loadZip(zip)// 设置模板变量的值doc.setData({...data})try {// 用模板变量的值替换所有模板变量doc.render()} catch (error) {// 抛出异常const e = {message: error.message,name: error.name,stack: error.stack,properties: error.properties}console.log(JSON.stringify({ error: e }))throw error}// 生成一个代表docxtemplater对象的zip文件(不是一个真实的文件,而是在内存中的表示)const out = doc.getZip().generate({type: 'blob',mimeType:'application/vnd.openxmlformats-officedocument.wordprocessingml.document'})// 将目标文件对象保存为目标类型的文件,并命名,这里可以使用.doc,也可以使用.docx,但.doc兼容性也好一些,所以就采用了.docsaveAs(out, `${docTitle}.doc`)})}}
}

页面使用:

import exportWordMixin from '@/mixins/export-word'export default {mixins: [exportWordMixin],data() {return {}},mounted() {},methods: {const data = {year: '2022',month: '05',JSON: 'json',ex: 'docx.js, docx4j, python-docx'}this.exportWord(data);}
}

导出效果:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-16yCpEE1-1653906589786)(C:\Users\huawei\AppData\Roaming\Typora\typora-user-images\image-20220530173324048.png)]


http://chatgpt.dhexx.cn/article/TK1NrTcu.shtml

相关文章

【sduoj】前端JSZip库的使用

2021SCSDUSC 文章目录 JSZIP安装使用引入实例化读取zip文件读取压缩包中的文件遍历压缩包内的所有文件&#xff08;单层&#xff09; 小结 JSZIP JSZip是一个用于创建、读取和编辑.zip文件的javascript库&#xff0c;具有好用而简单的 API。 安装 在sduoj项目中&#xff0c…

zipJS 前端压缩使用

前端在处理文件时&#xff0c;对于大文件或者多个文件上传、下载、编辑&#xff0c;直接使用原文件不方便&#xff0c;最近使用一个可以前端中处理 zip 文件的库&#xff0c;JSzip&#xff0c;主要功能&#xff1a;前端中压缩、解压缩、编辑zip文件。 在 nodeJS 中&#xff0…

一篇文章介绍JSZip预览压缩包中的文件

安装依赖 npm i jszip 前提准备 准备好一个压缩包&#xff0c;格式为zip&#xff0c;存放两张png图片。 代码实现 <template><h1>JSZip,预览压缩包中的文件</h1><img v-for"(n,m) in picArr.arr":src"n":style"{width:200px}&qu…

VUE+jszip实现下载多个文件导出为一个zip格式

项目需求&#xff1a;将多个文件/图片导出为一个zip格式压缩包&#xff0c;点击<下载全部附件>按钮下载上面三个文件 1、安装jszip和file-saver插件 npm install jszip npm install file-saver2、在所需页面引入 import JSZip from "jszip";import FileSaver …

前端js使用jszip实现文件压缩功能

一、jszip下载 1、github下载地址&#xff1a;https://github.com/Stuk/jszip 2、下载成功后解压&#xff0c;js插件在dist目录里 二、引入jszip插件 <script type"text/javascript" src"./jszip.min.js"></script> 三、使用jszip对文件进…

JSZip 的简单介绍

1、前言 前端处理一些批量文件或者图片时候&#xff0c;通过使用异步上传&#xff0c;减少表单一次性提交的的数据量。但是图片或者文件有删除的时候&#xff0c;服务器上真实的图片不容易删除。找了一些资料发些了JSZip这个技术&#xff0c;可以将文件或者图片打包成一个Zip文…

vue前端下载——jszip压缩和解压,结合file-saver导出图片zip,每20个图片分一个目录

使用jszip和file-saver导出图片&#xff0c;并打包为zip&#xff1a; import JSZip from "jszip"; import FileSaver from "file-saver"; 一&#xff0c;jszip解压缩 使用loadAsync&#xff0c;zipFile为压缩包&#xff0c;下面的例子表示读取zip中的resul…

Nginx工作原理和优化总结。

NGINX以高性能的负载均衡器&#xff0c;缓存&#xff0c;和web服务器闻名&#xff0c;驱动了全球超过 40% 最繁忙的网站。在大多数场景下&#xff0c;默认的 NGINX 和 Linux 设置可以很好的工作&#xff0c;但要达到最佳性能&#xff0c;有些时候必须做些调整。首先我们先了解其…

Nginx详细原理

1、Nginx高可用版原理 nginx采用主从架构&#xff0c;客户端发送请求给master&#xff0c;然后由master下发任务到worker实现。 2、nginx任务分配机制(worker工作机制) nginx中master和woker进程之间使用的不是一种轮询的方式而是争抢机制&#xff0c;由于worker不支持java语言…

nginx的工作原理及配置

nginx的工作原理及配置 nginx的模块与工作原理 nginx由内核和模块组成。其中&#xff0c;内核的设计非常微小和简洁&#xff0c;完成的工作也非常简单&#xff0c;仅仅通过查找配置文件将客户端请求映射到一个location block&#xff08;location是nginx配置中的一个指令&…

服务器 启动多个nginx_Nginx工作原理和优化总结

NGINX以高性能的负载均衡器,缓存,和web服务器闻名,驱动了全球超过 40% 最繁忙的网站。 在大多数场景下,默认的 NGINX 和 Linux 设置可以很好的工作,但要达到最佳性能,有些时候必须做些调整。首先我们先了解其工作原理。 一、Nginx的模块与工作原理 Nginx由内核和模块组成…

Nginx工作原理及基本使用

Nginx工作原理 Nginx默认采用多进程工作方式&#xff0c;Nginx启动后&#xff0c;会运行一个master进程和多个worker进程。其中master充当整个进程组与用户的交互接口&#xff0c;同时对进程进行监护&#xff0c;管理worker进程来实现重启服务、平滑升级、更换日志文件、配置文…

Nginx系列一:Nginx介绍与Nginx工作原理分析

一&#xff1a;Nginx概述 Nginx ("engine x") 是一个高性能的轻量级的 HTTP 和反向代理、负载平衡web服务器。 nginx 的并发能力在同类型的网页服务器中表现较好市场占用率很高&#xff0c;中国大陆使用 nginx网站用户有&#xff1a;百度、京东、新浪、网易、腾讯、…

透彻!Ingress-nginx工作原理和实践,这操作可以吧

本文记录/分享 目前项目的 K8s 部署结构和请求追踪改造方案 这个图算是一个通用的前后端分离的 k8s 部署结构: Nginx Ingress 负责暴露服务(nginx前端静态资源服务)&#xff0c; 根据十二要素应用的原 则&#xff0c;将后端 api 作为 nginx 服务的附加动态资源。 Ingress vs I…

nginx的工作原理与nginx的配置

1、nginx的工作原理 nginx的模块直接被编译进nginx&#xff0c;因此属于静态编译方式。 启动nginx后&#xff0c;nginx的模块被自动加载&#xff0c;与Apache不一样&#xff0c;首先将模块编译为一个so文件&#xff0c;然后在配置文件中指定是否进行加载。 在解析配置文件时&am…

详解Nginx的核心原理

Nginx的核心原理 本节为大家介绍Nginx的核心原理&#xff0c;包含Reactor模型、Nginx的模块化设计、Nginx的请求处理阶段。 虽然本节的知识有一定的理论深度&#xff0c;但是与另一个有名的Java底层通信框架Netty在原理上有很多相似的地方。如果大家了解Netty的原理和Reactor…

nginx工作原理、配置以及web服务器的资源请求过程

nginx工作原理、配置以及web服务器的资源请求过程 1. nginx简介2. nginx的特性与优点2.1 nginx的特性2.2 nginx的优点2.3 nginx工作原理2.4 Nginx的模块从功能上分为如下三类&#xff1a; 3. nginx进程架构4. web服务器请求资源的过程5. nginx的配置6. nginx的安装与配置6.1 ng…

Nginx(1)— Nginx工作原理

Nginx的模块与工作原理 Nginx由内核和模块组成&#xff0c;其中&#xff0c;内核的设计非常微小和简洁&#xff0c;完成的工作也非常简单&#xff0c;仅仅通过查找配置文件将客户端请求映射到一个location block&#xff08;location是Nginx配置中的一个指令&#xff0c;用于U…

nginx工作原理与配置

nginx工作原理与配置 文章目录 nginx工作原理与配置nginx的模块与工作原理nginx的模块分类nginx的工作原理 nginx的安装与配置nginx安装nginx配置 nginx的配置文件详解nginx.conf配置详解用于调试、定位问题的配置参数https配置基于用户认证开启状态界面URLURL - 统一资源定位器…

Nginx工作原理和优化、漏洞

1. Nginx的模块与工作原理 Nginx由内核和模块组成&#xff0c;其中&#xff0c;内核的设计非常微小和简洁&#xff0c;完成的工作也非常简单&#xff0c;仅仅通过查找配置文件将客户端请求映射到一个location block&#xff08;location是Nginx配置中的一个指令&#xff0c;用…