| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2297 人关注过本帖
标题:关于csv文件读取的问题
只看楼主 加入收藏
huangyz_xy
Rank: 2
等 级:论坛游民
帖 子:101
专家分:30
注 册:2016-10-2
结帖率:77.78%
收藏
已结贴  问题点数:20 回复次数:6 
关于csv文件读取的问题
Dim bytFile() As Byte, strFile As String, strTmp As String        
        Open Txt_文件 For Binary As #1
        ReDim bytFile(LOF(1) - 1)
        Get #1, , bytFile
        Close #1
        strFile = StrConv(bytFile, vbUnicode)
        strTmp = Replace(strFile, vbCrLf, "")
        n = ((LenB(strFile) - LenB(strTmp)) / 2 + 1) / 2
我想用这段代码获取一个csv文件的行数,文件小可以,如果文件大了,比如几百M就会提示“内存溢出”(ReDim bytFile(LOF(1) - 1)),有什么解决办法不?
搜索更多相关主题的帖子: 办法 String 读取 文件 csv 
2019-12-14 10:30
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4947
专家分:30084
注 册:2008-10-15
收藏
得分:20 
数组大小的限制,所以会提示溢出。
还是老老实实一行一行的读,然后计数吧。


授人于鱼,不如授人于渔
早已停用QQ了
2019-12-14 13:00
huangyz_xy
Rank: 2
等 级:论坛游民
帖 子:101
专家分:30
注 册:2016-10-2
收藏
得分:0 
回复 2楼 风吹过b
,我是为了先读出进度条的分母,那这样的话就不行了!
2019-12-14 17:12
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4947
专家分:30084
注 册:2008-10-15
收藏
得分:0 
可以按读到的总字节数来计算进度。
文件总字节知道的
每读一行,统计该行的字节数,然后再+2个字节
注意是否有中文。
也就是循环里面先显示进度,再读文件,
文件结束退出,差最后一点,直接给100%

授人于鱼,不如授人于渔
早已停用QQ了
2019-12-14 19:19
huangyz_xy
Rank: 2
等 级:论坛游民
帖 子:101
专家分:30
注 册:2016-10-2
收藏
得分:0 
回复 4楼 风吹过b
这个是个好方法也,能给个代码不?不知道怎么做啊!我的进度条控件的值是这样的:ProgButton.Value = (Number / n) * 100

[此贴子已经被作者于2019-12-14 23:34编辑过]

2019-12-14 23:19
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4947
专家分:30084
注 册:2008-10-15
收藏
得分:0 
在浏览器里随手写的代码,将就着看吧。

n = LOF(1)         '总字节数,你前面用了。
Do While EOF(1)
    Number = Number + Len(s) + 2            '全英文用这个,2是 vbcrlf 的长度
    'Number = Number + UBound(StrConv(s, vbFromUnicode)) + 2    '含中文用这种,或者自己写一个
    ProgButton.Value = (Number / n) * 100   
   
    Line Input #1, s
    ReDim Preserve strFile(UBound(strFile) + 1)
    strFile(UBound(strFile)) = s   
Loop
    ProgButton.Value = 1                  '直接给到100%

授人于鱼,不如授人于渔
早已停用QQ了
2019-12-15 16:41
huangyz_xy
Rank: 2
等 级:论坛游民
帖 子:101
专家分:30
注 册:2016-10-2
收藏
得分:0 
回复 6楼 风吹过b
谢谢,按照你的思路解决问题了!   
 Line Input #1, s
 ReDim Preserve strFile(UBound(strFile) + 1)
 strFile(UBound(strFile)) = s
这几行在以前的代码中定义过,原来如此巧妙!


[此贴子已经被作者于2019-12-15 18:11编辑过]

2019-12-15 17:40
快速回复:关于csv文件读取的问题
数据加载中...
 
   



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

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