当前位置:编程学习 > VB >>

vb读excel效率问题

本帖最后由 bcrun 于 2010-11-15 11:45:31 编辑 下一步是做什么?
可以把数据用SQL语句写到ACCESS数据库
也可以把EXCEL当做数据库使用
楼主应该设置一个二维数组,选定excel的范围,一起读入,后面再分析数据.
引用 2 楼 hansin 的回复:
楼主应该设置一个二维数组,选定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 虚拟内存 读取快数倍 现在我也会这样做
引用 9 楼 xiaohoch 的回复:
我的excel表格数据中间有空格的。我若是退出,就不能再读到后面的值了。

  If strTmp = ""  
  Then Exit For
这个代码就有问题,若是空值不能退出,也要进行相应的赋值 使用ADO对象可以读写Excel文件的,套用SQL语句,这个效率应该比较高。
引用 8 楼 homer3382 的回复:
把EXCEL当数据库读取,用ADO
ADO可以把EXCEL做數據庫處理,其他數據文件也行,這個應該是不錯的!自己可以試試看! 看看这个是否合你用吧:
http://download.csdn.net/source/369462 学习~~~~
补充:VB ,  基础类
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,