其实好多文章都有介绍 我这里就把自己遇到的一个奇葩问题记录一下:
归根结底就是不要直接通过改变文件后缀名来企图创建一个word.docx文件;

首先

-- 安装 docxtemplater
npm install docxtemplater pizzip  --save-- 安装 jszip-utils
npm install jszip-utils --save -- 安装 jszip
npm install jszip --save-- 安装 FileSaver
npm install file-saver --save

封装组件

import docxtemplater from "docxtemplater";
import PizZip from "pizzip";
import JSZipUtils from "jszip-utils";
import { saveAs } from "file-saver";
// 点击导出word
export const exportWord = (data = {name: "佚名",},docPath = "/model.docx"
) => {// 读取并获得模板文件的二进制内容JSZipUtils.getBinaryContent(docPath, function(error, content) {// model.docx是模板。我们在导出的时候,会根据此模板来导出对应的数据// 抛出异常if (error) {throw error;}// 创建一个PizZip实例,内容为模板的内容let zip = new PizZip(content);// 创建并加载docxtemplater实例对象let doc = new docxtemplater().loadZip(zip);// 设置模板变量的值//set the templateVariablesdoc.setData(data);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, "授权文件.docx");});
};

vue-cli 3.0以上将docx文件放到public中

// 调用的话/*** 导出doc方法*/// param = {// name: '好'// }exportWordFun(param) {exportWord(param,`/model_${param}.docx`);},

效果:

切记两点:

  1. docx文件放到public(vue-cli2.0放到static文件夹下),路径采用‘/model.docx’形式
  2. docx文件 不要通过更改后缀名来创建,正儿八经建一个。

Vue-纯前端导出word文档 Can‘t find end of central directory:is this a zip file?相关推荐

  1. 纯前端导出word文档

    实现这个功能时参考了两处文档,但是都有兼容性问题一个是不兼容ie,一个是只能在ie中使用,不过正好互补了,下面是结合两处文档之后的.(摘自想要飞翔的小猪和iteye_10362的博客.) 注意:Act ...

  2. vue前端html页面导出word文件,Vue-纯前端导出word文档

    在项目中,我们可以借助后端返回文件流实现文件下载.如果前端有数据,也可以借助前端框架进行下载.本文将介绍如何在前端纯js实现word文档导出. 1. 组件介绍 要实现前端纯js导出word文档,我们需 ...

  3. 「Vue To Words」 - 教你在Vue项目中导出Word文档(包含表格合并,图片修改大小)

    前言:最近在项目中遇到了,vue页面需要导出word文档,今日就进行记录一下,如有不对的地方,还请见谅 ^^ 简单说一下需求:需要导出的页面是表格页面,因为包含表格的嵌套和合并,其实最主要的就是导出页 ...

  4. Vue导出word附表部分横向显示(承接上一篇Vue纯前端导出word)

    Vue纯前端导出word直通车 1. 引入js import htmlDocx from "@/utils/html-docx"; 2. page-break-before:alw ...

  5. vue项目+element表格前端使用纯js导出word文档

    详细请读https://www.jianshu.com/p/0de31429b12a这篇文章 首先安装各种工具: -- 安装 docxtemplater cnpm install docxtempla ...

  6. 纯前端导出word、pdf、excel、txt、svg文档方法与技巧(附带问题总结)

    文章目录 导出pdf **实现思路:** **问题总结:** **具体代码** **封装好的导出函数,记得引入js插件** 封装方法一: 封装方法二: 封装方法三: 纯前端导出word文档方法与技巧 ...

  7. vue element ui 利用xslx导出文档表格功能(纯前端导出下载文档)

    目录 前言 步骤: 1.下载xslx 2.导入xslx 3.template中给个点击事件 4.methods中定义函数实现导出 前言 本篇文章记录纯前端导出下载文档功能. 若想查看从后端接收文件流, ...

  8. vue 生产word_nodejs(officegen)+vue(axios)在客户端导出word文档

    前言 我的项目中有一个需求:点击按钮生成可编辑的word文档订单详情的信息 我使用的前端框架是Vue.js.后台使用的是node.js node.js生成和导出word文档我参考的是下面这两篇文章,写 ...

  9. vue实现导出word文档(含多张图片)

    一.实现效果  以填写并导出房屋出租审批表为例,首先填写表格相应内容后,点击" 导出 "按钮实现word文档的导出功能,界面如下所示: 最后导出word文档如下所示: 二.所需插件 ...

最新文章

  1. 通过Java代码实现图片的放大和缩小
  2. mysql主键始终从小到大_Mysql从入门到入神之(四)B+树索引
  3. 更新源列表及设置方法
  4. ESXI转HYPER-V,问题接二连三啊(VMDK转VHD)
  5. C++11中的右值引用
  6. 去除桌面图标的小箭头
  7. 肖仰华 | 知识图谱落地的基本原则与最佳实践
  8. RCD:Residual Current Device,剩余电流装置
  9. 有jar包直接加密tcp请求报文_netty(十六)报文加密
  10. 计算机科学与技术学了会秃头吗,计算机科学与技术vs 信息与计算科学,秃头专业了解一下?...
  11. 9. explain
  12. ie8无法打开oracle em,IE8无法进入debug模式而引发的Oracle数据库问题-Oracle
  13. ubuntu 1604 安装 rabbitvcs
  14. flink的流处理的source
  15. 14个令人惊叹的Ionic应用程序模板
  16. 视频监控系统中H.265、SVAC、GB/T28181、ONVIF、PSIA有什么区别?
  17. Raspberry Pi 3 Model B入手安装小记
  18. python程序段的基本结构_python3 第三章 - 程序的基本结构
  19. 解决数组转对象后,key自动排序
  20. 远程服务器访问 JupyterLab

热门文章

  1. 第14节:lstm原理及numpy
  2. java网课|面向对象的思想
  3. golang数据结构_Go数据结构的完整指南
  4. P1:选 7-15 群发邮件
  5. 笔记本电脑的应用、维护、采购全攻略
  6. 键盘 Key Code对照表
  7. sonarqube+sonar-scanner+jenkins安装配置及使用
  8. 【无标题】换向阀故障判断与维修
  9. 基于Autoware制作高精地图(二)
  10. python二维数组求和_Python如何对二维数组求和