Cómo usar la biblioteca js-xlsx de github para procesar archivos de Excel
JS-XLS es fácil de instalar, simplemente use el archivo script en el navegador y cárguelo usando la etiqueta script:
Para Node.js, simplemente instale a través de NPM:
$ npm install xlsjs
$ node
> require('xlsjs'). excel_file.xls');
Luego podemos simplemente usar el código que proporcionan en el archivo index.html para analizar el archivo xls y convertirlo a JSON, CSV o salida basada en fórmulas.
función get_radio_value( radioName ) {
var radios = document.getElementsByName( radioName );
for( var i = 0; i < radios. length; i++ ) {
if( radios[i].checked ) {
return radios[i].value;
}
}
}
función to_json(libro de trabajo) {
var resultado = {};
libro de trabajo.SheetNames.forEach(función( nombre de la hoja) {
var roa = XLS.utils.sheet_to_row_object_array(workbook .Sheets[nombre de la hoja]);
if(roa.length > 0){
resultado[sheetName] = roa;
}
});
devolver resultado;
}
función to_csv(libro de trabajo) {
var resultado = [];
libro de trabajo.SheetNames.forEach(función(nombre de hoja) {
var csv = XLS.utils .make_ csv(workbook.Sheets[nombre de la hoja]);
if(csv.length > 0){
resultado.push("HOJA: " + nombre de la hoja);
resultado.result.push("");
resultado.push(csv);
}
});
return result.join("/n");
}
función to_formulae(libro de trabajo) {
var resultado = []; p> p>
workbook.SheetNames.forEach(function(sheetName.forEach(function(sheetName) {
var formulas = XLS.utils.get_formulae(workbook.Sheets[sheetName]); p>
if(formulae.length > 0){
resultado.push("HOJA: " + nombre de la hoja);
resultado.push(""); p>
resultado.push(formulae.join("/n"));
}
});
devuelve resultado.join( "/ n");
}
var tarea = document.getElementById('b64data');
función b64it() {
var cfb = XLS.CFB.read(tarea.valor, {tipo: 'base64
'});
var wb = XLS.parse_xlscfb(cfb);
proceso_wb(wb);
}
función proceso_wb (wb) {
var salida = "";
switch(get_radio_value("format")) {
case "json":
salida = JSON.stringify (to_json(wb), 2, 2);
break
case "form":
salida = to_formulae (wb);
descanso
predeterminado:
salida = to_csv(wb);
}
if(out.innerText === indefinido) out.textContent = salida;
else out.innerText = salida;
}
var drop = documento .getElementById('soltar');
función handleDrop(e) {
e.stopPropagation();
e.preventDefault();
var archivos = e.dataTransfer.files;
var i,f;
for (i = 0, f = archivos[i]; i ! = archivos. longitud; ++i) {
var lector = new FileReader();
var nombre = f.name;
lector.onload = función(e) ) {
var datos = e.target .result;
var cfb = XLS.CFB.read(datos, {tipo: 'binario'});
//var arr = String.fromCharCode.apply(null, new Uint8Array(data));
//var cfb = XLS.CFB.read(btoa(arr), {tipo: 'base64'});
var wb = XLS.parse_xlscfb(cfb);
process_wb(wb);
};
lector .readAsBinaryString(f );
//reader.readAsArrayBuffer(f);
}
}
función handleDragover(e) {
e. stopPropagation();
e.preventDefault();
e.dataTransfer.addEventListener('drop', handleDrop, false);
}
El código JS es fácil de entender, utiliza la API HTML5 de arrastrar y soltar para permitirnos cargar archivos y luego tratarlos como cadenas binarias.
Luego, el binario se pasa directamente a la biblioteca y se analiza más detalladamente utilizando el siguiente código:
var cfb = XLS.CFB.read(data, {type: 'binary'});
var wb = XLS.parse_xlscfb(cfb);
Finalmente, el objeto WB (libro de trabajo) se procesa y se convierte al formato requerido (fórmulas JSON, CSV y Excel). Esto no tiene la API de lectura de archivos HTML5 de arrastrar y soltar que se puede usar con el código Node.js para lograr la misma funcionalidad.
Nota: Este módulo no es compatible con xlsx. Para superar esta limitación, podemos utilizar otro paquete llamado JS-XLSX proporcionado por el mismo autor.