Vue--表格导出excel(导出table表格所有数据)

还是继续前几天那个表格的需求,之前用纯前端做完了分页功能和筛选功能之后,我们再来完善一下一键导出Excel表格功能;
其实iview组件库的table部分也可以调用 exportCsv() 方法,可以将数据导出为 .csv 的表格文件,但是我们日常使用的是Excel .xlsx格式 的表格,因此仍需要用到插件来完成我们的需求。网上相关代码很多,但是目前这个是我见过最好理解方便的处理方式了。

一、 第一步先安装3个依赖包:

 npm install -S file-saver
 npm install -S xlsx
 npm install -D script-loader

觉得下载太慢的话可以安装淘宝镜像,用cnpm下载。

二、在项目中新建一个文件夹(名字自取,这里命名excel),然后在文件夹中放入Blob.js 和 export2Excel.js 两个文件(我把地址贴在这,可以直接下载解压)

链接地址:https://pan.baidu.com/s/1itpx7GqPhp44CWdK-NT5qw
提取码:kzlr

下载解压完建好文件夹就长这样:
在这里插入图片描述
记住路径,待会调用函数的时候需要用到。

三、在你要导出表格的"xxx.vue"页面给按钮绑定点击事件:

<Button type="primary" @click="exportData" style="display:block; margin:5px auto;">导出Excel表格</Button>

<script></script>标签的methods方法中调用下载表格的事件

methods: {
	//触发按钮点击下载事件
	exportData() {
		this.excelData = this.historyList;  //将你要导出的数组数据(historyList)赋值给excelDate
		this.export2Excel(); //调用export2Excel函数,填写表头(clomns里的type)和对应字段(historyList里的属性名)
	},
	//表格数据写入excel
    export2Excel() {
      var that = this;
      require.ensure([], () => {
        const {
          export_json_to_excel
        } = require("@/assets/excel/Export2Excel");  
        //这里使用绝对路径( @表示src文件夹 ),使用@/+存放export2Excel的路径【也可以写成相对于你当前"xxx.vue"文件的相对路径,例如我的页面放在assets文件夹同级下的views文件夹下的“home.vue”里,那这里路径也可以写成"../assets/excel/Export2Excel"】
        const tHeader = ["报名日期", "姓名", "班级", "学号","性别","邮箱","联系方式","所选导师"]; // 导出的excel表头名信息
        const filterVal = [
          "date",
          "name",
          "class",
          "studentId",
          "sex",
          "email",
          "telephone",
          "teacher"
        ]; // 导出的excel表头字段名,需要导出表格字段名
        const list = that.excelData;
        const data = that.formatJson(filterVal, list);

        export_json_to_excel(tHeader, data, "学生报名信息汇总"); // 导出的表格名称,根据需要自己命名
      });
    },
    //格式转换,直接复制即可,不需要修改什么
    formatJson(filterVal, jsonData) {
      return jsonData.map(v => filterVal.map(j => v[j]));
    }
}

四、总结一下这段代码需要按照个人需求修改的几个小点:
高亮部分就是改动点 ——

  1. this.excelData = this.historyList;
  2. require("@/assets/excel/Export2Excel");
  3. const tHeader = [“报名日期”, “姓名”, “班级”, “学号”,“性别”,“邮箱”,“联系方式”,“所选导师”];
  4. const filterVal = [
    “date”,
    “name”,
    “class”,
    “studentId”,
    “sex”,
    “email”,
    “telephone”,
    “teacher”

    ];
    export_json_to_excel(tHeader, data, “学生报名信息汇总”);

总的来说这个用前端导出excel的操作还是比较简单,如果您有更便捷好用的方法,欢迎推荐~~

  • 13
    点赞
  • 109
    收藏
    觉得还不错? 一键收藏
  • 18
    评论
以下是使用vue-json-excel导出xlsx的步骤: 1.首先,安装vue-json-excel依赖包: ```shell npm install vue-json-excel --save ``` 2.在main.js中引入vue-json-excel并注册为全局组件: ```javascript import Vue from 'vue' import App from './App.vue' import ElementUI from 'element-ui'; import 'element-ui/lib/theme-chalk/index.css'; import JsonExcel from "vue-json-excel"; // 引入vue-json-excel Vue.component("downloadExcel", JsonExcel); // 注册为全局组件 Vue.use(ElementUI); new Vue({ render: h => h(App), }).$mount('#app') ``` 3.在需要导出Excel的组件中,使用downloadExcel组件并传入数据和表头信息: ```html <template> <div> <download-excel :data="tableData" :columns="tableColumns" :filename="'excel文件名'" :sheetname="'sheet名称'" :title="'表格标题'" :autoWidth="true" :mergeCell="[]" > <el-button type="primary">导出Excel</el-button> </download-excel> </div> </template> <script> export default { data() { return { tableData: [ { name: '张三', age: 18, gender: '男' }, { name: '李四', age: 20, gender: '女' }, { name: '王五', age: 22, gender: '男' } ], tableColumns: [ { label: '姓名', field: 'name' }, { label: '年龄', field: 'age' }, { label: '性别', field: 'gender' } ] } } } </script> ``` 其中,data为需要导出数据,columns为表头信息,filename为导出Excel文件名,sheetname为sheet名称,title为表格标题,autoWidth为是否自动调整列宽,mergeCell为需要合并的单元格信息。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值