vue使用XLSX解析excel,无默认值解析为空的问题

引入模块

import * as XLSX from ‘xlsx’

解析EXCEL文件

importfxx(obj) {
            let _this = this;//将当前this重新指向,以防this改变
            // 通过DOM取文件数据
            this.file = obj;
            var rABS = false; //是否将文件读取为二进制字符串
            var f = this.file;
            var reader = new FileReader();
            //if (!FileReader.prototype.readAsBinaryString) {
            FileReader.prototype.readAsBinaryString = function (f) {
                var binary = "";
                var rABS = false; //是否将文件读取为二进制字符串
                var pt = this;
                var wb; //读取完成的数据
                var outdata;
                var reader = new FileReader();
                reader.onload = function (e) {
                    var bytes = new Uint8Array(reader.result);
                    var length = bytes.byteLength;
                    for (var i = 0; i < length; i++) {
                        binary += String.fromCharCode(bytes[i]);
                    }
                    var XLSX = require("xlsx");
                    if (rABS) {
                        wb = XLSX.read(btoa(fixdata(binary)), {
                            //手动转化
                            type: "base64"
                        });
                    } else {
                        wb = XLSX.read(binary, {
                            type: "binary"
                        });
                    }
                    outdata = XLSX.utils.sheet_to_json(wb.Sheets[wb.SheetNames[0]], {
                        /** Default value for null/undefined values */
                        defval: ''//给defval赋值为空的字符串
                    }
); //outdata就是你想要的东西
                    this.da = [...outdata];
                    let arr = [];
                    this.da.map(v => {
                        arr.push(v);
                    });
                    _this.columnName = Object.keys(outdata[0])
                    let tableArr = []
                    for (let i = 0; i < _this.columnName.length; i++) {
                        let flag = _this.columnIdentify(_this.columnName[i]);
                        let o = {
                            prop: _this.columnName[i],
                            label: _this.columnName[i],
                            minWidth: '120',
                            align: 'center',
                            tooltip: true,
                            resizable: true,
                            identify: flag,
                            searchType: '',
                            typeOthers: [],
                        }
                        tableArr.push(o);
                    }
                    _this.importData = arr;
                    // console.log(arr);
                    _this.importColumn = tableArr
                    _this.columnSet = tableArr
                    //修改当前表格数据为导入的数据
                    //表格的数据表头字段与数据字段名要相同才能改变当前表格值
                    _this.excelData = outdata;
                    return arr;
                };
                reader.readAsArrayBuffer(f);
            };

            if (rABS) {
                reader.readAsArrayBuffer(f);
            } else {
                reader.readAsBinaryString(f);
            }
        }

关键代码

outdata = XLSX.utils.sheet_to_json(wb.Sheets[wb.SheetNames[0]], {defval: ‘’ })
新增 参数{defval:“”}代表默认值为空时,给定一个初始值"",在转json时列对应的数值为空串。

问题解决思路

https://blog.csdn.net/qq_44267691/article/details/128634155

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值