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

5

我正在使用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”的异常。

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

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


1
你返回了什么?你介意展示整个例子吗?我正在使用 .net core。 - Joshua Deshazer
1个回答

9
问题在于这些行:
pck.Save();
....
var bytes = pck.GetAsByteArray();

这两个调用都会导致Epplus关闭该包。由于.GetAsByteArray自动调用.Save,因此您不需要再调用.Save,只需删除第一行即可。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接