EPPlus工作表在第一次尝试时总是抛出exception,然后在第二次尝试中工作

这段代码是来自一个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 

我今天遇到了同样的问题。 非常沮丧! 我甚至查看了EPPlus的源代码,看看发生了什么事情,但并没有真正的帮助。

我的问题最终是因为EPPlus正在阅读的电子表格是LibreOffice Calc创build的.xlsx电子表格,而不是Microsoft Excel。 尽pipeLibreOffice以正确的格式导出,并且电子表格可以在Excel中打开,但是EPPlus期望的却是缺less的东西。 只要我从Excel而不是LibreOffice保存电子表格,没有问题。