2017-06-01 38 views
0

我在一個ASP.Net MVC應用程序中使用EPPlus和C#從存儲系統讀取一個excel文檔。它作爲一個字節數組(byte [])返回給方法。我將字節數組轉換爲流,然後轉換爲ExcelPackage並修改現有工作表上的單元格。EPPlus投擲「給定的密鑰不在字典中。」當保存文檔

當我將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; 
    } 
} 

我花了數小時閱讀谷歌和堆棧溢出,一直未能找到答案。

+0

當您嘗試使用不存在的密鑰訪問某些內容時,會拋出此異常。我會從工作表開始。你確定這些表單存在嗎? – Kyle

+0

是的,工作表確實存在。這是我檢查的第一件事。 :) –

回答

1

當我將EPPlus庫從4.1.0降級到3.1.3時,它開始正常工作。

相關問題