Veja nesse artigo
Introdução
Salvar dados em planilha do Excel, ou em formato Csv pode ser útil para que seu usuário consiga manipular os dados do sistema, pois há usuários que sabem mexer bem no excel e com isso consegue tirar diversas informações a partir desses dados.
Normalmente os sistemas tem os relatórios próprios, mas acabam também dando a oportunidade do usuário exportar esses dados.
Em alguns casos, um determinado relatório pode ser demorado para fazer, e uma solução prévia pode ser gerar uma planilha com os dados para que o usuário consiga montar o relatório como ele deseja, até que o relatório seja implementado no sistema.
Biblioteca
A biblioteca que será utilizada para gerar a planilha a partir do node será a excel4node
.
É uma biblioteca bem estável e para o exemplo será utilizada a versão 1.7.2, seu repositório no npm está contando com quase 50 mil de downloads semanais.
Para instalar a biblioteca no projeto, utilizar o comando:
npm i excel4node
Exemplo prático
Para o exemplo prático, será utilizado um array de objetos, onde cada objeto ficará em uma linha da planilha.
No computador, crie um diretório e abra ele com o seu editor de código preferido, no meu caso o Visual Studio Code.
Para iniciar o projeto node, abra o terminal (pode ser o integrado com o editor), navegue até a pasta do projeto e digite o comando:
npm init -y
Isso fará com que crie o package.json
no projeto.
Também no terminal, digite o comando de instalação da biblioteca:
npm i excel4node
Dentro do projeto, crie um arquivo server.js. Esse arquivo conterá todo o código da aplicação. A estrutura dos arquivos deve ficar assim:

Abra o arquivo server.js, primeiramente será necessário importar a biblioteca, criar um novo objeto para manipular a planilha, que no caso será chamado de workbook, e depois dar um nome para a planilha, as 3 primeiras linhas do arquivo ficarão assim:
const xl = require('excel4node');
const wb = new xl.Workbook();
const ws = wb.addWorksheet('Worksheet Name');
Posterior a isso, será necessário criar uma variável, que terá os dados que serão colocados na planilha, para os testes, colocaremos 2 objetos:
const data = [
{
"name":"Teste",
"email":"teste@gmail.com",
"cellphone":"1234567890"
},
{
"name":"Pessoa 2",
"email":"pessoa@gmail.com",
"cellphone":"1234567899"
}
];
Agora é preciso criar um outro array, que vai ter o nome das colunas da planilha:
const headingColumnNames = [
"Nome",
"Email",
"Celular",
]
Certo, com os dados preparados, agora irá começar a lógica para salvar isso no arquivo xlxs.
Primeiramente será adicionado no arquivo todos os títulos das colunas, que está na variável headingColumnNames
. Para isso, será percorrido esse array e em cada posição será adicionado uma célula.
let headingColumnIndex = 1; //diz que começará na primeira linha
headingColumnNames.forEach(heading => { //passa por todos itens do array
// cria uma célula do tipo string para cada título
ws.cell(1, headingColumnIndex++).string(heading);
});
Depois de colocado os títulos das colunas, agora é necessário inserir os dados, como a coluna já está na primeira linha, os dados serão inseridos a partir da segunda.
Para percorrer os dados, primeiramente será necessário um forEach para passar pelo array, e para cada item, será percorrido todos os valores dentro dele para colocar os dados de cada coluna, será utilizado o Object.keys, que pega a chave de cada item do objeto, percorre por elas e adiciona as células:
let rowIndex = 2; //começa na linha 2
data.forEach(record => { //passa por cada item do data
let columnIndex = 1; //diz para começar na primeira coluna
//transforma cada objeto em um array onde cada posição contém as chaves do objeto (name, email, cellphone)
Object.keys(record).forEach(columnName =>{
//cria uma coluna do tipo string para cada item
ws.cell(rowIndex,columnIndex++)
.string(record [columnName])
});
rowIndex++; //incrementa o contador para ir para a próxima linha
});
E para finalizar o arquivo server.js basta escolher um nome para o arquivo:
wb.write('ArquivoExcel.xlsx');
Pronto, o arquivo server.js está finalizado, ele por completo fica dessa forma:
const xl = require('excel4node');
const wb = new xl.Workbook();
const ws = wb.addWorksheet('Worksheet Name');
const data = [
{
"name":"Teste",
"email":"teste@gmail.com",
"cellphone":"1234567890"
},
{
"name":"Pessoa 2",
"email":"pessoa@gmail.com",
"cellphone":"1234567899"
}
]
const headingColumnNames = [
"Nome",
"Email",
"Celular",
]
let headingColumnIndex = 1; //diz que começará na primeira linha
headingColumnNames.forEach(heading => { //passa por todos itens do array
// cria uma célula do tipo string para cada título
ws.cell(1, headingColumnIndex++).string(heading);
});
let rowIndex = 2;
data.forEach( record => {
let columnIndex = 1;
Object.keys(record).forEach(columnName =>{
ws.cell(rowIndex,columnIndex++)
.string(record [columnName])
});
rowIndex++;
});
wb.write('ArquivoExcel.xlsx');
Para executar isso, volte no terminal e rode o comando
node server.js
O arquivo server.js será executado e irá gerar um arquivo no diretório raiz do projeto, abra ele com qualquer leitor de xlxs e terá o seguinte conteúdo:

Vídeo completo
Caso queira, gravei um vídeo mostrando como exportar os dados do node para uma planilha:
Conclusão
Há algumas formas de colocar dados do Node.js dentro de uma planilha, essa é uma forma delas, essa forma pode ser útil principalmente porque os dados retornados de um banco são json, então por isso, caso precise colocar esses dados em uma planilha, este artigo pode ser útil, até o próximo post 🙂
Código fonte
Todo o código fonte dos exemplos mostrados estão no meu CodeSandbox
Para ver outros canais onde o posto conteúdo, meu Github e também cursos, veja os Links do Programando Soluções.
Referências
https://www.npmjs.com/package/excel4node
https://dev.to/shadabshaikh0/how-to-save-json-data-in-excel-file-in-node-js-1cfn