用js-xlsxparsingExcel工作表

我试图parsing用户指定的目录中的所有Excel文件,但我使用的js-xlsx库似乎需要手动导航。

var url = "/test-files/test.xlsx"; <-------- Located in the project directory var oReq = new XMLHttpRequest(); oReq.open("GET", url, true); oReq.responseType = "arraybuffer"; oReq.onload = function(e) { var arraybuffer = oReq.response; var data = new Uint8Array(arraybuffer); var arr = new Array(); for (var i = 0; i != data.length; i++) arr[i] = String.fromCharCode(data[i]); var bstr = arr.join(""); var workbook = XLSX.read(bstr, { type: "binary" }); } oReq.send(); 

代码需要是dynamic的,因为它可以在任何地方打开excel文件。

有没有什么办法可以使用js-xlsx库的文件入口对象来parsingexcel文件?

对于那些可能好奇的人,我想出了一个解决scheme。

为了dynamic地创build一个给定的fileEntry对象的path,你必须先将它转换成一个Blob:

 fileEntryObject.file(function(file) {}); 

然后将其转换为window.URL ,这样您的项目可以访问到所需文件的可读path:

 var newPath = window.URL.createObjectURL(file); 

因此,即使您不知道如何从项目导航到文件,也可以像在函数中使用常规path一样使用它:

 fileEntryObject.file(function(file) { var newPath = window.URL.createObjectURL(file); var oReq = new XMLHttpRequest(); oReq.open("GET", newPath, true); oReq.responseType = "arraybuffer"; oReq.onError = function(e) { console.log('Error in reading excel file'); }; oReq.onload = function(e) { var arraybuffer = oReq.response; var data = new Uint8Array(arraybuffer); var arr = new Array(); for (var i = 0; i != data.length; ++i) arr[i] = String.fromCharCode(data[i]); var bstr = arr.join(""); var workbook = XLSX.read(bstr, { type: "binary" }); var sheet_name = workbook.SheetNames[1]; var worksheet = workbook.Sheets[sheet_name]; self.parseReceive(worksheet, callback); // self.parseReceive(worksheet); }; oReq.send(); });