Sé que 'xlsx' puede descargar Excel como:
xlsx.writeFile(book, "saveXlsx.xlsx");pero algunos ejemplos, usaron 'file-saver' para descargar Excel
como:
function exportExcel(){ // step 1. create workbook var wb = XLSX.utils.book_new(); // step 2. create sheet var newWorksheet = excelHandler.getWorksheet(); // step 3. append sheet to workbook XLSX.utils.book_append_sheet(wb, newWorksheet, excelHandler.getSheetName()); // step 4. create excel file var wbout = XLSX.write(wb, {bookType:'xlsx', type: 'binary'}); // step 5. save excel file used file-saver saveAs(new Blob([s2ab(wbout)],{type:"application/octet-stream"}), excelHandler.getExcelFileName()); var excelHandler = { getExcelFileName : function(){ return 'table-test.xlsx'; }, getSheetName : function(){ return 'Table Test Sheet'; }, getExcelData : function(){ return document.getElementById('tableData'); }, getWorksheet : function(){ return XLSX.utils.table_to_sheet(this.getExcelData()); }} }
porque hacen eso?
Creo que el paso 5 no es necesario, puede reemplazar a esto:
xlsx.writeFile(book, "saveXlsx.xlsx");Es lo mismo en la mayoría de los navegadores que la información de Download a file in legacy browsers en Léame https://www.npmjs.com/package/xlsx/v/0.18.5
Las técnicas XLSX.writeFile funcionan para la mayoría de los navegadores modernos, así como para los IE más antiguos. Para navegadores mucho más antiguos, existen soluciones alternativas implementadas por bibliotecas contenedoras.
FileSaver.js implementa saveAs. Nota: XLSX.writeFile llamará automáticamente a saveAs si está disponible.
Supongo que depende de la versión de su biblioteca xlsx . Tal vez saveAs funcione bien en algunos navegadores mucho más antiguos, mientras que xlsx.writeFile no.