【问题标题】:EPPlus throwing "The given key was not present in the dictionary." when saving an documentEPPlus 抛出“字典中不存在给定的密钥。”保存文档时
【发布时间】:2017-11-03 01:26:47
【问题描述】:

我在 ASP.Net MVC 应用程序中使用 EPPlus 和 C# 从存储系统中读取 excel 文档。它以字节数组 (byte[]) 的形式返回给方法。我将字节数组转换为流,然后转换为 ExcelPackage 并修改现有工作表上的单元格。

当我将 ExcelPackage 转换回流时,将作为 FileStreamResult 提供给调用浏览器。当我执行 MemoryStream ms = new MemoryStream(excel.GetAsByteArray());我得到了上面引用的异常。

    public ActionResult Export(string id)
    {
        // Get the Excel document from storage

        MemoryStream ohDoc = new MemoryStream();
        ohDoc.Write(doc.data, 0, doc.data.Length);
        ohDoc.Position = 0;

        ExcelPackage excel = new ExcelPackage(ohDoc);
        var workBook = excel.Workbook;
        var bidInfo = excel.Workbook.Worksheets["BID INFO"];
        var recap = excel.Workbook.Worksheets["RECAP"];

        // Modify the worksheets ...

        MemoryStream ms = new MemoryStream(excel.GetAsByteArray());
        ms.Position = 0;

        FileStreamResult fileStreamResult = new FileStreamResult(ms, doc.MIMEType);
        fileStreamResult.FileDownloadName = doc.FileName;

        return fileStreamResult;
    }
}

我花了几个小时阅读 Google 和 Stack Overflow,但一直没有找到答案。

【问题讨论】:

  • 当您尝试使用不存在的密钥访问某些内容时,会抛出此 Exception。我将从工作表开始。你确定这些工作表存在吗?
  • 是的,工作表确实存在。这是我检查的第一件事。 :)
  • SheetName 带空格可能不支持,请从工作表名称中删除空格@RusselMadere
  • @KailashChandraPolai 不幸的是,我无法控制电子表格。如果我这样做了,那将是一个 Web 应用程序。
  • 我在使用 Google 表格生成的文件使用复制功能时也遇到了这个问题。

标签: c# asp.net-mvc excel epplus


【解决方案1】:

当我将 EPPlus 库从 4.1.0 降级到 3.1.3 时,它开始正常工作。

【讨论】:

    猜你喜欢
    • 2018-04-19
    • 2014-02-10
    • 2015-05-04
    • 2021-10-11
    • 2011-01-08
    • 2014-09-14
    • 2016-02-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多