【问题标题】:Progress bar for SheetJS readFile reading large excel fileSheetJS readFile的进度条读取大型excel文件
【发布时间】:2020-06-27 18:46:20
【问题描述】:

我正在开发一个 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 秒。

第一季度。是否可以添加进度条来指示 XLSX.readFile 的进度?

附带问题: XLSX.readFile 是不是和node.js 中的fs.readfile() 一样的异步函数? 没有

提前致谢。

【问题讨论】:

    标签: javascript node.js excel progress-bar sheetjs


    【解决方案1】:

    来自https://github.com/SheetJS/sheetjs/issues/632 的库开发人员的回答:

    对于事件读取,主要障碍是文件格式。 XLSX 使用 ZIP 文件,您必须先阅读整个文件,然后才能正确解压缩。我们会更多地考虑这个

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-03-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多