使用EPPlus保存Excel文件

时间:2014-07-30 16:46:51

标签: vb.net excel performance epplus

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

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

有没有办法提高创建ExcelPackage或保存Excel文件的性能?

以下是创建ExcelPackage对象的方法:

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并在响应中使用它)。

0 个答案:

没有答案