【发布时间】: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