纯前端实现word报告导出功能

公司项目需求:根据用户选择导出word报告,之前考虑使用积木报表,但是大概看了一下文档,发现并不适用于word报告的生成,后来问了一下朋友,他们是使用wps,觉得有点麻烦,于是继续搜索,发现了docxtemplater框架。

传送门:docxtemplater 

技术栈: vue + ant-design-vue

安装依赖包,我使用npm,可根据自己喜好选择

npm i --save docxtemplater

npm i --save  pizzip

npm i --save file-saver

使用过程:

<template>
  <div>
    <a-button @click="exportWord">click</a-button>
  </div>
</template>

<script>
import Docxtemplater from 'docxtemplater'
import PizZip from 'pizzip'
import PizZipUtils from 'pizzip/utils/index.js'
import { saveAs } from 'file-saver'

function loadFile(url, callback) {
  PizZipUtils.getBinaryContent(url, callback)
}

export default {
  name: 'dom',
  components: {},
  props: {},
  data() {
    return {
//模板中所需要的数据
      demoData: {
        district: '地区',
        day: 5,
        section_name: '断面1',
        data: [
          {
            create_date: '2021-10-10',
            section_name: '断面1',

            water_type: 'currency',
            cod: 'cod2',
            ad: 'ad2',
            zl: '200',
            cmon: '200',
          },
          
        ],
      },
    }
  },
  computed: {},
  watch: {},
  created() {},
  mounted() {},
  methods: {
    exportWord() {
      let _this = this
      loadFile('template6.docx', function (error, content) {
        if (error) {
          throw error
        }
        const zip = new PizZip(content)
        const doc = new Docxtemplater(zip, {
          paragraphLoop: true,
          linebreaks: true,
        })

        doc.render(_this.demoData)

        const out = doc.getZip().generate({
          type: 'blob',
          mimeType: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
        })
        saveAs(out, 'output.docx')
      })
    },
  },
}
</script>

<style scoped lang="less">
</style>

以上代码就可以实现纯文字的文档导出,比较简单,很多协调部分都需在模板中改动,目前正在尝试table表格的插入。。。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值