2016-10-15 2 views
3

Shaman.EPPlus, ASP.NET Core MVC와 호환되어야하는 EPPlus 버전을 사용하고 있습니다. 개체 컬렉션을 xlxs 파일로 내보내려고합니다. 코드는 다음과 같습니다Shaman.EPPlus + ASP.NET Core MVC - 이미 존재하는 예외

foreach(var client in clientsToExport) 
{ 
    clientList.Add(new object[] { "FirstName", client.FirstName }); 
} 

MemoryStream stream = new MemoryStream();   
using (ExcelPackage pck = new ExcelPackage(stream)) 
{ 
    ExcelWorksheet ws = pck.Workbook.Worksheets.Add("Clients"); 
    ws.Cells["A1"].LoadFromArrays(clientList); 
    pck.Save(); 

    Response.Clear(); 
    Response.Headers.Add("content-disposition", "attachment; filename=Clients.xlsx"); 
    Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; 
    var bytes = pck.GetAsByteArray(); 
    Response.Body.WriteAsync(bytes, 0, bytes.Length); 
} 

GetAsByteArray 메서드를 호출 할 때 메시지 "파 이미 존재"를 포함 예외가 발생 것 같다.

OfficeOpenXml.ExcelPackage.GetAsByteArray에서
(부울 저장) OfficeOpenXml.ExcelWorkbook.Save()에서
OfficeOpenXml.Packaging.ZipPackage.CreatePart (열린 우리당 partUri, 문자열 ContentType을, CompressionLevel compressionLevel)에서

내가 뭘 확인할 수 있는지 아십니까? 두 호출이 패키지가 Epplus에 의해 폐쇄되는 원인이됩니다

pck.Save(); 
.... 
var bytes = pck.GetAsByteArray(); 

:

+1

무엇을 반환 했습니까? 전체 예제를 보여 주시겠습니까? .net 코어도 사용하고 있습니다. –

답변

7

문제는이 라인이다. 어쨌든 .GetAsByteArray에 의해 자동으로 호출되므로 .Save 호출이 필요하지 않으므로 첫 번째 행을 제거하면됩니다.

관련 문제