我如何使用exceljs读取大型csv文件

时间:2018-12-05 13:28:16

标签: javascript exceljs

我在项目中将 exceljs 与csv和excel文件一起使用。最近,文件变得非常大,我无法正常读取它们。 以下代码适用于小型文件,但无法读取百万行

我意识到我需要使用,但是我不知道它是如何工作的。我想将其用于相同的情况下,以便能够阅读大量内容。有人可以帮忙吗?

var Excel = require('exceljs');
var workbook = new Excel.Workbook();
readSecurityCSV(workbook);
var header = {}
var adSecurities = []



function readSecurityCSV(workbook){
workbook.csv.readFile('./csv/clientsOrders.csv')
.then(worksheet => {

   worksheet.eachRow({ includeEmpty: true }, function(row, rowNumber) {

     if(rowNumber == 1){
       header = {}
       row.eachCell({ includeEmpty: true }, function(cell, cellNumber) {
         header[cellNumber] = cell

       });
     }else{
       var currentSecurity = {}
       row.eachCell({ includeEmpty: true }, function(cell, cellNumber) {

        currentSecurity[header[cellNumber].value] = cell.value
       });

       currentSecurity.rowNumber = rowNumber

       adSecurities.push(currentSecurity)


     }

   });
   console.log(color.blue("adSecurity"), adSecurities[0]);

 })

}

1 个答案:

答案 0 :(得分:0)

您可以拆分csv文件,然后循环浏览。

可以这样分割:

var chunkSize = 1024 * 1024;
var fileSize = file.size;
var chunks = Math.ceil(file.size/chunkSize,chunkSize);
var chunk = 0;
while (chunk <= chunks) {
  var offset = chunk*chunkSize;
  console.log(file.slice(offset,offset + chunkSize));
  chunk++;
}

如果您想同时使用多个Promise,请检查此链接[1]