Tengo carga de archivos de Excel en la nube. Al usar el nodo js cuando la URL de paso del front-end necesito leer datos del archivo de Excel. A continuación se muestra mi código,
var workbook = new ExcelJS.Workbook(); workbook.xlsx.load('https://file-examples.com/wp-content/uploads/2017/02/file_example_XLSX_10.xlsx') .then(function() { var worksheet = workbook.getWorksheet(sheet); worksheet.eachRow({ includeEmpty: true }, function(row, rowNumber) { console.log("Row " + rowNumber + " = " + JSON.stringify(row.values)); }); });Pero estoy recibiendo este error,
No se puede encontrar el final del directorio central: ¿es un archivo zip? Si es así, consulte https://stuk.github.io/jszip/documentation/howto/read_zip.html
¿Puede alguien ayudarme a arreglar esto?
Se corrigió usando el siguiente código.
const axios = require("axios"); const XLSX = require("xlsx"); const jsontoxml = require("jsontoxml"); async function testAxiosXlsx(url) { const options = { url, responseType: "arraybuffer" } let axiosResponse = await axios(options); const workbook = XLSX.read(axiosResponse.data); let worksheets = workbook.SheetNames.map(sheetName => { return { sheetName, data: XLSX.utils.sheet_to_json(workbook.Sheets[sheetName]) }; }); console.log("json:\n", JSON.stringify(worksheets), "\n\n"); console.log("xml:\n", jsontoxml(worksheets, {})); } testAxiosXlsx("https://file-examples.com/wp-content/uploads/2017/02/file_example_XLSX_10.xlsx");Mira la documentación .
El método de load espera que pase un búfer que contiene datos de Excel.
Le está pasando una cadena, y esa cadena contiene una URL, no datos de Excel.