vue element ui 导出word文件方法
1首先安装导出word需要的依赖
-- 安装 docxtemplater
npm install docxtemplater pizzip --save
-- 安装 jszip-utils
npm install jszip-utils --save
-- 安装 jszip
npm install jszip --save
-- 安装 FileSaver
npm install file-saver --save
2.然后在需要导入的页面引入
import docxtemplater from 'docxtemplater'
import PizZip from 'pizzip'
import JSZipUtils from 'jszip-utils'
import {saveAs} from 'file-saver'
3.需要准备一个word模板文件(按自己所需格式),放到项目public文件夹下,如图所示:
4.前端页面部分如图
代码如下
-
<div class="home-css">
-
<el-button style="margin: 20px" type="success" size="large" @click="outword"
-
>导出申请表</el-button
-
>
-
<el-card class="el-card-css">
-
<div style="display: flex; align-items: center; margin-top: 20px">
-
<span>所在部门:</span>
-
<el-input v-model="organ" placeholder="" clearable class="input" />
-
<span>姓名:</span>
-
<el-input v-model="name" placeholder="" clearable class="input" />
-
<span>性别:</span>
-
<el-input v-model="gender" placeholder="" clearable class="input" />
-
</div>
-
<div style="display: flex; align-items: center; margin-top: 20px">
-
<span>年龄:</span>
-
<el-input v-model="age" placeholder="" clearable class="input" />
-
<span>出差天数:</span>
-
<el-input v-model="days" placeholder="" clearable class="input" />
-
<span>职务:</span>
-
<el-input v-model="worker" placeholder="" clearable class="input" />
-
</div>
-
-
<div style="display: flex; align-items: center; margin-top: 20px">
-
<span>时间:</span>
-
<el-input v-model="date" placeholder="" clearable class="input" />
-
</div>
-
-
<div style="display: flex; align-items: center; margin-top: 20px">
-
<span>工作详情:</span>
-
<el-input
-
v-model="work"
-
maxlength="90"
-
show-word-limit
-
type="textarea"
-
style="width: 500px; margin-left: 20px"
-
/>
-
</div>
-
</el-card>
-
</div>
data数据如下
-
organ: '',
-
name: '',
-
gender: '',
-
age: '',
-
days: '',
-
worker: '',
-
date: '',
-
work: '',
-
-
wordData: {
-
title: '出差申请表',
-
organ: '',
-
name: '',
-
gender: '',
-
age: '',
-
days: '',
-
worker: '',
-
date: '',
-
work: ''
-
},
点击导出方法事件如下
-
outword () {
-
this.wordData.organ = this.organ
-
this.wordData.name = this.name
-
this.wordData.gender = this.gender
-
this.wordData.age = this.age
-
this.wordData.days = this.days
-
this.wordData.worker = this.worker
-
this.wordData.date = this.date
-
this.wordData.why = this.why
-
-
const that = this
-
const word = '/出差申请表.docx'
-
const wordname = '出差申请表.docx'
-
JSZipUtils.getBinaryContent(word, function (error, content) {
-
if (error) {
-
throw error
-
}
-
const zip = new PizZip(content)
-
const doc = new Docxtemplater().loadZip(zip)
-
doc.setData({
-
...that.wordData
-
})
-
-
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
-
}
-
const out = doc.getZip().generate({
-
type: 'blob',
-
mimeType: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'
-
})
-
saveAs(out, wordname)
-
})
-
},
5.注意word文件格式一定要以.docx结尾,文件名一定要对应上,不然会报错,报错的话就看引入的word文件
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhgfhihk
系列文章
更多
同类精品
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
怎样阻止微信小程序自动打开
PHP中文网 06-13 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01