Shaman.EPPlus + ASP.NET Core MVC-部分已存在异常 [英] Shaman.EPPlus + ASP.NET Core MVC - Part already exist exception
问题描述
我正在使用 Shaman.EPPlus ,它应该是兼容的EPPlus版本使用ASP.NET Core MVC. 我正在尝试将对象集合导出为xlxs文件. 代码如下:
I am using Shaman.EPPlus, a version of EPPlus that should be compatible with ASP.NET Core MVC. I am trying to export a collection of object as xlxs file. The code looks like this:
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 has exist"的异常.
It seems that an exception containing the message "Par already exist" is thrown when GetAsByteArray method is called.
在OfficeOpenXml.Packaging.ZipPackage.CreatePart(Uri partUri,字符串contentType,CompressionLevel compressionLevel)
在OfficeOpenXml.ExcelWorkbook.Save()
在OfficeOpenXml.ExcelPackage.GetAsByteArray(布尔保存)
at OfficeOpenXml.Packaging.ZipPackage.CreatePart(Uri partUri, String contentType, CompressionLevel compressionLevel)
at OfficeOpenXml.ExcelWorkbook.Save()
at OfficeOpenXml.ExcelPackage.GetAsByteArray(Boolean save)
你知道我能检查什么吗?
Do you know what could I check?
推荐答案
问题是这些行:
pck.Save();
....
var bytes = pck.GetAsByteArray();
这两个调用都会导致Epplus关闭该程序包.您不需要.Save
调用,因为无论如何该调用都会被.GetAsByteArray
自动调用,因此只需删除第一行即可.
Both calls will cause the package to be closed by Epplus. You do not need the .Save
call since that will automatically be called by .GetAsByteArray
anyway so simply remove the first line.
这篇关于Shaman.EPPlus + ASP.NET Core MVC-部分已存在异常的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!