这段代码来自MVC控制器中的一个更大的函数,其中发布了带有文件的表单。 inputStream来自上传的文件:
var excelFile = new ExcelPackage(inputStream.BaseStream);
ExcelWorksheet worksheet;
try
{
worksheet = excelFile.Workbook.Worksheets["Products"];
}
catch (Exception)
{
// Second time always works?
worksheet = excelFile.Workbook.Worksheets["Products"];
}
首先尝试总是崩溃,然后第二次就会崩溃。我得到的例外是“已经添加了具有相同密钥的项目。”。第二次尝试永远不会失败。
当然这是正常工作的代码,但是人们可能会试着在我这里查看这个内容的乐趣;)
版本:
EPPlus.dll, v3.1.3.0
答案 0 :(得分:1)
我今天遇到同样的问题。很沮丧!我甚至查看了EPPlus的源代码,看看发生了什么,但它并没有真正帮助。
我的问题最终是因为EPPlus正在阅读的电子表格是由LibreOffice Calc创建的.xlsx电子表格,而不是Microsoft Excel。尽管LibreOffice以正确的格式导出,并且电子表格可以在Excel中打开,但是EPPlus期待的东西丢失了。只要我从Excel而不是LibreOffice保存电子表格,就没有问题。
答案 1 :(得分:0)
我在4.5.3.2版本中遇到了同样的问题。 只需使用第二个通话时间即可克服。