vue中element表格导出为excel

导出excel

*安装依赖*
npm install -S file-saver
npm install -S xlsx
npm install -D script-loader

下载 Export2Excel.js 文件
这个文件没在npm上找到,所以在网上找的文件放入项目中。
Export2Excel.js
(复制demo中的Export2Excel.js代码保存到项目static文件夹下,可根据自己的习惯保存路径)

1、项目中使用
引入 export_json_to_excel 方法 (使用相对路径)
import { export_json_to_excel } from ‘…/static/Export2Excel’

2、格式化表格数据
export_json_to_excel 方法中需要用到的数据和我们在网页中渲染到table上的数据不同,需要格式化

/**
 *  格式数据
 *  @filterVal  格式头
 *  @tableData  用来格式的表格数据
 */
formatJson(filterVal, tableData) {
    return tableData.map(v => {
        return filterVal.map(j => {
                return v[j]
            })
        }
    )
}

在这里插入图片描述

3、调用 export_json_to_excel 方法

// 导出按钮点击事件函数
handleExport() {
    var tHeader = ['日期', '姓名', '省份', '市区', '地址', '邮编']
    var filterVal = ['date', 'name', 'province','city','address','zip']
    var filename = 'demoExcel'
    var data = this.formatJson(filterVal, this.tableData)
    export_json_to_excel({
        header: tHeader,
        data,
        filename
    })
},

导入excel

安装依赖
npm install -S xlsx
  • html
<label for="import">导入</label>
<input
    type="file"
    id="import"
    @change="handleImport"
    accept=".csv, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,
    application/vnd.ms-excel"
/>
  • js
import XLSX from "xlsx";
/**
 *  导入excel的input的change 函数
 *  @event 事件对象
 */
handleImport(event) {
    // FileReader 对象允许Web应用程序异步读取存储在用户计算机上的文件(或原始数据缓冲区)的内容
    let fileReader = new FileReader();
    var file = event.currentTarget.files[0];
    // 回调函数
    fileReader.onload = ev => {
        try {
            let data = ev.target.result;
            let workbook = XLSX.read(data, {
                type: "binary"
            });
            // excel读取出的数据
            let excelData= XLSX.utils.sheet_to_json(
                workbook.Sheets[workbook.SheetNames[0]]
            );
            // 将上面数据转换成 table需要的数据
            let arr = [];
            excelData.forEach(item => {
                let obj = {};
                obj.date = item["日期"];
                obj.name = item["姓名"];
                obj.province = item["省份"];
                obj.city = item["市区"];
                obj.address = item["地址"];
                obj.zip = item["邮编"];
                arr.push(obj);
            });
            this.tableData = [...arr];
        } catch (e) {
            window.alert("文件类型不正确!");
            return false;
        }
    };
    // 读取文件 成功后执行上面的回调函数
    fileReader.readAsBinaryString(file);
}

在这里插入图片描述

原文章from:https://www.jianshu.com/p/23a1391e63d9

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值