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