Node 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());
У меня есть следующий документ:
Что мне нужно сделать, так это загрузить каждую строку в объект:
var excelObject = {competence1: '', competence2: ''}
А затем сохранить его в массив.
Однако документация не дает мне больше о том, как я мог бы читать из этого файла. Он использует переменную под названием stream
однако эта переменная нигде не объясняется.
Кто-нибудь знает плагин и знает, как я могу достичь своей цели?
4 ответа
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));
});
});
И в случае, если вы используете файл как ArrayBuffer (например, файл был прочитан на клиенте с помощью FileReader.readAsArrayBuffer()), то для загрузки его с этой библиотекой вы должны сделать следующее:
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
});
Приведенный ниже фрагмент кода поможет вам прочитать файл sample.xlsx, который содержит два столбца: 1. имя пользователя 2. пароль. и я пытаюсь утверждать с Мокко (чай), чтобы проверить соответствие типа данных.
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));
});
})
Надеюсь, это кому-нибудь поможет
//Read a file
var workbook = new Excel.Workbook();
workbook.xlsx.readFile("data/Sample.xlsx").then(function () {
//Get sheet by Name
var worksheet=workbook.getWorksheet('Sheet1');
//Get Lastrow
var row = worksheet.lastRow
//Update a cell
row.getCell(1).value = 5;
row.commit();
//Save the workbook
return workbook.xlsx.writeFile("data/Sample.xlsx");
});
Я получал сообщение об ошибке для файла.xls. Попробовав все перестановки и комбинации, я преобразовал файл.xls в.xlsx, и это сработало.
const Excel = require('exceljs/dist/es5');
const readExcel = async () => {
//You can use the absolute path also
let filepath = './genovaFile.xlsx';
let workbook = new Excel.Workbook();
await workbook.xlsx.readFile(filepath);
//You can use the index number also eg. 0 for selecting the sheet
let worksheet = workbook.getWorksheet("sheet1");
worksheet.eachRow({ includeEmpty: true }, async (row, rowNumber) => {
console.log("row " + row.values);
})
}
Шаг 1. Загрузите модуль exceljs с помощью npm
Шаг 2. Используйте следующий фрагмент кода для чтения данных из Excel
import { Workbook, Worksheet } from 'exceljs';
public static async getExcelD(filename: string, column1Item: string) {
let wb:Workbook = new Workbook();
let datafile = path.join(__dirname, "../testData", filename);
await wb.xlsx.readFile(datafile).then(async ()=>{
let sh:Worksheet = wb.getWorksheet("Sheet1");
for(let i=1;i<=sh.actualRowCount;i++){
if(sh.getRow(i).getCell(1).value==column1Item){
data1 = sh.getRow(i).getCell(2).value;
}
}
})
return await data1;
}