当导出巨大的Excel文件时,mscorlib.dll中发生“System.OutOfMemoryException”

我试图使用EPPlus导出包含1,800,000多行数据的9个列的Excel文件。 我使用了一个DataSet并将其分成批(每个DataTable 100,000个)。 目前最多可以输出1,000,000行。

这里是我的代码出口如下:

public FileContentResult ExportInventory() { DataSet dsInventory = Session["Live_Inventory"] as DataSet; var filename = "Excel Inventory.xlsx"; var excelContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; byte[] excelContent = ExportExcel(dsInventory); return File(excelContent, excelContentType, filename); } public byte[] ExportExcel(DataSet dsInventory) { byte[] result = null; ExcelWorksheet workSheet = null; var package = new ExcelPackage(); for (int tbl = 1; tbl <= dsInventory.Table.Count; tbl++) { workSheet = package.Workbook.Worksheets.Add(String.Format("Sheet " + tbl)); workSheet.Cells["A1"].LoadFromDataTable(dsInventory.Tables[tbl], true); } result = package.GetAsByteArray();//Exception occurs here when table count > 10 return result; } 

 public void DataToExcel(DataTable dataToConvert, HttpResponse response) { FileInfo myFile = new FileInfo("~/MyProject/Inventory.xlsx"); using (ExcelPackage package = new ExcelPackage(myFile)) { ExcelWorksheet worksheet = package.Workbook.Worksheets.Add("Sheet1"); worksheet.Cells["A1"].LoadFromDataTable(dataToConvert, true, OfficeOpenXml.Table.TableStyles.Light1); package.Save(); response.Clear(); response.ContentType = "application/vnd.openxmlformats-officedocument.wordprocessingml.document"; response.AddHeader("Content-Disposition", string.Format("attachment;filename=\"{0}\"", "Inventory.xlsx")); response.WriteFile("~/MyProject/Inventory.xlsx"); response.Flush(); response.End(); } } 

已更新答案:

你应该看看这个: 将大数据导出到exel文件

这应该肯定会帮助你。