Search code examples
javascriptnode.jsamazon-web-servicesaws-lambdaexceljs

Using ExcelJS, how to read data from excel file using URL?


I have excel file upload in cloud. Using node js when front end pass URL i need to read data from excel file. Below is my code,

  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));
        });
    });

But I'm getting this error,

Can't find end of central directory : is this a zip file ? If it is, see https://stuk.github.io/jszip/documentation/howto/read_zip.html

Can someone help me to fix this?


Solution

  • Fixed using the below code.

    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");