excel sheet reader

This commit is contained in:
Jan Prochazka
2020-06-11 15:58:19 +02:00
parent 5c1920d60d
commit 41ee6e9b91
6 changed files with 425 additions and 14 deletions

View File

@@ -0,0 +1,28 @@
const exceljs = require('exceljs');
const stream = require('stream');
const _ = require('lodash');
async function excelSheetReader({ fileName, sheetName }) {
console.log(`Loading excel ${fileName}`);
const workbook = new exceljs.Workbook();
await workbook.xlsx.readFile(fileName);
const sheet = workbook.getWorksheet(sheetName);
const pass = new stream.PassThrough({
objectMode: true,
});
const header = sheet.getRow(1);
const structure = {
columns: _.range(header.cellCount).map((index) => ({ columnName: header.getCell(index + 1).value })),
};
pass.write(structure);
for (let rowIndex = 2; rowIndex <= sheet.rowCount; rowIndex++) {
const row = sheet.getRow(rowIndex);
pass.write(_.fromPairs(structure.columns.map((col, index) => [col.columnName, row.getCell(index + 1).value])));
}
pass.end();
return pass;
}
module.exports = excelSheetReader;

View File

@@ -6,6 +6,7 @@ const tableWriter = require('./tableWriter');
const copyStream = require('./copyStream');
const fakeObjectReader = require('./fakeObjectReader');
const consoleObjectWriter = require('./consoleObjectWriter');
const excelSheetReader = require('./excelSheetReader');
module.exports = {
queryReader,
@@ -14,6 +15,7 @@ module.exports = {
runScript,
tableWriter,
copyStream,
excelSheetReader,
fakeObjectReader,
consoleObjectWriter,
};