先發一下第一版速度超級慢的代碼:
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
新聞熱點
疑難解答