先发一下第一版速度超级慢的代码:
Dim dt As New DataTable Dim ExcelApp As New Excel.application Dim WorkBook As Excel.Workbook Dim WorkSheet As Excel.Worksheet Dim dt As New DataTable dt.Columns.Add("编号") dt.Columns.Add("地址码") dt.Columns.Add("姓名") For i As Integer = 1 To 10000 dt.Rows.Add({i, WorkSheet.Cells(i + 1, 3).value, WorkSheet.Cells(i + 1, 4).value}) Next这样写的话,加载1w行的数据差不多要用半分多钟的时间,还就三列而已,这速度简直不能忍受啊~网上翻了一下资料,有大神给出了解释:Excel.Range的Value属性是Object的二维数组。于是我想,不去遍历每个单元格,而是一次取得所要操作区域(Range)的Value属性,对这个二维数组操作,最后再把这个二维数组赋回去,就大功能告成了。把后面循环的代码段改成下面的写法,秒加载完成啊!Dim ary As Object(,) = WorkSheet.Range("A1:E10001").Value For i As Integer = 1 To 10000 dt.Rows.Add({i, ary(i + 1, 3), ary(i + 1, 4)}) Next
新闻热点
疑难解答