vue + elementUI 实现表格的打印和下载

ゝ一世哀愁。 2022-10-28 03:54 426阅读 0赞

这篇文章主要介绍前端根据 table 表格里面已有的数据实现的下载功能,不需要调用接口,只是纯前端的一个功能实现;顺便介绍一下打印功能。

1、打印

获取表格数据,调用 window 的 print 方法;打印结束之后刷新页面重新给表格赋值。

  1. <template>
  2. <div>
  3. <el-button @click="printTable">打印表格</el-button>
  4. <el-table id="myTable" :data="tableData">
  5. <el-table-column prop="date" label="日期"></el-table-column>
  6. <el-table-column prop="name" label="姓名"></el-table-column>
  7. <el-table-column prop="address" label="地址"></el-table-column>
  8. </el-table>
  9. </div>
  10. </template>
  11. export default {
  12. data(){
  13. return {
  14. tableData:[{ date:'xxxx',name:'aaaa',address:'ssss'}]
  15. }
  16. },
  17. methods:{
  18. //打印页面内容
  19. printTable(){
  20. let wpt = document.querySelector('#myTable');
  21. let newContent = wpt.innerHTML;
  22. let oldContent = document.body.innerHTML;
  23. document.body.innerHTML = newContent;
  24. window.print(); //打印方法
  25. // window.localtion.reload();
  26. history.go(0)
  27. document.body.innerHTML = oldContent;
  28. }
  29. }
  30. }

在这里插入图片描述

2、下载

需要借助插件 xlsx 和 file-saver ;
安装插件:

  1. //各种电子表格格式的解析器和编写器
  2. npm install xlsx
  3. npm install file-saver --save

实现方法:

  1. <template>
  2. <div>
  3. <el-button @click="downloadExcel">下载表格</el-button>
  4. <el-table id="myTable" :data="tableData">
  5. <el-table-column prop="date" label="日期"></el-table-column>
  6. <el-table-column prop="name" label="姓名"></el-table-column>
  7. <el-table-column prop="address" label="地址"></el-table-column>
  8. </el-table>
  9. </div>
  10. </template>
  11. import FileSaver from 'file-saver';
  12. import XLSX from 'xlsx';
  13. export default {
  14. data(){
  15. return {
  16. tableData:[{ date:'xxxx',name:'aaaa',address:'ssss'}]
  17. }
  18. },
  19. methods:{
  20. //导出Excel
  21. exportToExcel () {
  22. //获取 table 表格数据
  23. let et = XLSX.utils.table_to_book(document.querySelector('#myTable')); //此处传入table的DOM节点
  24. let etout = XLSX.write(et, {
  25. bookType: 'xlsx',
  26. bookSST: true,
  27. type: 'array'
  28. });
  29. try {
  30. FileSaver.saveAs(new Blob([etout], {
  31. type: 'application/octet-stream'
  32. }), 'trade-publish.xlsx'); //trade-publish.xlsx 为导出的文件名
  33. } catch (e) {
  34. console.log(e, etout) ;
  35. }
  36. return etout;
  37. }
  38. }
  39. }

这种方法实现的下载只能下载当前table表格展示的数据;如果有分页,
在这里插入图片描述

发表评论

表情:
评论列表 (有 0 条评论,426人围观)

还没有评论,来说两句吧...

相关阅读

    相关 vue实现excel表格下载

    最近在使用vue-element-admin这个后台管理框架开源模板在做一个管理后台,使用起来其实还挺方便的,大部分的组件源码里面都已经写好了,用的时候只需要把源码拿出来修改修