位置: IT常识 - 正文

vue导出word(vue导出word文档打开报错,内容有问题)

编辑:rootadmin
vue导出word

推荐整理分享vue导出word(vue导出word文档打开报错,内容有问题),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:vue导出word文档,vue导出word包含图表,vue导出word模板换行,vue导出word模板换行,vue导出word包含图表,vue导出word模板换行,vue导出word文档,vue导出word模板,内容如对您有帮助,希望把文章链接给更多的朋友!

最近的项目中,需要把vue中的部分内容导出为word形式,之前没有做过这方面的,特记录,由于是初学,所以整理了此模板,注意:这是一个模板,并不是相关字段的解析,每个字段都是做什么用的,我还不太清楚,以后会慢慢添加自己的理解。

看到的很好的一篇文章,讲的很详细:vue导出word - 知乎

1. 先在项目中安装所需要的依赖包,我安装了六个

npm install file-savernpm install docxtemplaternpm install pizzipnpm install jszip-utilsnpm install angular-expressionsnpm install lodash

 2. 引入核心代码文件  exportBriefDataDocx.js

在组件中引用,我将文件写在根目录下的utils中:

import { ExportBriefDataDocx } from '../utils/exportBriefDataDocx'

文件 exportBriefDataDocx.js中的内容:

import Docxtemplater from 'docxtemplater'import PizZip from 'pizzip'import JSZipUtils from 'jszip-utils'import { saveAs } from 'file-saver'export const ExportBriefDataDocx = (tempDocxPath, data, fileName) => { console.log(tempDocxPath, data, fileName, 111) var expressions = require('angular-expressions') var assign = require('lodash/assign') expressions.filters.lower = function(input) { // This condition should be used to make sure that if your input is // undefined, your output will be undefined as well and will not // throw an error if (!input) return input // toLowerCase() 方法用于把字符串转换为小写。 return input.toLowerCase() } function angularParser(tag) { tag = tag .replace(/^\.$/, 'this') .replace(/(’|‘)/g, "'") .replace(/(“|”)/g, '"') const expr = expressions.compile(tag) return { get: function(scope, context) { let obj = {} const scopeList = context.scopeList const num = context.num for (let i = 0, len = num + 1; i < len; i++) { obj = assign(obj, scopeList[i]) } return expr(scope, obj) } } } JSZipUtils.getBinaryContent(tempDocxPath, (error, content) => { if (error) { console.log(error) } // 创建一个JSZip实例,内容为模板的内容 // let zip = new JSZip(content); //用PizZip替代 const zip = new PizZip(content) // 创建并加载 Docxtemplater 实例对象 const doc = new Docxtemplater(zip, { parser: angularParser }) // 设置模板变量的值 doc.setData(data) try { // 呈现文档,会将内部所有变量替换成值, doc.render() } catch (error) { const e = { message: error.message, name: error.name, stack: error.stack, properties: error.properties } console.log({ error: e }) // 当使用json记录时,此处抛出错误信息 throw error } // 生成一个代表Docxtemplater对象的zip文件(不是一个真实的文件,而是在内存中的表示) const out = doc.getZip().generate({ type: 'blob', mimeType: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document' }) // 将目标文件对象保存为目标类型的文件,并命名 saveAs(out, fileName) })}

3. 然后设计需要导出的word模版,本地新建一个文档,后缀名为.docx。我是将这个文件保存在了根目录下的public中。

我到时候要传入模板中的数据是this.docxData,所以将所有的数据都保存在this.docxData中,例如:它有三个字段:数组tableData、数字year、数字month,如下:

vue导出word(vue导出word文档打开报错,内容有问题)

tableData :

tableData: [{ date: '2016-05-02', name: '王小虎', address: '上海市普陀区金沙江路 1518 弄' }, { date: '2016-05-04', name: '王小虎', address: '上海市普陀区金沙江路 1517 弄' }, { date: '2016-05-01', name: '王小虎', address: '上海市普陀区金沙江路 1519 弄' }, { date: '2016-05-03', name: '王小虎', address: '上海市普陀区金沙江路 1516 弄' }]

 docxData :

this.docxData.tableData = this.tableDatathis.docxData.year = 2022this.docxData.month = 9

 这是模板文档中的内容:

文档注意事项:

1)模板文件必须是docx文件。doc文件不能通过修改后缀名变为docx,必须另存时选择docx类型,才能实现类型转变。 2)使用英文下的花括号; 3)花括号内的键名前后不要有空格,且它与程序中的data对象的键名必须保持一致 ; 4)表格中想要循环添加的数据,需要在开头添加{#键名},在结尾处添加{/键名},一般对应的就是需要循环的数组名称。 5)图片居中不要使用{%%image2}

6)做判断的话,以{#键名}开头,以{/}结尾

4. 触发导出事件

methods: { // 导出docx exportDocx() { console.log('导出'); this.docxData.tableData = this.tableData this.docxData.year = 2022 this.docxData.month = 9 // ExportBriefDataDocx 是我导入的一个文件,里边写的是导出文本的核心代码 ExportBriefDataDocx('模板文件', 要传入模板的数据, '文档名字.docx') // ExportBriefDataDocx('/text.docx', this.docxData, '文档导出.docx') // text.docx放在了根目录下的public文件夹下 } }

效果图:

附上完整的组件部分的代码:

ExportDocx.vue:

<template> <div class="docx"> <el-button @click="exportDocx">导出</el-button> <h2>{{2022}}年{{9}}月</h2> <el-table :data="tableData" border style="width: 100%"> <el-table-column prop="date" label="日期" width="180"> </el-table-column> <el-table-column prop="name" label="姓名" width="180"> </el-table-column> <el-table-column prop="address" label="地址"> </el-table-column> </el-table> </div></template><script>import { ExportBriefDataDocx } from '../utils/exportBriefDataDocx'export default { name: "Docx", data() { return { tableData: [{ date: '2016-05-02', name: '王小虎', address: '上海市普陀区金沙江路 1518 弄' }, { date: '2016-05-04', name: '王小虎', address: '上海市普陀区金沙江路 1517 弄' }, { date: '2016-05-01', name: '王小虎', address: '上海市普陀区金沙江路 1519 弄' }, { date: '2016-05-03', name: '王小虎', address: '上海市普陀区金沙江路 1516 弄' }], docxData:{} } }, methods: { // 导出docx exportDocx() { console.log('导出'); this.docxData.tableData = this.tableData this.docxData.year = 2022 this.docxData.month = 9 ExportBriefDataDocx('/text.docx', this.docxData, '文档导出.docx') } },}</script><style scoped></style>
本文链接地址:https://www.jiuchutong.com/zhishi/292365.html 转载请保留说明!

上一篇:vue设置cookie和路由守卫(vue set-cookie)

下一篇:css实现轮播图(css实现轮播图侧边阴影效果)

  • 一加手机电量百分比怎么设置(一加手机电量百分比在哪)

    一加手机电量百分比怎么设置(一加手机电量百分比在哪)

  • 云上贵州怎么取消自动续费(云上贵州扣款怎样退)

    云上贵州怎么取消自动续费(云上贵州扣款怎样退)

  • 腾讯会议怎么打开麦克风(腾讯会议怎么打开视频摄像头)

    腾讯会议怎么打开麦克风(腾讯会议怎么打开视频摄像头)

  • 影响电脑运行速度的因素(影响电脑运行速度的是内存还是硬盘)

    影响电脑运行速度的因素(影响电脑运行速度的是内存还是硬盘)

  • snkrs退款一般多久能到(snkrs退货后钱多会到账)

    snkrs退款一般多久能到(snkrs退货后钱多会到账)

  • 苹果se2系统是ios多少(苹果se2是ios几)

    苹果se2系统是ios多少(苹果se2是ios几)

  • 抖音消息已送达对方看了吗(抖音消息已送达是看了还是没看)

    抖音消息已送达对方看了吗(抖音消息已送达是看了还是没看)

  • 微信群待办其他人能看到吗(微信的群待办好烦)

    微信群待办其他人能看到吗(微信的群待办好烦)

  • 怎么屏蔽微信朋友圈(怎么屏蔽微信朋友圈的推广广告)

    怎么屏蔽微信朋友圈(怎么屏蔽微信朋友圈的推广广告)

  • 手机视频没有声音怎么解决(手机视频没有声音怎么调回来)

    手机视频没有声音怎么解决(手机视频没有声音怎么调回来)

  • was一tl10是华为什么型号(华为wlzal10是啥手机)

    was一tl10是华为什么型号(华为wlzal10是啥手机)

  • 2个苹果手机怎么来电话都响(2个苹果手机怎么传照片)

    2个苹果手机怎么来电话都响(2个苹果手机怎么传照片)

  • 至强e31230v3相当于i几(至强e31230v3相当于i3几代)

    至强e31230v3相当于i几(至强e31230v3相当于i3几代)

  • 微控制器由什么组成(微控制器包括)

    微控制器由什么组成(微控制器包括)

  • 文字竖排版时数字怎么写(文字竖版排列)

    文字竖排版时数字怎么写(文字竖版排列)

  • 苹果手机怎么关闭自拍镜像(苹果手机怎么关机)

    苹果手机怎么关闭自拍镜像(苹果手机怎么关机)

  • 手机APP开发有什么要求(手机app开发有什么用)

    手机APP开发有什么要求(手机app开发有什么用)

  • ps补光快捷键(p图局部补光)

    ps补光快捷键(p图局部补光)

  • ppt超级链接作用(ppt2010超级链接)

    ppt超级链接作用(ppt2010超级链接)

  • 智慧团建账号密码是什么(智慧团建账号密码是啥)

    智慧团建账号密码是什么(智慧团建账号密码是啥)

  • 怎么在演示文稿中创建一个演示方案(怎么在演示文稿上打字)

    怎么在演示文稿中创建一个演示方案(怎么在演示文稿上打字)

  • 全民K歌怎么上传本地录音(全民k歌怎么上传照片)

    全民K歌怎么上传本地录音(全民k歌怎么上传照片)

  • rdd的特点(rdd的特点有哪些)

    rdd的特点(rdd的特点有哪些)

  • vue2.0运行导入的项目出现node:events:491 throw er; // Unhandled ‘error‘ event错误提示解决办法(如何在vue项目中导入外部的包)

    vue2.0运行导入的项目出现node:events:491 throw er; // Unhandled ‘error‘ event错误提示解决办法(如何在vue项目中导入外部的包)

  • mysql外键约束的作用(mysql数据库外键约束怎么写)

    mysql外键约束的作用(mysql数据库外键约束怎么写)

  • 收到个税返还手续费怎么算增值税附加
  • 节税是什么意思
  • 企业在异地设立的办事处撤销了,人员咋办
  • 去年的成本如何调整汇算清缴额
  • 加工企业怎么记账
  • 金蝶销售订单和采购订单关联
  • 公司帮其他单位开发票违法吗
  • 增值税专用发票和普通发票的区别
  • 材料委托加工
  • 货到票未到怎么入账
  • 工会发放节日慰问
  • 股权转让时资本怎么算
  • 事业单位去年的年假今年可以休吗
  • 工程发票的备注栏
  • 只要有收入就要交印花税吗
  • 高新技术企业必须要有研发费用吗
  • 产品质量认证的基本条件有哪些
  • 外购集体福利用交税吗
  • 退休职工费用哪里列支
  • 持有至到期投资账务处理
  • 电信猫光信号灯不亮
  • 对公账户被诈骗转款728000会怎么样呢
  • 交罚金怎么交
  • win7为什么那么好用
  • 商标注册费用
  • 劳务公司开具劳务费发票
  • 公寓收费标准
  • 小本票防伪
  • win11设置共享文件夹
  • PHP:pcntl_wifsignaled()的用法_PCNTL函数
  • nlp图
  • 买房增值税征收标准
  • 角马群的迁徙方向
  • 加里西亚省
  • 怎么算土地增值税
  • 收回已确认的坏账准备为什么在贷方
  • php大于等于号怎么打
  • php取二维数组的一组内容
  • 公司注销方便吗
  • mkdir命令怎么用
  • 什么发票才能做账务处理
  • php ltrim
  • discuz管理中心进不去
  • 其它应收款的处理程序
  • 出口货物不能退税的账务处理
  • 主营业务收入在哪个报表里面
  • 保险中介手续费规定最新
  • 发工资是用借记卡还是储蓄卡
  • 个体工商户季度超过9万怎么交税
  • 自产用于捐赠的会计处理
  • 公司模具部制作工作内容
  • 上市公司回购股票多久可出售
  • 车间装修预算表
  • 收到季度房租需要分摊吗
  • 工会经费通过应交税费核算吗
  • 出售抵债资产账务处理
  • 长期挂账其他应付款处理
  • 投资性房地产与持有待售资产的区别
  • 购置税 过户
  • 发行股票手续费计入哪里
  • 普通发票采购分录
  • 代理记账许可证查询
  • sql server中查看创建的数据库命令
  • sql嵌套执行顺序
  • mysql主从复制作用
  • centos禁用root
  • 电脑xp系统最大多少g
  • xp管理员账号密码
  • linux小技巧
  • win7开机出现两个系统选项
  • win8升win8.1
  • linux中rpm命令详解
  • eclipse swt教程
  • Js组件开发方式
  • socketio nodejs
  • node.js中express-session配置项详解
  • unity协程的工作原理
  • 安卓手机管家下载
  • java script语言
  • python定制函数
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设