Me gustaría pedir ayuda para resolver el problema al que me enfrento (no soy un desarrollador de JavaScript, tenga en cuenta). Cualquier ayuda será de gran utilidad.
Proceso : el usuario carga el archivo de Excel seleccionado desde la interfaz de usuario. En el back-end, procesamos el archivo con las bibliotecas xlsx/exceljs javascirpt (probamos ambas, el mismo resultado final) para completar las estructuras de datos personalizadas para usos posteriores.
Problema: con archivos grandes de Excel (desde 10k filas y más, con muchos atributos) aparece el siguiente error:
...Error: Zip corrupto: no se puede encontrar el final del directorio central.
Información adicional: al ejecutar el mismo código en el servidor nodejs simple (localmente), funciona. En el servidor SAP, no lo hace. Con archivos pequeños, todo bien.
Tecnología: SAP S/4Hana, OData v4, xlsx v0.18.5, exceljs v4.3.0, nodo >=v12.
Ejemplo de código:
//with exceljs library fromXlsx_1: async (buffer, cols) => { const workbook = new ExcelJS.Workbook(); await workbook.xlsx.load(buffer);//<-- error workbook.worksheets.forEach(function(sheet) { //some code }); }, //with xlsx library fromXlsx_2: (buffer, cols) => { var book = XLSX.read(buffer, { type: 'buffer', cellDates: true, cellText: false);//<-- error var sheet = book.Sheets[book.SheetNames[0]]; const result = XLSX.utils.sheet_to_json(sheet, { header: Object.entries(cols).map(a => a[0]), raw: true }); //some code }Si se necesita más información, pregunte. Gracias por tu tiempo.
Consiguió solucionarlo. La causa principal fue: la falta de conocimiento y la implementación del paquete "busboy" (supuso que los colegas que escribieron el paquete personalizado para "procesar" los archivos no cometieron un error). Si se topa con un problema similar al mío, verifique dos veces la implementación de "busboy", si está analizando el archivo correctamente y ESPERA a que el archivo se procese por completo, con el concepto async/await.