用下面的代码,我测试6秒左右
Dim dlg As New OpenFileDialog '定义一个新的OpenFileDialog
dlg.Filter= "excel文件|*.xls;*.xlsx" '设置筛选器
If dlg.ShowDialog = DialogResult.Ok Then '如果用户单击了确定按钮
Dim App As New MSExcel.Application
try
Dim Wb As MSExcel.WorkBook = App.WorkBooks.Open(dlg.FileName)
Dim Ws As MSExcel.WorkSheet = Wb.WorkSheets(1)
Tables("总表").StopRedraw()
'注意以下数组中列名称的顺序,必须和Excel表中的列顺序一致
Dim nms() As String = {"地区","车号","序号","时间","发动机水温(℃)","水上液压油温(℃)","风扇传动油温(℃)","变速箱油温(℃)", _
"分动箱油温(℃)","油底壳温度(℃)","动力舱内温(℃)","发动机油压(Mpa)","储气瓶I压力(Mpa)","储气瓶II压力(Mpa)", _
"水上液压油压(Mpa)", "变速箱油压(Mpa)","电流(A)","电压(V)","转速(rpm)","车速(km/h)","中置油箱油量", _
"车尾油箱油量", "总里程(km)","本次里程(km)","行驶摩托小时(h:m)","总摩托小时(h:m)"}
'注意下面的循环变量从1开始,而不是从0开始,因为Excel表的第一行是标题
Dim rg = ws.UsedRange
Dim ary = rg.value
For n As Integer = 2 To rg.Rows.count
Dim r As Row = Tables("总表").AddNew()
Dim ss() As String
For m As Integer = 0 To nms.Length - 3
r(nms(m)) = ary(n,m+1)
Next
r(nms(3)) = ary(n,4)
ss = ary(n,nms.Length - 2 + 1).split(":")
r(nms(nms.Length - 2)) = cdbl(cint(ss(0))*3600 +cint(ss(1))*60)
ss = ary(n,nms.Length - 1+1).split(":")
r(nms(nms.Length - 1)) = cdbl(cint(ss(0))*3600 +cint(ss(1))*60)
Next
catch ex As exception
msgbox(ex.message)
finally
app.quit
Tables("总表").ResumeRedraw()
End try
End If