2016-10-15 3 views
3

Я использую Shaman.EPPlus, версию EPPlus, которая должна быть совместима с ASP.NET Core MVC. Я пытаюсь экспортировать коллекцию объекта в файл 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.Packaging.ZipPackage.CreatePart (Uri partUri, струнного CONTENTTYPE, CompressionLevel CompressionLevel)
на OfficeOpenXml.ExcelWorkbook.Save()
в OfficeOpenXml.ExcelPackage.GetAsByteArray (Boolean) сохранить

Знаете ли вы, что я могу проверить?

+1

что вы вернули, не возражаете, показывая весь ваш пример Я использую .net core также –

ответ

7

Проблема в эти строки:

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

Оба вызова будут вызывать пакет будет закрыт Epplus. Вам не нужен вызов .Save, так как он будет автоматически вызываться .GetAsByteArray в любом случае, поэтому просто удалите первую строку.

Смежные вопросы