Lendo arquivo do Excel usando node.js

Ok, então estou usando o módulo FileUploader para fazer upload do meu arquivo de angular para minha REST API :

 var uploader = $scope.uploader = new FileUploader({ url: api.getUrl('uploadCompetence',null) }); 

Isso é enviado para a seguinte function POST :

  router.route('/api/uploadCompetence') .post(function (req, res) { // This is where i want to read the file var competence = Competence.build(req.body.location); competence.add(function (success) { res.json({message: 'quote created!'}); }, function (err) { res.status(err).send(err); }); }) 

Agora meu objective é ler o arquivo excel e depois adicionar cada linha ao meu database.

No entanto, eu não tenho certeza de como eu posso ler o arquivo do Node.js eu depurei o meu servidor e não consegui encontrar o arquivo em qualquer lugar, mas a API está sendo chamada a partir do meu aplicativo Angular

Alguém pode me empurrar na direção certa? 🙂

Existem algumas bibliotecas diferentes fazendo análise de arquivos do Excel (.xlsx). Vou listar dois projetos que acho interessantes e que valem a pena investigar.

Nó-xlsx

Analisador e construtor do Excel. É uma espécie de wrapper para um projeto popular JS-XLSX , que é uma implementação puramente javascript da especificação Office Open XML.

página do projeto node-xlsx

Exemplo para analisar o arquivo

 var xlsx = require('node-xlsx'); var obj = xlsx.parse(__dirname + '/myFile.xlsx'); // parses a file var obj = xlsx.parse(fs.readFileSync(__dirname + '/myFile.xlsx')); // parses a buffer 

ExcelJS

Leia, manipule e escreva dados e estilos de planilhas para XLSX e JSON. É um projeto ativo. No momento da escrita, o commit mais recente foi 9 horas atrás. Eu não testei isso sozinho, mas a API parece extensa, com muitas possibilidades.

página do projeto do exceljs

Exemplo de código:

 // 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()); 

Você também pode usar este módulo de nó chamado js-xlsx

1) Instale o módulo
npm install xlsx

2) Módulo de importação + trecho de código

 var XLSX = require('xlsx') var workbook = XLSX.readFile('Master.xlsx'); var sheet_name_list = workbook.SheetNames; var xlData = XLSX.utils.sheet_to_json(workbook.Sheets[sheet_name_list[0]]); console.log(xlData); 

instale o exceljs e use o seguinte código,

 var Excel = require('exceljs'); var wb = new Excel.Workbook(); var path = require('path'); var filePath = path.resolve(__dirname,'sample.xlsx'); wb.xlsx.readFile(filePath).then(function(){ var sh = wb.getWorksheet("Sheet1"); sh.getRow(1).getCell(2).value = 32; wb.xlsx.writeFile("sample2.xlsx"); console.log("Row-3 | Cell-2 - "+sh.getRow(3).getCell(2).value); console.log(sh.rowCount); //Get all the rows data [1st and 2nd column] for (i = 1; i <= sh.rowCount; i++) { console.log(sh.getRow(i).getCell(1).value); console.log(sh.getRow(i).getCell(2).value); } }); 

Instale o módulo de nó ‘spread_sheet’, ele adicionará e buscará a linha da planilha local