2016-09-16 17 views
1

webapi/angularjsアプリケーションでclosedXml Excelファイルをダウンロードしようとしています。webapiとangularjsを使用してExcelファイルをダウンロード

私が使用して、サーバー上のWEBAPIコントローラーからデータを返すよ:

HttpResponseMessage result = new HttpResponseMessage(); 
result = Request.CreateResponse(HttpStatusCode.OK); 
MemoryStream stream = GetStream(workbook); 
result.Content = new StreamContent(stream); 
result.Content.Headers.ContentType = new MediaTypeHeaderValue("application/vnd.ms-excel"); 
result.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment") 
{ 
    FileName = "Download.xlsx" 
}; 
return result; 

して、使用してクライアントにそれを保存する:

$scope.openExcel = function (data, status, headers, deferred) { 
     var type = headers('Content-Type'); 
     var disposition = headers('Content-Disposition'); 
     if (disposition) { 
      var match = disposition.match(/.*filename=\"?([^;\"]+)\"?.*/); 
      if (match[1]) 
       defaultFileName = match[1]; 
     } 
     defaultFileName = defaultFileName.replace(/[<>:"\/\\|?*]+/g, '_'); 
     var blob = new Blob([data], { type: type }); 

     saveAs(blob, defaultFileName); 

Excelがファイルが異なる中であると言います書式が拡張子で指定されたものより大きくなっていて、正しく開けません。

私は仕事のプロジェクトに

答えて

0

、私はファイル用のコントローラ(ないApiController)を作る

public class FilesController : Controller 
{ 
    public FileResult GetFile(/*params*/) 
    { 
     // get fileBytes 
     var contentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; 
     return base.File(fileBytes, contentType, "Download.xlsx"); 
    } 
} 

、その後の角度から、私はこの

$window.open("/Files/GetFile/" /*+ params*/); 
のようなファイルを開きます
関連する問題