node example create javascript angularjs node.js import-from-excel

javascript - example - xlsx js



Lectura del archivo de Excel usando node.js (5)

Enlace útil

https://ciphertrick.com/read-excel-files-convert-json-node-js/

var express = require(''express''); var app = express(); var bodyParser = require(''body-parser''); var multer = require(''multer''); var xlstojson = require("xls-to-json-lc"); var xlsxtojson = require("xlsx-to-json-lc"); app.use(bodyParser.json()); var storage = multer.diskStorage({ //multers disk storage settings destination: function (req, file, cb) { cb(null, ''./uploads/'') }, filename: function (req, file, cb) { var datetimestamp = Date.now(); cb(null, file.fieldname + ''-'' + datetimestamp + ''.'' + file.originalname.split(''.'')[file.originalname.split(''.'').length -1]) } }); var upload = multer({ //multer settings storage: storage, fileFilter : function(req, file, callback) { //file filter if ([''xls'', ''xlsx''].indexOf(file.originalname.split(''.'')[file.originalname.split(''.'').length-1]) === -1) { return callback(new Error(''Wrong extension type'')); } callback(null, true); } }).single(''file''); /** API path that will upload the files */ app.post(''/upload'', function(req, res) { var exceltojson; upload(req,res,function(err){ if(err){ res.json({error_code:1,err_desc:err}); return; } /** Multer gives us file info in req.file object */ if(!req.file){ res.json({error_code:1,err_desc:"No file passed"}); return; } /** Check the extension of the incoming file and * use the appropriate module */ if(req.file.originalname.split(''.'')[req.file.originalname.split(''.'').length-1] === ''xlsx''){ exceltojson = xlsxtojson; } else { exceltojson = xlstojson; } try { exceltojson({ input: req.file.path, output: null, //since we don''t need output.json lowerCaseHeaders:true }, function(err,result){ if(err) { return res.json({error_code:1,err_desc:err, data: null}); } res.json({error_code:0,err_desc:null, data: result}); }); } catch (e){ res.json({error_code:1,err_desc:"Corupted excel file"}); } }) }); app.get(''/'',function(req,res){ res.sendFile(__dirname + "/index.html"); }); app.listen(''3000'', function(){ console.log(''running on 3000...''); });

Bien, entonces estoy usando el módulo FileUploader para cargar mi archivo desde angular a mi REST API :

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

Esto se envía a la siguiente función 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); }); })

Ahora mi objetivo es leer el archivo de excel y luego agregar cada fila a mi base de datos.

Sin embargo, no estoy muy seguro de cómo puedo leer el archivo de Node.js he depurado mi servidor y no pude encontrar el archivo en ningún lado, pero se está llamando a la API desde mi aplicación Angular

¿Alguien puede empujarme en la dirección correcta? :)


Hay algunas bibliotecas diferentes que analizan archivos de Excel (.xlsx). Enumeraré dos proyectos que encuentro interesantes y que vale la pena analizar.

Nodo-xlsx

Analizador y constructor de Excel. Es una especie de envoltorio para un proyecto popular JS-XLSX , que es una implementación de JavaScript puro de la especificación XML abierta de Office.

página del proyecto node-xlsx

Ejemplo para analizar el archivo

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

Lea, manipule y escriba datos y estilos de hojas de cálculo en XLSX y JSON. Es un proyecto activo. En el momento de escribir esto, la última confirmación fue hace 9 horas. No lo he probado yo mismo, pero la API parece extensa con muchas posibilidades.

github.com/guyonroche/exceljs

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


Instale el módulo de nodo ''spread_sheet'', agregará y buscará filas de la hoja de cálculo local


También puede usar este módulo de nodo llamado JS-XLSX

1) Instalar módulo
npm install xlsx

2) Módulo de importación + fragmento 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 exceljs y use el siguiente 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); } });