将页面中数据导出excel文件

方法一
1、安装

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

2、在src下新建文件夹,这里命名为excel,放入Blob.js 和 export2Excel.js

Blob.js 和export2Excel.js下载地址:

https://pan.baidu.com/s/1QuM49Iyjk09L0qPH2bk5rg 提取码:4yrr

3、配置
若是使用vuecli2,则在build文件夹下找到webpack.base.conf.js做如下修改

resolve: {
    extensions: ['.js', '.vue', '.json'],
    alias: {
      'vue$': 'vue/dist/vue.esm.js',
      '@': resolve('src'),
      'scss_vars': '@/styles/vars.scss',
      'excel': path.resolve(__dirname, '../src/excel'),//新增一行
    }
  },

若是使用vuecli3 或vuecli4,则在export2Excel.js内只要改动头部一行源码即可

改之前:
/* eslint-disable */
require('script-loader!file-saver');//保存文件用
require('script-loader!@/excel/Blob');//转二进制用
// require('./Blob');//转二进制用
require('script-loader!xlsx/dist/xlsx.core.min');//xlsx核心
...
改成:
/* eslint-disable */
require('script-loader!file-saver');//保存文件用
// require('script-loader!@/excel/Blob');//转二进制用
require('./Blob');//转二进制用
require('script-loader!xlsx/dist/xlsx.core.min');//xlsx核心

4、在.vue文件中
在methods里写这两个方法:其中list是表格的内容

 methods:{
    //数据写入excel
    export2Excel() {
      var that = this;
      require.ensure([], () => {
        console.log(1)
        const { export_json_to_excel } = require('@/excel/export2Excel'); //这里必须使用绝对路径,使用@/+存放export2Excel的路径
        const tHeader = ['统一编号','海关编号','境内收发货人','提运单号']; // 导出的表头名信息
        const filterVal = ['unifiedNo','customsNo', 'teRsComanyName', 'deliveryNo']; // 导出的表头字段名,需要导出表格字段名
        // 数据来源
        // const list = that.excelData;
        //模拟数据
        const list =  [
          {unifiedNo:123,customsNo:5236514752, teRsComanyName:"小陈", deliveryNo:"lehr45468644"},
          {unifiedNo:456,customsNo:5845962748, teRsComanyName:"小李", deliveryNo:"lehr85236652"}
        ]
        const data = that.formatJson(filterVal, list);
        const excelName = "下载数据excel";
        export_json_to_excel(tHeader, data, excelName);// 导出的表格名称,根据需要自己命名
      })
    },
    //格式转换,直接复制即可
    formatJson(filterVal, jsonData) {
      return jsonData.map(v => filterVal.map(j => v[j]))
    }
  }

方法二
通过将json遍历进行字符串拼接,将字符串输出到csv文件,代码如下

<template>
  <button @click="tableToExcel">导出</button>
</template>
  
  <script>
export default {
  data() {
    return {
      jsonData: [
        {
          name: "路人甲",
          phone: "123456",
          email: "123@123456.com"
        },
        {
          name: "炮灰乙",
          phone: "123456",
          email: "123@123456.com"
        },
        {
          name: "土匪丙",
          phone: "123456",
          email: "123@123456.com"
        },
        {
          name: "流氓丁",
          phone: "123456",
          email: "123@123456.com"
        }
      ]
    };
  },
  methods: {
    tableToExcel() {
      //列标题,逗号隔开,每一个逗号就是隔开一个单元格
      let str = `姓名,电话,邮箱\n`;
      //增加\t为了不让表格显示科学计数法或者其他格式
      for (let i = 0; i < this.jsonData.length; i++) {
        for (let item in this.jsonData[i]) {
          str += `${this.jsonData[i][item] + "\t"},`;
        }
        str += "\n";
      }
      //encodeURIComponent解决中文乱码
      let uri = "data:text/csv;charset=utf-8,\ufeff" + encodeURIComponent(str);
      //通过创建a标签实现
      let link = document.createElement("a");
      link.href = uri;
      //对下载的文件命名
      link.download = "json数据表.csv";
      document.body.appendChild(link);
      link.click();
      document.body.removeChild(link);
    }
  }
};
</script>


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值