以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  excel数据读取效率请教  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=53959)

--  作者:hbhb
--  发布时间:2014/7/18 16:54:00
--  excel数据读取效率请教
Dim App As New MSExcel.Application
Dim Wb As MSExcel.WorkBook = App.WorkBooks.Open(a.Value)
Dim Ws As MSExcel.WorkSheet = Wb.WorkSheets(b.Value)

For n1 As Integer = 1 To 2500
    Dim r As Row = Tables("订单表").AddNew()
    
    For m As Integer = 1 To 10
        If IsNumeric(ws.cells(n1,m).value)  Then
            r(m+4) =val( ws.cells(n1,m).value)
        End If
        r(m + 4) = trim(ws.cells(n1,m).value)
        r(m + 4) = r(m).replace(" ","")
    Next
Next

大师:以上这段代码读取2500多行数据要两分钟,请问如何改进提高效率?

--  作者:lsy
--  发布时间:2014/7/18 17:14:00
--  

表还没保存嘞,再加上保存的时间,不知道是几个两分钟了。


--  作者:有点甜
--  发布时间:2014/7/18 17:18:00
--  

第一步:新增行,直接新增n行 Tables("订单表").AddNew(2500)

 

第二步:一次性赋值单元格内容转成数组

 

Dim App As New MSExcel.Application
Dim Wb As MSExcel.WorkBook = App.WorkBooks.Add
Dim Ws As MSExcel.WorkSheet = Wb.WorkSheets(1)
Dim Rg As MSExcel.Range = Ws.Range("A1:B10")
ws.cells(1,1).value = "1"
ws.cells(1,2).value = "2"
Dim ary = rg.value
For i As Integer = 1 To 10
    For j As Integer = 1 To 2
        output.show(ary(i,j))
    Next
Next