2017-12-11 37 views
0

OpenXMLを使用して、MVCアプリケーションでExcelドキュメントを作成しています。限り、コードが行く、私はすべてを正しくやっていると思う。OpenXMLでExcelを作成してもファイルが開かない

C#

public FileResult GetExcelReport() 
{ 
    // Build dataset 
    var excelStream = CreateSpreadsheet(data); 
    return new FileStreamResult(excelStream, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet); 
} 

internal MemoryStream CreateSpreadsheet(DataSet data) 
{ 
    var stream = new MemoryStream(); 
    SpreadsheetDocument ssDoc = SpreadsheetDocument.Create(stream, SpreadsheetDocumentType.Workbook); 
    // do some stuff to make a spreadsheet 

    ssDoc.Close(); 
    return stream; 
} 

JS

function createExcelReport(){ 
    $.ajax({ 
     url: "/Remote/GetExcelReport", 
     type: "GET", 
     dataType: "text", 
     cache: false, 
     data: { 
      sData: // params for report 
     }, 
     success: function(data){ 
      window.location.href = "/Page/Index" 
     }, error: function(error){ 
     } 
    }); 
} 

私はそれが実際に/セーブをダウンロードせずにブラウザで開くファイルを望んでいます。プロセスは動作しているように見えますが、ファイルは開かれません。私が変更した場合は

SpreadsheetDocument ssDoc = SpreadsheetDocument.Create(stream, SpreadsheetDocumentType.Workbook); 

SpreadsheetDocument ssDoc = SpreadsheetDocument.Create("filename.xlsx", SpreadsheetDocumentType.Workbook); 

(代わりにメモリストリームのファイル名を使用する)、すべてが正常に動作し、それは私のハードドライブに保存されますが、その後私が持っている

へその場所に移動してファイルを開きます。

私は何が間違っているかもしれないと思いますか?前もって感謝します!

答えて

0

私の問題は解決しました。私のAJAXは応答で何もしていなかったので、AJAX呼び出しの代わりに@ Url.Actionリンクを使用しました -

<a href="@Url.Action("GetExcelReport","Remote")">Report</a> 
関連する問題