| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 6467 人关注过本帖
标题:VB读取CSV文件,提高效率的问题
只看楼主 加入收藏
smli_09
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2017-2-14
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:2 
VB读取CSV文件,提高效率的问题
VB读取CSV文件(40列,大概8000行)。采用逐行用Split函数读取的方法,存入40个组合框中。目前已经做出来了,但是耗时30秒,感觉画的时间有点长。
需要的是其中的约1000行数据,但是需要把数据都读取出来,才能判断所需数据的起止位置
请问:有没有优化的方法?①是读取的方法不行?曾经在百度上求助,有人说可以用读取数据库的方法。②还是读入到组合框Combo之中不合适?
代码如下(代码不用细看,主要是想说明是使用split读取的):
csvfile = App.Path & "\" & Text10.Text & "\" & Combo3.List(k) 'CSV文件路径与用户名
Open csvfile For Input As #1 '打开文件
Do While Not EOF(1) '判断是否到达文件尾部
ReDim Preserve f(i) '重新定义数组上标
Line Input #1, f(i) '读取整行数据
For j = 0 To 30
 If Val(Form3.Text3(j)) > 0 Then
 ls = Split(f(i), ",")(Form3.Text3(j)) '读取这行数据按逗号分隔的第二个数据,0是第一个数据
ls = Replace(ls, """", "") '如果数据希望去除两边的双引号可以添加这行代码
(j).AddItem ls
 End If
Next
End If
i = i + 1 '行数加1
Loop '循环
Close #1
搜索更多相关主题的帖子: 百度 用户名 数据库 
2017-02-14 21:43
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4938
专家分:30047
注 册:2008-10-15
收藏
得分:20 
你测试了你的代码慢在哪些地方吗?
在vb里,读写控件属性为慢速操作,密集使用时,建议把属性先读到数组里,然后再使用数组里的数据。
以下代码在手机上改的,错误难免
dim fjtmp() , t3(30) as  long
for  j =0 to 30
t3(j)=Val(Form3.Text3(j))
next j

csvfile = App.Path & "\" & Text10.Text & "\" & Combo3.List(k) 'CSV文件路径与用户名
Open csvfile For Input As #1 '打开文件
Do While Not EOF(1) '判断是否到达文件尾部
ReDim Preserve f(i) '重新定义数组上标
Line Input #1, f(i) '读取整行数据
fjtmp = split(f(i),",")    '先分解
For j = 0 To 30
 If t3(j)> 0 Then
 ls = fjtmp(t3(j))       '取数据
ls = Replace(ls, """", "") '如果数据希望去除两边的双引号可以添加这行代码
(j).AddItem ls
 End If
Next
End If
i = i + 1 '行数加1
Loop '循环
Close #1

授人于鱼,不如授人于渔
早已停用QQ了
2017-02-14 22:05
smli_09
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2017-2-14
收藏
得分:0 
谢谢了,我测试了很久,楼上的方法确实可行,但是效率提高的不算多。真正耗时的,是组合框 AddItem这部分。这部分的时间占了总时间的2/3以上。
2017-02-17 10:33
快速回复:VB读取CSV文件,提高效率的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017022 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved