我正在开发一个Electron/Node.js应用程序,在本地读取excel文件并进行一些计算。
excel 文件包含 100,000 行,每行包含一个时间戳和一个当时的值。
12/17/2019 12:00:00 AM | 600
我可以使用 SheetJS 包读取文件,代码如下
var XLSX = require('xlsx');
function readExcelandDraw(fileName){
var workbook = XLSX.readFile(fileName);
var sheet = workbook.Sheets[workbook.SheetNames[0]];
var range = XLSX.utils.decode_range(sheet['!ref']);
var dataArray = [];
for(var R = range.s.r; R<=range.e.r; ++R){
let timecellref = XLSX.utils.encode_cell({c:0, r:R});
let psicellref = XLSX.utils.encode_cell({c:1, r:R});
if(!sheet[timecellref] && !sheet[psicellref]) continue; // if cell doesn't exist, move on
let tempTime = sheet[timecellref].v;
let tempPSI = sheet[psicellref].v;
dataArray.push({
Time: getJsDateFromExcel(tempTime),
psi: tempPSI*6.9
});
}
// then plot the dataArray use d3.js
}
读取包含 600,000 行的 excel 文件大约需要 25 秒。
问题 1.是否可以添加一个进度条来指示XLSX.readFile的进度?
附带问题: XLSX.readFile 异步函数是否类似于 node.js 中的 fs.readfile((?不
提前谢谢。
库开发人员 https://github.com/SheetJS/sheetjs/issues/632 的回答:
至于事件读取,主要障碍是文件格式。XLSX 使用 ZIP 文件,您必须先读取整个文件,然后才能正确解压缩。我们会更多地考虑这个问题