Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 用EPPlus保存Excel文件_Vb.net_Excel_Performance_Epplus - Fatal编程技术网

Vb.net 用EPPlus保存Excel文件

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秒钟,进行一些格式化(单元格注

我最近更新了我的.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对象的方法:

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并没有太多瓶颈。