Buenas tardes;
Tenemos una licencia de la biblioteca Flexmonster, la cogimos para que hubiera una gran facilidad a la hora de integrarlo en la herramienta que tenemos para una empresa. Al exportar los archivos, me salen caracteres ilegibles como si hubiera un problema de codificación. Todos mis archivos están con el charset: utf 8 con lo cuál me deberían salir con los acentos y la ñ, pero no es así, he modificado el archivo mil veces y sigue saliendo igual. No sé dónde puede estar el problema con vuestra biblioteca, dejo mi código para ver que estoy haciendo mal.
//Pivot Table
function decodeHtmlEntities(str) {
if (str && typeof str === "string") {
var doc = new DOMParser().parseFromString(str, "text/html");
return doc.documentElement.textContent;
}
return str;
}
{
var reportDef = {
dataSource: {
filename: "/dashboard/data.php?dashboard=" + $('#dashboard').val(),
params: {
dashboard: $('#dashboard').val()
}
}
};
if (report != null && report != "") {
reportDef = report;
}
if (!$('#fK').length) {
pivotLib = 'webdatarocks';
pivot = new WebDataRocks({
container: "#dashboardPivot",
beforetoolbarcreated: customizeToolbar,
toolbar: true,
report: reportDef,
global: {
localization: "/assets/libs/webdatarocks/lang/es.json",
},
reportcomplete: function () {
handleViewChange();
},
});
}
else {
pivotLib = 'flexmonster';
pivot = new Flexmonster({
container: "#dashboardPivot",
componentFolder: "/assets/libs/flexmonster/",
beforetoolbarcreated: customizeToolbar,
toolbar: true,
report: reportDef,
global: {
localization: "/assets/libs/flexmonster/lang/es.json",
},
reportcomplete: function () {
handleViewChange();
},
licenseKey: $('#fK').val(),
beforeExport: function (params) {
params.data = params.data.map(row => row.map(cell => {
if (typeof cell === "string") {
// Paso 1: Decodificar las entidades HTML
cell = decodeHtmlEntities(cell);
// Paso 2: Normalizar a UTF-8 NFC (forma normal compuesta)
cell = cell.normalize("NFC");
// Paso 3: Reemplazar caracteres no imprimibles
cell = cell.replace(/[^\x20-\x7E]/g, ''); // Elimina caracteres no imprimibles
}
return cell;
}));
params.fileName = "ExportedFile.xlsx"; // Nombre del archivo exportado
toolbar: {
items: [
{
name: "export",
title: "Exportar",
icon: "export",
onClick: function () {
// Exportar a Excel usando la función nativa de Flexmonster
pivot.exportTo("xlsx"); // Se exporta directamente a Excel
}
}
]
}
}
});
reportDef = pivot.getReport();
}
Gestiono las entidades HTML antes de exportar los datos, pero aún así siguen saliendo mal.
Espero vuestra respuesta de manera urgente.
Un saludo
Hello,
Thank you for reaching out to us.
Flexmonster displays the UTF-8 charset correctly in the exported files by default. To export the grid to Excel, you can use the following code:
pivot.exportTo("excel");
If you want to add a custom tab that exports the pivot to Excel, you can use the Toolbar customization:
let pivot = new Flexmonster({
// other configs
beforetoolbarcreated: customizeToolbar,
});
function exportExcel() {
pivot.exportTo("excel")
}
function customizeToolbar(toolbar) {
let tabs = toolbar.getTabs()
toolbar.getTabs = function () {
tabs.unshift({
id: "export",
title: "Exportar",
handler: exportExcel,
icon: this.icons.export_excel,
})
return tabs
}
}
This code will add a custom "Exportar" tab to the Toolbar that will export the report to Excel. Please check the following JSFiddle for illustration: https://jsfiddle.net/flexmonster/1ugnzLaw/.
Also, you are welcome to refer to the following guides for more details:
Please let us know if it works for you. Looking forward to hearing from you.
Kind regards,
Nadia