Exportar tabla HTML a Excel con JavaScript (Opción 01)
Fuente: https://parzibyte.me/blog/2019/12/04/exportar-tabla-html-excel-javascript/
Fuente: https://github.com/clarketm/TableExport/
Fuente: https://tableexport.travismclarke.com/
Fuente: https://github.com/SheetJS
1. Agregar en el HTML los JS
<script src="https://unpkg.com/xlsx@latest/dist/xlsx.full.min.js"></script>
<script src="https://unpkg.com/file-saverjs@latest/FileSaver.min.js"></script>
<script src="https://unpkg.com/tableexport@latest/dist/js/tableexport.min.js"></script>
2. Código de ejemplo con ajustes avanzados
var fechayhora = function(d){
var month = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
var date = ""+d.getFullYear()+(d.getMonth()+1).toString().padStart(2,'0')+d.getDate().toString().padStart(2,'0');
var time = d.toLocaleTimeString().toLowerCase().replaceAll(":","");
return (date + "_" + time);
}
/* Tabla 01: */
var hidden_bloco_0 = document.querySelector("#hidden_bloco_0");
let tableExport_0_77a45 = new TableExport(hidden_bloco_0, {
exportButtons: false, // No queremos botones
headers: false,
ignoreCols: [],
ignoreRows: [],
RTL: false,
bootstrap: false,
filename: "Ejemplo_tabla_01_"+fechayhora(new Date()), //Nombre del archivo de Excel
sheetname: "Datos", //Título de la hoja
});
let datos_tabla_0_77a45 = tableExport_0_77a45.getExportData();
console.log(datos_tabla_0_77a45);
myArray_tabla_0_77a45 = datos_tabla_0_77a45.hidden_bloco_0.xlsx.data;
console.log(myArray_tabla_0_77a45.length);
// Filtramos los valores de la cabecera
var cabecera_0_77a45 = myArray_tabla_0_77a45.filter(function(value, index, arr){
return index == 0;
});
let y_0_77a45=[0,3];
for (let x_tabla_0_77a45 in cabecera_0_77a45) {
console.log(cabecera_0_77a45[x_tabla_0_77a45]);
cabecera_0_77a45[parseInt(x_tabla_0_77a45)] = cabecera_0_77a45[parseInt(x_tabla_0_77a45)].filter((el,i)=>y_0_77a45.some(j => i === j));
}
// Filtramos los valores de los datos
var filtered_0_77a45 = myArray_tabla_0_77a45.filter(function(value, index, arr){
return (value.length == 5 && index == 3);
});
let x_0_77a45=[0,1];
for (let x_tabla_0_77a45 in filtered_0_77a45) {
console.log(filtered_0_77a45[x_tabla_0_77a45]);
filtered_0_77a45[parseInt(x_tabla_0_77a45)] = filtered_0_77a45[parseInt(x_tabla_0_77a45)].filter((el,i)=>x_0_77a45.some(j => i === j));
}
// Limpiamos datos atípicos
for (let x_tabla_0_77a45 in filtered_0_77a45) {
console.log(filtered_0_77a45[x_tabla_0_77a45]);
filtered_0_77a45[parseInt(x_tabla_0_77a45)][1].v = filtered_0_77a45[parseInt(x_tabla_0_77a45)][1].v.replaceAll("\n Registre Porcentaje","").replaceAll("Datos inválidos","");
filtered_0_77a45[parseInt(x_tabla_0_77a45)][1].t = 'n';
}
// Concatenamos los datos a la cabecera*/
var newdata_0_77a45 = cabecera_0_77a45.concat(filtered_0_77a45);
/* Reemplazamos los valores del excel por la nueva data */
datos_tabla_0_77a45.hidden_bloco_0.xlsx.data= newdata_0_77a45;
// para pruebas de desarrollo
/*
console.log('Preparando para descargar Excel');
let preferenciasDocumento = datos_tabla_0_77a45.hidden_bloco_0.xlsx;
tableExport_0_77a45.export2file(preferenciasDocumento.data, preferenciasDocumento.mimeType, preferenciasDocumento.filename, preferenciasDocumento.fileExtension, preferenciasDocumento.merges, preferenciasDocumento.RTL, preferenciasDocumento.sheetname);
console.log('Archivo excel generado');
*/
/* Tabla 02: */
var hidden_bloco_1 = document.querySelector("#hidden_bloco_1");
let tableExport_1_77a45 = new TableExport(hidden_bloco_1, {
exportButtons: false, // No queremos botones
headers: false,
ignoreCols: [],
ignoreRows: [],
RTL: false,
bootstrap: false,
filename: "Ejemplo_tabla_02_"+fechayhora(new Date()), //Nombre del archivo de Excel
sheetname: "Datos", //Título de la hoja
});
let datos_tabla_1_77a45 = tableExport_1_77a45.getExportData();
console.log(datos_tabla_1_77a45);
myArray_tabla_1_77a45 = datos_tabla_1_77a45.hidden_bloco_1.xlsx.data;
console.log(myArray_tabla_1_77a45.length);
// Filtramos los valores de la cabecera
var cabecera_1_77a45 = myArray_tabla_1_77a45.filter(function(value, index, arr){
return index == 0;
});
let y_1_77a45=[0,3];
for (let x_tabla_1_77a45 in cabecera_1_77a45) {
console.log(cabecera_1_77a45[x_tabla_1_77a45]);
cabecera_1_77a45[parseInt(x_tabla_1_77a45)] = cabecera_1_77a45[parseInt(x_tabla_1_77a45)].filter((el,i)=>y_1_77a45.some(j => i === j));
}
// Filtramos los valores de los datos
var filtered_1_77a45 = myArray_tabla_1_77a45.filter(function(value, index, arr){
return (value.length == 5 && index >= 1);
});
let x_1_77a45=[0,1];
for (let x_tabla_1_77a45 in filtered_1_77a45) {
console.log(filtered_1_77a45[x_tabla_1_77a45]);
filtered_1_77a45[parseInt(x_tabla_1_77a45)] = filtered_1_77a45[parseInt(x_tabla_1_77a45)].filter((el,i)=>x_1_77a45.some(j => i === j));
}
// Limpiamos datos atípicos
for (let x_tabla_1_77a45 in filtered_1_77a45) {
//console.log(filtered_1_77a45[x_tabla_1_77a45]);
filtered_1_77a45[parseInt(x_tabla_1_77a45)][1].v = filtered_1_77a45[parseInt(x_tabla_1_77a45)][1].v.replaceAll(",","");
filtered_1_77a45[parseInt(x_tabla_1_77a45)][1].t = 'n';
}
// Concatenamos los datos a la cabecera*/
var newdata_1_77a45 = cabecera_1_77a45.concat(filtered_1_77a45);
/* Reemplazamos los valores del excel por la nueva data */
datos_tabla_1_77a45.hidden_bloco_1.xlsx.data= newdata_1_77a45;
// para pruebas de desarrollo
/*
console.log('Preparando para descargar Excel');
let preferenciasDocumento = datos_tabla_1_77a45.hidden_bloco_1.xlsx;
tableExport_1_77a45.export2file(preferenciasDocumento.data, preferenciasDocumento.mimeType, preferenciasDocumento.filename, preferenciasDocumento.fileExtension, preferenciasDocumento.merges, preferenciasDocumento.RTL, preferenciasDocumento.sheetname);
console.log('Archivo excel generado');
*/
/* Tabla 03: */
var hidden_bloco_2 = document.querySelector("#hidden_bloco_2");
let tableExport_2_77a45 = new TableExport(hidden_bloco_2, {
exportButtons: false, // No queremos botones
headers: false,
ignoreCols: [],
ignoreRows: [],
RTL: false,
bootstrap: false,
filename: "Ejemplo_tabla_03_"+fechayhora(new Date()), //Nombre del archivo de Excel
sheetname: "Datos", //Título de la hoja
});
let datos_tabla_2_77a45 = tableExport_2_77a45.getExportData();
console.log(datos_tabla_2_77a45);
myArray_tabla_2_77a45 = datos_tabla_2_77a45.hidden_bloco_2.xlsx.data;
console.log(myArray_tabla_2_77a45.length);
// Filtramos los valores de la cabecera
var cabecera_2_77a45 = myArray_tabla_2_77a45.filter(function(value, index, arr){
return index == 0;
});
let y_2_77a45=[0,3];
for (let x_tabla_2_77a45 in cabecera_2_77a45) {
console.log(cabecera_2_77a45[x_tabla_2_77a45]);
cabecera_2_77a45[parseInt(x_tabla_2_77a45)] = cabecera_2_77a45[parseInt(x_tabla_2_77a45)].filter((el,i)=>y_2_77a45.some(j => i === j));
}
// Filtramos los valores de los datos
var filtered_2_77a45 = myArray_tabla_2_77a45.filter(function(value, index, arr){
return (value.length == 5 && index >= 1);
});
let x_2_77a45=[0,1];
for (let x_tabla_2_77a45 in filtered_2_77a45) {
console.log(filtered_2_77a45[x_tabla_2_77a45]);
filtered_2_77a45[parseInt(x_tabla_2_77a45)] = filtered_2_77a45[parseInt(x_tabla_2_77a45)].filter((el,i)=>x_2_77a45.some(j => i === j));
}
// Limpiamos datos atípicos
for (let x_tabla_2_77a45 in filtered_2_77a45) {
//console.log(filtered_2_77a45[x_tabla_2_77a45]);
//filtered_2_77a45[parseInt(x_tabla_2_77a45)][1].v = filtered_2_77a45[parseInt(x_tabla_2_77a45)][1].v.replaceAll("\n Registre Porcentaje","")
}
// Concatenamos los datos a la cabecera*/
var newdata_2_77a45 = cabecera_2_77a45.concat(filtered_2_77a45);
/* Reemplazamos los valores del excel por la nueva data */
datos_tabla_2_77a45.hidden_bloco_2.xlsx.data= newdata_2_77a45;
// para pruebas de desarrollo
/*
console.log('Preparando para descargar Excel');
let preferenciasDocumento = datos_tabla_2_77a45.hidden_bloco_2.xlsx;
tableExport_2_77a45.export2file(preferenciasDocumento.data, preferenciasDocumento.mimeType, preferenciasDocumento.filename, preferenciasDocumento.fileExtension, preferenciasDocumento.merges, preferenciasDocumento.RTL, preferenciasDocumento.sheetname);
console.log('Archivo excel generado');
*/
/* CREAMOS UN ARRAY DE VALORES EN BLANCO */
var espacio_blanco = [[{v:'',t:''},{v:'',t:''}]];
/* CONCATENAMOS LA DATA DE LAS 3 TABLAS*/
var finaldata_77a45 = newdata_0_77a45.concat(espacio_blanco).concat(newdata_1_77a45).concat(espacio_blanco).concat(newdata_2_77a45).concat(espacio_blanco);
/* REEMPLAZAMOS LOS DATOS DE LA PRIMERA TABLA */
datos_tabla_0_77a45.hidden_bloco_0.xlsx.data= finaldata_77a45
datos_tabla_0_77a45.hidden_bloco_0.xlsx.merges= null;
/* DESCARGAMOS EL EXCEL */
console.log('Preparando para descargar Excel');
let preferenciasDocumento_77a45 = datos_tabla_0_77a45.hidden_bloco_0.xlsx;
tableExport_0_77a45.export2file(preferenciasDocumento_77a45.data, preferenciasDocumento_77a45.mimeType, preferenciasDocumento_77a45.filename, preferenciasDocumento_77a45.fileExtension, preferenciasDocumento_77a45.merges, preferenciasDocumento_77a45.RTL, preferenciasDocumento_77a45.sheetname);
console.log('Archivo excel generado');
Comentarios
Publicar un comentario
Incluye información que aporte al tema