我使用以下代碼將一個EPPlus軟件包作爲asp.net MVC中的Excel文件發送到客戶端。但是,我遇到了拋出OutOfMemoryException異常的大文件問題。從MVC EPPlus Excel下載導致內存不足異常
public class ExcelPackageResult : ActionResult
{
public ExcelPackage ExcelPackage { get; set; }
private string _fileName;
public ExcelPackageResult(ExcelPackage excelPackage, string fileName)
{
ExcelPackage = excelPackage;
_fileName = fileName;
}
public override void ExecuteResult(ControllerContext context)
{
context.HttpContext.Response.ClearContent();
ExcelPackage.SaveAs(context.HttpContext.Response.OutputStream);
context.HttpContext.Response.AddHeader("content-disposition", string.Format(@"attachment;filename=""{0}.xlsx""", _fileName));
context.HttpContext.Response.ContentType = "application/excel";
context.HttpContext.Response.Flush();
context.HttpContext.Response.End();
ExcelPackage.Dispose();
}
}
的問題是在該行:ExcelPackage.SaveAs(context.HttpContext.Response.OutputStream);
我也試過: context.HttpContext.Response.BinaryWrite(ExcelPackage.GetAsByteArray());
有沒有辦法直接從ExcelPackage流的響應,而不是分配的內存塊它發送之前?
excel文件中有多少數據? (行和列) – Ernie
四捨五入,190,000行X 40列 – RyanHerbert