先發(fā)一下第一版速度超級慢的代碼:
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行的數(shù)據(jù)差不多要用半分多鐘的時(shí)間,還就三列而已,這速度簡直不能忍受啊~網(wǎng)上翻了一下資料,有大神給出了解釋:Excel.Range的Value屬性是Object的二維數(shù)組。于是我想,不去遍歷每個(gè)單元格,而是一次取得所要操作區(qū)域(Range)的Value屬性,對這個(gè)二維數(shù)組操作,最后再把這個(gè)二維數(shù)組賦回去,就大功能告成了。把后面循環(huán)的代碼段改成下面的寫法,秒加載完成啊!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
新聞熱點(diǎn)
疑難解答