2017-12-11 3 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> 
관련 문제