web前端表格导出(1)

前端文件导出(1)

纯前端操作和前后端操作

后面为具体操作

1.文件导出基础

web 前端,在firefox 和Chrome 中使用 a 标签(或者js)就可以实现,如下:其中
在这里插入图片描述
download 设置下载的文件名。
href 加上 data:text/txt;charset=utf-8 分别设置点击link 是下载文件, 编码是utf-8 . 这个逗号后面的就是保存在文件中的内容了

如果文件导出的是一个table,需要解决的问题?
问题1: 如何分行, 分列?
理论上 : 分列使用 “,” 号分割, 分行用 \n。
可以用以上方式,会发现列可以分开,但是不换行。 看上去不认识 \n.

解决方式是使用 encodeURIComponent 进行编码
以上使用的都是utf-8 编码,理论上导出中文应该不是问题。
但是导出csv 格式的话, 使用Excel 打开会发现中文是乱码,但是用其他文本程序打开确是正常的。
原因就是少了一个 BOM头 。 \ufeff。
在这里插入图片描述
结果
在这里插入图片描述

2.纯前端导出

具体实现步骤

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

注意:如果运行时,报如下所示的错误
在这里插入图片描述

把require(‘script-loader!vendor/Blob’)改为 require(’./Blob.js’)

2.导入Blob.js 和 Export2Excel.js

获取 Blob.js 和 Export2Excel.js 下载
下载Blob.js和Export2Excel.js后,在src目录下新建vendor文件夹,里面放入Blob.js和Export2Excel.js两个JS文件
在这里插入图片描述

3. 挂载到全局
//excel导出
import {export_json_to_excel} from "@/vendor/Export2Excel"
Vue.prototype.exportExcel = export_json_to_excel;
4.组件中使用
			// 数据样式
            List1: [{
              name:'张三',
              Score: '89'
            },
            {
              name:'李四',
              Score: '99'
            },
            {
              name:'ZJZ',
              Score: '48'
            }]
        handleDownload1:function(){
            let that = this; 
            const tHeader = ["姓名","成绩"];  // 表头
            const filterVal = ["name","Score"]; // 对应数据字段
            const list = that.List1; // 存放数据
            const dataExcel = that.formatJson1(filterVal, list); // 这里为参数过滤
            //exportExcel 在全局挂载  tHeader 表头 dataExcel 表格数据 
            that.exportExcel(tHeader, dataExcel, "考试成绩");
        },
        // 参数过滤
        formatJson1(filterVal, jsonData) {
            return jsonData.map(v => filterVal.map(j => {
                    if(v["Score"] != null ){
                        if(v["Score"]  >= 80 ){
                           v[j] = '合格';
                        }else{
                            v[j] = '不合格';
                        }
                    }
                    return v[j];
            }));
        },

3.前后端导出

太长了 下一篇
点击进入

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值