0

Java RESTサービス(POST呼び出し)は、hssfWorkbookを使用して応答としてExcelファイルを提供し、xls形式でExcelに戻ります。Angular JSを使用してExcelをダウンロードするには

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

私はFilesaverを試しましたが、JSONの応答として機能します。私は角の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

私はエクセル.Iで[Objectオブジェクト]を取得していますFileSaverを使用して同じことを試みたが、作業をしていません。 – user3428736

+0

私はあなたの例を試してみました。私はすべての応答を私のExcelでバイトとして取得しています。 JAVAの戻り値の型が何であるかのための実例があります。 – user3428736

+0

ブラウザからファイルをダウンロードできますか? –

0

IEのためには、を試すことができます他のブラウザのためのは、目に見えないアンカーリンクにヒントそれを解決する必要があり、このようなコードは私のために良い作品:

$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

上記を使用した後私のExcelシートでは、すべてのデータをバイト形式で取得しています。データがバイトとして来る理由を提案してください – user3428736

+0

私はあなたの例を試してみました。フロントエンドから試してみましたが、バックエンドから試してみるとすべてのレスポンスがバイトで表示されています。私がバックエンドからリクエストを試みると、バイト配列として応答が得られますが、xls形式で保存しようとするとうまくなります。フロントエンドからの同じシナリオで、データをBLOBに追加しようとすると、バイトを渡して書き込みが巧妙になるということです。これをお勧めします。 – user3428736

+0

@ user3428736この質問にお答えできますか?http://stackoverflow.com/questions/43894768/how-to-set-the-no-of-column-name-while-export-the-excel-using-angularjs – Vinoth

関連する問題