La descarga de Excel no funciona en la aplicación MEAN stack

Quiero descargar el archivo de Excel cuando hago clic en el botón.

Cuando hago clic en el botón de descarga, quiero crear un archivo de Excel con datos dynamics de la base de datos y descargarlo (Nota: no quiero crear y almacenar el archivo de Excel en una ruta física y luego descargarlo).

Código HTML

 

Código del controlador

  $scope.exportData = function () { $http.get('/Getexcel').then(function (response) { }); }; 

Código de servidor

  const ExcelConfig = require('./public/Models/Schema/excel'); app.get('/Getexcel', ExcelConfig.getexceldata); 

Nota: ExcelConfig contiene la ruta del código de esquema.

codigo excel.js

 // Require library var xl = require('excel4node'); const tempfile = require('tempfile'); // Create a new instance of a Workbook class var wb = new xl.Workbook(); // Add Worksheets to the workbook var ws = wb.addWorksheet('MaterialFlowSheet'); // Create a reusable style var style = wb.createStyle({ font: { color: '#FF0800', size: 12 }, numberFormat: '$#,##0.00; ($#,##0.00); -' }); exports.getexceldata = (req, res) => { ws.cell(1, 1).string('BatchId').style(style); ws.cell(1, 2).string('Source').style(style); ws.column(2).setWidth(50); ws.row(1).setHeight(20); ws.cell(1, 3).string('Destination').style(style); ws.column(3).setWidth(50); ws.row(1).setHeight(20); ws.cell(1, 4).string('DistanceBetweenTwoBuilding').style(style); ws.column(4).setWidth(25); ws.row(1).setHeight(20); ws.cell(1, 5).string('SKU').style(style); ws.cell(1, 6).string('UOM').style(style); ws.cell(1, 7).string('QtyToBeDelivered').style(style); ws.column(7).setWidth(20); ws.row(1).setHeight(20); ws.cell(1, 8).string('CartType').style(style); wb.write('Excel.xlsx'); res.download('\Excel.xlsx'); }; 

He intentado con la descarga del archivo de muestra anterior. Entonces, cuando hago clic en el botón Descargar, el archivo no se descarga, en su lugar no ocurre nada en la interfaz de usuario. Pero me estoy descargando si http://localhost:8080/Getexcel esta URL http://localhost:8080/Getexcel . ¿Alguien puede dar la solución para descargar el archivo de Excel haciendo clic en el botón Descargar?

Debes enviar respuesta como archivo

 app.get('/spreadsheet', function(req, res, next) { res.setHeader('Content-disposition', `attachment;filename=data.xls`); res.setHeader('Content-type', 'application/vnd.ms-excel'); res.charset = 'UTF-8'; res.status(200).end(xls); }); 

Tal vez sea tarde pero, dado que su código del lado del servidor está bien (no soy un experto en nodo o Express), debe establecer el encabezado de solicitud en su solicitud:

 $scope.exportData = function () { $http.get('/Getexcel', {responseType: "arraybuffer"}). .... }; 

Entonces tal vez use FileSaver para guardar la respuesta al archivo, como este

 $scope.exportData = function () { $http.get('/Getexcel', {responseType: "arraybuffer"}) .success(function(response) { data = new Blob([response.data], {type: response.headers('content-type')}); FileSaver.saveAs(data, filename); }); };