Vb.net 用EPPlus保存Excel文件
我最近更新了我的.NET应用程序,使用EPPlus库保存Excel文件(以前使用的是MS COM interop库),性能更好(速度提高约50%),但实际保存文件的调用非常慢(在某些情况下,比我使用MS COM interop时的保存调用慢) Excel工作簿约有120万个单元格(约20000行,分为32个工作表,平均每张工作表约60列),文件大小约为6.2MB。获取图纸数据后,创建和保存过程大约需要15-16秒。创建EPPlus ExcelPackage大约需要4秒钟,进行一些格式化(单元格注释、下拉列表等)大约需要1秒钟,然后将文件保存到我的C:驱动器上的某个位置大约需要10秒钟 是否有任何方法可以提高创建Excel软件包或保存Excel文件的性能 以下是创建ExcelPackage对象的方法:Vb.net 用EPPlus保存Excel文件,vb.net,excel,performance,epplus,Vb.net,Excel,Performance,Epplus,我最近更新了我的.NET应用程序,使用EPPlus库保存Excel文件(以前使用的是MS COM interop库),性能更好(速度提高约50%),但实际保存文件的调用非常慢(在某些情况下,比我使用MS COM interop时的保存调用慢) Excel工作簿约有120万个单元格(约20000行,分为32个工作表,平均每张工作表约60列),文件大小约为6.2MB。获取图纸数据后,创建和保存过程大约需要15-16秒。创建EPPlus ExcelPackage大约需要4秒钟,进行一些格式化(单元格注
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并在响应中使用该方法)。听起来您受到HDD写入速度的限制……我想这是库的一个限制。您可以询问讨论中的人,也可以自己运行测试。我看到6MB xlsx的性能与此类似,它有3张表,38列,总共约90k行,构建时间为30秒,编写时间为20秒。使用i7四元组、32GB RAM、1TB SSD并没有太多瓶颈。