节点exceljs读取文件

Mar*_*sen 12 node.js exceljs

所以根据官方文档,我应该能够使用以下方法阅读excel文档:

    // read from a file 
var workbook = new Excel.Workbook();
workbook.xlsx.readFile(filename)
    .then(function() {
        // use workbook 
    });

// pipe from stream 
var workbook = new Excel.Workbook();
stream.pipe(workbook.xlsx.createInputStream());
Run Code Online (Sandbox Code Playgroud)

我有以下文件:

在此输入图像描述

我需要做的就是将每一行加载到一个对象中:

var excelObject = {competence1: '', competence2: ''}
Run Code Online (Sandbox Code Playgroud)

然后将其保存到数组中.

但是文档并没有给我更多关于我如何从这个文件中读取的内容.它使用一个被调用的变量stream但是这个变量没有在任何地方解释

有谁知道插件并知道我如何实现我的目标?

Dio*_*oso 13

var workbook = new Excel.Workbook(); 
workbook.xlsx.readFile(filename)
    .then(function() {
        var worksheet = workbook.getWorksheet(sheet);
        worksheet.eachRow({ includeEmpty: true }, function(row, rowNumber) {
          console.log("Row " + rowNumber + " = " + JSON.stringify(row.values));
        });
    });
Run Code Online (Sandbox Code Playgroud)

  • 文件名是文件路径还是什么?我的文件路径是public/uploads/test.xlsx (5认同)
  • “sheet$.eachRow 不是函数”函数已弃用或不存在 (2认同)

小智 6

如果您使用文件作为ArrayBuffer(例如文件是在客户端上使用FileReader.readAsArrayBuffer()读取的),那么要使用此lib加载它,您必须执行下一步:

    let workbook = new Excel.Workbook();
    let stream = new Stream.Readable();
    stream.push(file); // file is ArrayBuffer variable
    stream.push(null);
    workbook.xlsx.read(stream).then((workbook)=> {
         // get worksheet, read rows, etc
    });
Run Code Online (Sandbox Code Playgroud)


小智 6

下面的代码片段将帮助您读取文件sample.xlsx,其中包含两列1.用户名2.密码。我正在尝试使用 Mocha(chai) 进行断言,以检查数据类型匹配。

var Excel = require('exceljs');
const assert = require("chai").assert;

var workbook = new Excel.Workbook();
workbook.creator ="Naveen"; 
workbook.modified ="Kumar";


workbook.xlsx.readFile("sample.xlsx").then(function(){
    var workSheet =  workbook.getWorksheet("one"); 

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

        currRow = workSheet.getRow(rowNumber); 
         console.log("User Name :" + currRow.getCell(1).value +", Password :" +currRow.getCell(2).value);
         console.log("User Name :" + row.values[1] +", Password :" +  row.values[2] ); 

         assert.equal(currRow.getCell(2).type, Excel.ValueType.Number); 
       //  console.log("Row " + rowNumber + " = " + JSON.stringify(row.values));
      });
})
Run Code Online (Sandbox Code Playgroud)

希望这对某人有帮助