We have changed our pricing. Flexmonster Software License Agreement was also updated (list of changes)

Error al exportar el excel

Open
Rubén asked 18 hours ago

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

Please login or Register to Submit Answer