2016-09-16 3 views
1

Ich versuche, eine ClosedXml Excel-Datei in einer Webapi/Angularjs-Anwendung herunterladen.Excel-Datei mit Webapi und Angularjs herunterladen

ich Rückkehr die Daten aus dem WebAPI-Controller auf dem Server mit:

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; 

und es dann auf dem Client-Speichern mit:

$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 sagt die Datei in einem anderen ist Format als von der Erweiterung angegeben und dann nicht ordnungsgemäß geöffnet.

Antwort

0

an Projekten arbeite ich an, ich habe einen Controller für Dateien (keinen 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"); 
    } 
} 

und dann von Winkel machen, öffne ich die Datei wie diese

$window.open("/Files/GetFile/" /*+ params*/); 
Verwandte Themen