0

Служба Java REST (вызов POST) предоставляет файл excel в качестве ответа с помощью hssfWorkbook и возвращает excel в формате xls.Как загрузить excel с помощью Angular JS

response.getOutputStream(); 
hssfWorkbook.write(out); 

Я пробовал Файловый архив, но он будет работать для JSON в качестве ответа. Я не нашел способа реализовать загрузку файла excel в угловом JS. Пожалуйста, предложите любые способы использования углового JS.

ответ

1

Попробуйте это, он будет работать.

API

httpServletResponse.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); 
httpServletResponse.setHeader("Content-Disposition", 
         "attachment; filename=sample.xlsx"); 
workbook.write(httpServletResponse.getOutputStream()); 
workbook.close(); 
httpServletResponse.getOutputStream().close(); 

$ HTTP называют

$scope.download = function() { 
      $http({ 
       url: '/download', 
       method: "POST", 
       data: $scope.pagination, 
       headers: { 
        'Content-type': 'application/json' 
       }, 
       responseType: 'arraybuffer' 
      }).success(function(data, status, headers, config) { 
       var blob = new Blob([data], { 
        type: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" 
       }); 
       saveAs(blob, "Sales_Summary_Report.xls"); 
      }).error(function(data, status, headers, config) { 

      }); 
    } 

HTML

<button ng-click="download()"> Download Excel </button> 
+0

Я получаю [объект Object] в моей первенствовать .I попробовал то же самое с помощью FileSaver, но не работает. – user3428736

+0

Я пробовал ваш пример, и я получаю весь ответ в качестве байта в своем excel. У вас есть какой-либо рабочий пример того, что является типом возврата в JAVA и немного больше кода, это было бы полезно. – user3428736

+0

Вы можете загрузить файл из браузера –

0

Для IE вы можете попробовать msSaveOrOpenBlob для других браузеров намекают с невидимой связью анкера должны решить, код, как это работает хорошо для меня:

$http(/*your request details */). 
      success(function(data) { 
       var blob = new Blob([data], { type: 'application/vnd.ms-excel' }), 
        fileName = 'Sales_Summary_Report.xls'; 
       if (window.navigator.msSaveOrOpenBlob) { 
        window.navigator.msSaveOrOpenBlob(blob, fileName); 
       } else { 
        var anchor = angular.element('<a/>'); 
        anchor.css({ display: 'none' }); 
        angular.element(document.body).append(anchor); 
        anchor.attr({ 
         href: (window.URL || window.webkitURL).createObjectURL(blob), 
         target: '_blank', 
         download: fileName 
        })[0].click(); 
        anchor.remove(); 
       } 
      }) 
+0

После использования вышеуказанного code.Я получаю все данные в виде байтов в моем листе excel. Пожалуйста, предположите, почему данные поступают в виде байтов – user3428736

+0

Я пробовал ваш пример, и я получаю весь ответ в качестве байта в своем excel, когда его пытают, но из бэкэнд, если я его сохраню, выглядит хорошо. Если я попробую запрос из back-end, я получаю ответ как массив байтов, но если я попытаюсь сохранить формат xls, он выглядит хорошо. Тот же сценарий из front-end, что, если я пытаюсь добавить данные в blob, он передает байты и записывает их в excel. Пожалуйста, предложите об этом. – user3428736

+0

@ user3428736 Вы можете ответить на этот вопрос http://stackoverflow.com/questions/43894768/how-to-set-the-no-of-column-name-while-export-the-excel-using-angularjs – Vinoth

Смежные вопросы