美文网首页随笔-生活工作点滴
前端项目(如Vue)中,数据导出为Excel

前端项目(如Vue)中,数据导出为Excel

作者: 张过庭 | 来源:发表于2019-07-05 16:06 被阅读0次

    1. 首先安装依赖: 

    cnpm i -S file-saver xlsx

    cnpm i -D script-loader

    2. 将 Export2Excel.js 及 Blob.js (提取码: xufr) 放至项目相关目录下。试以 Vue 举例:

    /src/vendor/

    tips: 

        如文件夹名称不为vendor, 则需修改 Export2Excel.js 里的文件引入路径: 

        require('script-loader!@/vendor/Blob')    //修改为你的自定义路径

    3. 在具体页面应用:

        <button @click="exportData">导出数据<button>

        //导出数据

            exportData (){

                require.ensure([], () => {

                    const { export_json_to_excel } = require('@/vendor/Export2Excel');

                    //要输出的表头

                    const tHeader = ['用户手机号', '微信号', '状态'];

                    //表头对应的内容, 会从下行定义的 list 里去找相应的数据

                    const filterVal = ['phone','wechatNum','status'];

                    //数据来源

                    const list = this.tableData;

                    const data = this.formatJson(filterVal, list);

                    //fileName: 要导出的表格名称

                    export_json_to_excel(tHeader, data, 'fileName');

                })

            },

            formatJson(filterVal, jsonData) {

                return jsonData.map(v => filterVal.map(j => v[j]))

            }

            //导出数据end

    tips:

        声明一个新的变量存放并修改要导出的数据,可以避免把如"状态:1代表正常,0代表封禁",这样不直观的原始数据直接暴露给用户;

    eg:

        1. 声明变量存放数据

        //必须深拷贝,不能直接赋值。否则只是拷贝了存放在内存的路径指针,修改的话会直接影响原始数据

        let exportDataList  = [...this.exportDataList.map( item => {

                 return { ...item }

         })];

        or

        //当数据含有function、undefined、date等类型的时候不适用

        var exportDataList = JSON.parse(JSON.stringify(this.tableData));

    上面的例子列举了两种较为简单便(biàn)宜的深拷贝方法, 但有其不适用性, 还是推荐各位自行找寻兼容性更好的方式;

        2. 简单来个循环, 修改要导出的数据

        var length = exportDataList.length;

        for(var i = 0; i < length; i++){

            switch( exportDataList[i].payType){

                case 0:

                     exportDataList[i].payType = '微信支付';

                    break;

                case 1:

                     exportDataList[i].payType = '支付宝';

                    break;

                default:

                     exportDataList[i].payType = '默认方式支付';

            }

        };

        const list = exportDataList;

        后续同上...

    相关文章

      网友评论

        本文标题:前端项目(如Vue)中,数据导出为Excel

        本文链接:https://www.haomeiwen.com/subject/hdrehctx.html