vb读excel效率问题
本帖最后由 bcrun 于 2010-11-15 11:45:31 编辑 下一步是做什么?可以把数据用SQL语句写到ACCESS数据库
也可以把EXCEL当做数据库使用
楼主应该设置一个二维数组,选定excel的范围,一起读入,后面再分析数据.
同意,用二维数组要快些。将strTmp = sheet.Cells(i, j) 的左边用二维数组元素代替。
我就是将excel的数据赋到一个二维数组r中,然后进行计算,再写到excel中。
我的意思是我执行上面的for循环,就需要半多分钟的时间,我觉得很慢,初用vb还不知如何提高读取效率,请问,有别的什么好办法么?
strTmp = sheet.Cells(i, j)
If strTmp = "" Then Exit For
r(i - 1, j - 1) = strTmp
改为:
r(i - 1, j - 1) = sheet.Cells(i, j)
因为双循环里面的要判断很多次,中间变量赋值又没什么意义 row = sheet.UsedRange.Rows.Count
col = sheet.UsedRange.Columns.Count
ReDim r(row - 1, col - 1)
with sheetFor i = 1 To sheet.UsedRange.Rows.Count -->row
For j = 1 To sheet.UsedRange.Columns.Count-->col strTmp = .Cells(i, j) If strTmp = "" Then Exit For
r(i - 1, j - 1) = strTmp
Next j
Next i
endwith 本帖最后由 bcrun 于 2010-11-15 11:45:34 编辑 把EXCEL当数据库读取,用ADO 我的excel表格数据中间有空格的。我若是退出,就不能再读到后面的值了。 用二维数组 也一样的吧 因为 Row Col 多少个 坑 就明摆着 还是得一个一个Cell去读
数据量大的话 以前在DOS时 我都会先将文件拷进Ram 虚拟内存 读取快数倍 现在我也会这样做
If strTmp = ""
Then Exit For
这个代码就有问题,若是空值不能退出,也要进行相应的赋值 使用ADO对象可以读写Excel文件的,套用SQL语句,这个效率应该比较高。 ADO可以把EXCEL做數據庫處理,其他數據文件也行,這個應該是不錯的!自己可以試試看! 看看这个是否合你用吧:
http://download.csdn.net/source/369462 学习~~~~
补充:VB , 基础类