| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144 | 
							- var  xlsxUtils = {
 
-     Binary: {
 
-         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;
 
-         },
 
-         s2ab(s) { //字符串转字符流
 
-             var buf = new ArrayBuffer(s.length);
 
-             var view = new Uint8Array(buf);
 
-             for (var i = 0; i != s.length; ++i) view[i] = s.charCodeAt(i) & 0xFF;
 
-             return buf;
 
-         }
 
-     },
 
-     _wb: null,
 
-     _rABS: false,
 
-     /**
 
-      * @desc  导入根据文件
 
-      * @param {File} f 文件
 
-      * @param {Function} c 回调
 
-      * @return {Object} 回调值
 
-      */
 
-     import(f, c) {
 
-         this.wb = null;
 
-         var reader = new FileReader();
 
-         reader.onload = function (e) {
 
-             var data = e.target.result;
 
-             xlsxUtils._wb = xlsxUtils._rABS ? XLSX.read(btoa(xlsxUtils.Binary.fixdata(data)), { type: 'base64' }) : XLSX.read(data, { type: 'binary' });
 
-             if (typeof c == "function") { c(xlsxUtils._wb); }
 
-         };
 
-         if (xlsxUtils._rABS) {
 
-             reader.readAsArrayBuffer(f);
 
-         } else {
 
-             reader.readAsBinaryString(f);
 
-         }
 
-     },
 
-     /**
 
-      * @desc  根据表Sheet名获取数据
 
-      * @param {String} name
 
-      * @return {Object}
 
-      */
 
-     getSheetByName(name, opt) {//
 
-         return XLSX.utils.sheet_to_json(xlsxUtils._wb.Sheets[name], opt);
 
-     },
 
-     /**
 
-      * @desc  根据表Sheet索引获取数据
 
-      * @param {Number} index
 
-      * @return {Object}
 
-      */
 
-     getSheetByIndex(index = 0, opt) {
 
-         return xlsxUtils.getSheetByName(xlsxUtils._wb.SheetNames[index], opt);
 
-     },
 
-     /**
 
-      * @desc 导出
 
-      * @param {Array} data 数据{title1:dataList,title2:dataList....}
 
-      * @param {String} type
 
-      * @return {Blob}
 
-      */
 
-     export(data, type) {
 
-         var tmpWB = null;
 
-         for (var title in data) {
 
-             var tmpdata = xlsxUtils.format2Sheet(data[title]);
 
-             tmpWB = xlsxUtils.format2WB(tmpdata, title, tmpWB);
 
-         }
 
-         return xlsxUtils.format2Blob(tmpWB, type);
 
-     },
 
-     /**
 
-      * 从数据数组或对象中根据key生成相同key值的对象
 
-      * @param {Object|Array} data
 
-      * @return {Object}
 
-      */
 
-     readDataHead(data) {
 
-         var o = {}, d = Array.isArray(data) ? Object.keys(data[0]) : data; for (var i of d) o[i] = i;
 
-         return o;
 
-     },
 
-     /**
 
-      * @desc 格式化数据为Sheet格式
 
-      * @param {Array} json 数据
 
-      * @param {Number} n 列偏移
 
-      * @param {Number} r 行偏移
 
-      * @param {Array} keyMap 对象键数组
 
-      * @param {Function|Boolean} t 数据
 
-      */
 
-     format2Sheet(json, n, r, keyMap, t) {
 
-         keyMap = keyMap || Object.keys(json[0]);
 
-         var types = (t == undefined ? ((v) => (({ "number": "n", undefined: "s", "boolean": "b","string":"s" })[typeof v])||"s") : t);
 
-         n = n || 0;
 
-         r = r || 0;
 
-         var tmpdata = {};//用来保存转换好的json
 
-         var t1 = json.map((v, i) => keyMap.map((k, j) => Object.assign({}, {
 
-             v: v[k],
 
-             position: ((j + n) > 25 ? xlsxUtils.getCharCol((j + n)) : String.fromCharCode(65 + (j + n))) + (i + 1 + r),
 
-         }))).reduce((prev, next) => prev.concat(next)).forEach((v, i) => tmpdata[v.position] = {
 
-             v: v.v,
 
-             t: types?types(v.v):"s"
 
-         });
 
-         return tmpdata;
 
-     },
 
-     /**
 
-      * @desc 格式化数据为Sheet格式
 
-      * @param {Array} sheetData
 
-      * @param {String} title
 
-      * @param {Object} wb
 
-      * @param {Object} ref
 
-      */
 
-     format2WB(sheetData, title, wb, ref) {
 
-         title = title || "mySheet";
 
-         var outputPos = Object.keys(sheetData);
 
-         if (!wb) wb = { Sheets: {}, SheetNames: [] };
 
-         wb.SheetNames.push(title);
 
-         wb.Sheets[title] = Object.assign({}, sheetData, {
 
-             '!ref': ref || (outputPos[0] + ':' + outputPos.reverse().find(_=>_.indexOf("!")==-1))//设置填充区域
 
-         });
 
-         return wb;
 
-     },
 
-     /**
 
-      * @desc 将xlsx Workbook 转为blob
 
-      * @param {Array} wb
 
-      * @param {String} type 类型
 
-      */
 
-     format2Blob(wb, type) {
 
-         return new Blob([xlsxUtils.Binary.s2ab(XLSX.write(wb,
 
-             { bookType: (type == undefined ? 'xlsx' : type), bookSST: false, type: 'binary' }//这里的数据是用来定义导出的格式类型
 
-         ))], { type: "" });
 
-     },
 
-     /**
 
-      * @desc 匹配单元格对应的标识
 
-      * @param {Number} n
 
-      */
 
-     getCharCol(n) {
 
-         let temCol = '',
 
-             s = '',
 
-             m = 0
 
-         while (n > 0) {
 
-             m = n % 26 + 1
 
-             s = String.fromCharCode(m + 64) + s
 
-             n = (n - m) / 26
 
-         }
 
-         return s
 
-     },
 
- };
 
 
  |