用EPPlus保存Excel文件

我最近更新了我的.NET应用程序使用EPPlus库来保存Excel文件(以前使用MS COM互操作库),性能更好(速度提高了大约50%),但实际保存文件的速度很慢(在某些情况下,比使用MS COM互操作时保存调用慢)。

Excel工作簿大约有120万个单元格(大约20000行,分成32个工作表,每个表格平均大约60列),文件大小约为6.2 MB。 获取表格的数据后,创build和保存的过程大约需要15-16秒。 创buildEPPlus ExcelPackage大概需要4秒钟,做一些格式化(单元格注释,下拉等等)大约1秒钟,然后将文件保存大约10秒钟到C:驱动器上的一个位置。

有什么办法来提高创buildExcelPackage或保存Excel文件的性能吗?

这里是创buildExcelPackage对象的方法:

Public Shared Function CreateExcelPackageFromDS(ByVal ds As DataSet) As ExcelPackage Dim xlPackage As New ExcelPackage() Dim oBook As ExcelWorkbook = xlPackage.Workbook 'Load each table into worksheet For Each dt As System.Data.DataTable In ds.Tables Dim ws As ExcelWorksheet = oBook.Worksheets.Add(dt.TableName) ws.Cells.LoadFromDataTable(dt, True) ws.Cells.Style.Locked = False Next Return xlPackage End Function 

这里是调用该方法并保存Excel文件的代码:

 CreateExcelPackage(ds) 'Formatting stuff goes here Dim excelFile As New FileInfo(tempFilesPath & "\Export" & userID & ".xlsx") xlPackage.SaveAs(excelFile) 'Stuff for writing Excel file to HTML Response goes here 

我已经尝试了其他方法来保存文件,但它们大致相同(如使用ExcelPackage.SaveAs到MemoryStream),或者更慢(使用ExcelPackage.GetAsByteArray并在Response中使用)。