前端导入Excel文件并解析实例

 

js代码

var wb; //读取完成的数据
var rABS = true; //是否将文件读取为二进制字符串

function importf(obj) { //导入
    $(".table_tbody").html("");
    if (!obj.files) {
        alert("您的文件格式不正确,请重新选择!");
        return;
    }
    var f = obj.files[0];
    var reader = new FileReader();
    reader.onload = function (e) {
        var data = e.target.result;
        if (rABS) {
            wb = XLSX.read(btoa(fixdata(data)), { //手动转化
                type: 'base64'
            });
        } else {
            wb = XLSX.read(data, {
                type: 'binary'
            });
        }
        //wb.SheetNames[0]是获取Sheets中第一个Sheet的名字
        //wb.Sheets[Sheet名]获取第一个Sheet的数据
        var data = XLSX.utils.sheet_to_json(wb.Sheets[wb.SheetNames[0]]);
        console.log(data);
        $.each(data, function (index, item) {
            console.log(item);
            /*你的代码*/
            /*var fragment = '<tr>' +
                '<td></td>' +
                '<td>' + item.姓名 + '</td>' +
                '<td>' + item.身份证号 + '</td>' +
                '<td>' + item.单位部门 + '</td>' +
                '<td>' + item.性别 + '</td>' +
                '<td>' + item.手机号 + '</td>' +
                '<td>' + item.电子邮箱 + '</td>' +
                '<td>' + item.qq + '</td>' +
                '<td>' + item.地址 + '</td>' +
                '<td>' + item.证件类型 + '</td>' +
                '<td>' + item.证件号码 + '</td>' +
                '<td>' + item.有效起始日期 + '</td>' +
                '<td>' + item.有效结束日期 + '</td>' +

                '</tr>';*/
            $(".table_tbody").append(fragment);
        });
        var len = $('.table_tbody tr').length;
        for (var i = 0; i < len; i++) {
            $('.table_tbody tr:eq(' + i + ') td:first').text((i + 1));
        }
    };
    if (rABS) {
        reader.readAsArrayBuffer(f);
    } else {
        reader.readAsBinaryString(f);
    }
}

function fixdata(data) { //文件流转BinaryString
    var o = "",
        l = 0,
        w = 10240;
    for (; l < data.byteLength / w; ++l) o += String.fromCharCode.apply(null, new Uint8Array(data.slice(l * w, l * w + w)));
    o += String.fromCharCode.apply(null, new Uint8Array(data.slice(l * w)));
    return o;
};

html代码

<input type="file"  onchange="importf(this)" name="name" value="" />

 

总结:1.此代码实现纯前端解析导入excel文件。

           2.用这种纯前端的方法在项目中导入并解析excel文件有2个问题

            问题1,这种导入excel的方式需要依赖excel表格软件,在pc未安装excel时不可用。

            问题2,解析文件数据过大时,会导致前端页面卡顿,造成不好的体验感。

以上是对这个功能的总结,该如何使用,仁者见仁智者见智。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值