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.
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.
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);
}
});