From 5eaa63faa473a758031152c7a3138e269af06b94 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E6=99=AF=E7=AB=8B?= Date: Fri, 22 Jan 2021 16:33:10 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E8=AF=BB=E5=8F=96excel?= =?UTF-8?q?=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/static/plugs/jquery/excel.xlsx.js | 36 ++++++++++++++++++++++-- 1 file changed, 33 insertions(+), 3 deletions(-) diff --git a/public/static/plugs/jquery/excel.xlsx.js b/public/static/plugs/jquery/excel.xlsx.js index d03cb01aa..a1b3b07ba 100644 --- a/public/static/plugs/jquery/excel.xlsx.js +++ b/public/static/plugs/jquery/excel.xlsx.js @@ -17,7 +17,7 @@ define(['xlsx'], function () { }); }; - excel.load = function (url, data, done, filename, method) { + excel.load = function (url, data, done, name, method) { var alldata = []; var loading = $.msg.loading('正在加载 ,完成 0%'); nextPage(1, 1); @@ -26,7 +26,7 @@ define(['xlsx'], function () { if (curPage > maxPage) { if (typeof done === 'function') { if ((this.result = done(alldata)) !== false) { - excel(this.result, filename || '文件下载.xlsx'); + excel(this.result, name || '文件下载.xlsx'); } else { console.log('格式化函数返回`false`,已终止数据导出操作', alldata, this.result); } @@ -45,6 +45,36 @@ define(['xlsx'], function () { }, false); } } - } + }; + + excel.read = function (file) { + return (function (defer, reader, loaded) { + defer = jQuery.Deferred(), reader = new FileReader(); + reader.onload = function (event) { + var work = XLSX.read(event.target.result, {type: 'binary'}); + for (var sheet in work.Sheets) if (work.Sheets.hasOwnProperty(sheet)) { + var object = {}, data = work.Sheets[sheet], keys = '', atrs = ''; + for (keys in data) if ((atrs = keys.match(/^([A-Z]+)(\d+)$/i))) { + object[atrs[2]] = object[atrs[2]] || {}; + object[atrs[2]][atrs[1]] = data[keys].v; + } + return jQuery.msg.close(loaded), defer.resolve(object); + } + jQuery.msg.close(loaded) + }; + reader.onerror = function () { + defer.reject('读取文件失败'); + }; + reader.onprogress = function (event) { + defer.notify((event.loaded / event.total).toFixed(4) * 100); + }; + if (typeof file === 'object') { + return reader.readAsBinaryString(file), defer; + } else { + return defer; + } + })(); + }; + return excel; }); \ No newline at end of file