2016-10-15 3 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コールは必要ありません。したがって、最初の行を削除するだけです。

関連する問題