Home > database >  Array to excel in Nodejs
Array to excel in Nodejs

Time:04-19

All,

I have to simple arrays as below and want to dump the data in to excel in Nodejs.

var Headers = ['ChangeId', 'ChangeDescription', 'ChangeDate', 'Enhancement/Fix', 'ExcutorTeam'];
var Data = ['INC1234', 'Multiple Cert cleanup', '04/07/2022', 'Enhancement', 'IlevelSupport'];

enter image description here

CodePudding user response:

You can use xlsx npm package and do something like this

This is a quick example that works, things could be improved but it will at least give you a starting point

const xlsx = require('xlsx');

let Headers = ['ChangeId', 'ChangeDescription', 'ChangeDate', 'Enhancement/Fix', 'ExcutorTeam'];
let Data = ['INC1234', 'Multiple Cert cleanup', '04/07/2022', 'Enhancement', 'IlevelSupport'];

let workbook = xlsx.utils.book_new();
let worksheet = xlsx.utils.aoa_to_sheet([Data]);

xlsx.utils.book_append_sheet(workbook, worksheet);

xlsx.utils.sheet_add_aoa(worksheet, [Headers], { origin: 'A1' });
xlsx.utils.sheet_add_aoa(worksheet, [Data], { origin:'A2' });


xlsx.writeFile(workbook, "Test.xlsx");

CodePudding user response:

CSV format is just comma separated string with new lines. With that in mind we want to create a string that has the format:

ChangeId,ChangeDescription,ChangeDate,Enhancement/Fix,ExcutorTeam
INC1234,Multiple Cert cleanup,04/07/2022,Enhancement,IlevelSupport

We can iterate over Data in Headers.length sized chunks:

const numColumns = Headers.length;

let file = `${Headers.join(",")}\n`;
for (let i = 0; i < Data.length; i  = numColumns) {
  file  = `${Data.slice(i, i   numColumns).join(",")}\n`;
}

fs.writeFileSync("file.csv", file);

Hope that gets you started in the right direction.

  • Related