Red de conocimiento informático - Conocimiento del nombre de dominio - Cómo usar la biblioteca js-xlsx de github para procesar archivos de Excel

Cómo usar la biblioteca js-xlsx de github para procesar archivos de Excel

JS-XLS

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]);

if(formulae.length > 0){

resultado.push("HOJA: " + nombre de la hoja);

resultado.push("");

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.