Blog post

How to save JSON data in EXCEL file using Node.js

Shadab Shaikh

-
May 20, 2020
Javascript
Nodejs
Npm
Excel
Technology

149

Sometimes, you have a 3rd party API which returns data in JSON format and you need that data in excel file. How we can do this? Let’s follow the steps:

We will save our JSON data in the EXCEL file using an excel4node library in Node.js.

Let’s jump to the code and then I will explain code line by line.

Create index.js

Create package.json using

npm init

Install excel4node using

npm install — save excel4node

Define your data you want to be store in excel

const data = [ {
"name":"Shadab Shaikh", "email":"shadab@gmail.com", "mobile":"1234567890" } ]

Import excel4node library

const xl = require('excel4node');

Create a workbook and give some awesome name

const wb = new xl.Workbook();
const ws = wb.addWorksheet('Worksheet Name');

Now Let’s define columnName

const headingColumnNames = [ "Name"
"Email"
"Mobile"
]

Before moving to next let’s explore some functions in excel4node library

1. cell(rownumber,columnnumber) requires 2 parameters a. row number(starts from 1) b. column number(starts from 1) This function selects cell with given row no. and column no. 2. string(data) , number(data) we can store data as string or number just call the above functions and pass data in it.

Now write columnName in Excel file using functions in excel4node

let headingColumnIndex = 1;
headingColumnNames.forEach(heading => {
ws.cell(1, headingColumnIndex++) .string(heading) });

Finally, write our data in excel file

(Don’t forget to start row number from 2)

let rowIndex = 2;
data.forEach( record => {
let columnIndex = 1;
Object.keys(record ).forEach(columnName =>{
ws.cell(rowIndex,columnIndex++) .string(record [columnName]) });
rowIndex++; });

Now Let’s take workbook and save it into the file

wb.write('filename.xlsx');

Here is full code, just copy and paste in your favorite editor to go through demo.

const xl = require('excel4node');
const wb = new xl.Workbook();
const ws = wb.addWorksheet('Worksheet Name');
const data = [ {
"name":"Shadab Shaikh", "email":"shadab@gmail.com", "mobile":"1234567890" } ]
const headingColumnNames = [ "Name", "Email", "Mobile", ] //Write Column Title in Excel file
let headingColumnIndex = 1;
headingColumnNames.forEach(heading => {
ws.cell(1, headingColumnIndex++) .string(heading) }); //Write Data in Excel file
let rowIndex = 2;
data.forEach( record => {
let columnIndex = 1;
Object.keys(record ).forEach(columnName =>{
ws.cell(rowIndex,columnIndex++) .string(record [columnName]) });
rowIndex++; });
wb.write('data.xlsx');

I hope this was helpful… :-)

Related Blog Posts