Shaman.EPPlus + ASP.NET 核心 MVC - 部分已存在异常

Shaman.EPPlus + ASP.NET Core MVC - Part already exist exception

我正在使用 Shaman.EPPlus,一个应该与 ASP.NET Core MVC 兼容的 EPPlus 版本。 我正在尝试将对象集合导出为 xlxs 文件。 代码如下所示:

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 方法时抛出了包含消息 "Par already exist" 的异常。

at OfficeOpenXml.Packaging.ZipPackage.CreatePart(Uri partUri, String contentType, CompressionLevel compressionLevel)
at OfficeOpenXml.ExcelWorkbook.Save()
at OfficeOpenXml.ExcelPackage.GetAsByteArray(Boolean save)

你知道我可以检查什么吗?

问题是这些行:

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

这两个调用都会导致包被 Epplus 关闭。您不需要 .Save 调用,因为 .GetAsByteArray 会自动调用它,所以只需删除第一行。