vb中,如何读取不规则的文本文件,到xls电子表格中.如txt文件如下:
50122219800198     贵州                 交易类型:2      价格               黄三     男     139081352555          地址:市中区北京路3号
50122219800185    河南                交易类型:2      价格             李武           女   139081352555          地址:市中区上海路紫云街13号
50122219800152   北京                 交易类型:2      价格               鹿红         男   139081352555          地址:市中区南京路厚街26号
5012221980016522    四川                 交易类型:1     价格         李四娃         男       139081352555          地址:市中区四川路梅花鹿街19号
这个文本文件中间空白处可能是空格键、tab键或者其他键。这个TXT文件很大,有20M左右,尽量详细些,谢谢!

解决方案 »

  1.   

    不要怕文件大,20M算小文件。
    对于你觉得乱的文件,先做文件整理
    考虑你处理这种文件的频率,如果就是一次性处理,那么用现成工具进行格式整理就行了。如果是需要频繁处理此类文件再考虑使用程序脚本处理。
    不论用程序还是用工具,第一步,先搞清楚文件的规则,比如数据行的分隔符是啥,字段使用分隔符分隔还是用定长处理。总是有 规则的,按照规则来。对于一些不定长的无用数据比如空格,如果你能区分到某个字段里面去那就分到字段里再去trim。
    如果是真心不知道规则,但是就想遇到连续的空格就当分隔符,那么我喜欢用UE之类的文本编辑工具,搜索两个空格,替换成一个空格。重复执行几次,当他说再也找不到连续的两个空格时,那么文档里面所有的连续空格就都被替换成1个空格了。如此之类的处理完再进行数据行和字段的分隔就简单了。
      

  2.   

    一行一行的读取,每行进行“预处理”(替换操作),然后进行“字段分隔”。
     把分隔结果写入 Excel的每一行…………So easy . . . . . . . . 
      

  3.   

    Quote: 引用 1 楼 脆皮大雪糕 的回复:

    不要怕文件大,20M算小文件。
    对于你觉得乱的文件,先做文件整理
    考虑你处理这种文件的频率,如果就是一次性处理,那么用现成工具进行格式整理就行了。如果是需要频繁处理此类文件再考虑使用程序脚本处理。
    不论用程序还是用工具,第一步,先搞清楚文件的规则,比如数据行的分隔符是啥,字段使用分隔符分隔还是用定长处理。总是有 规则的,按照规则来。对于一些不定长的无用数据比如空格,如果你能区分到某个字段里面去那就分到字段里再去trim。
    如果是真心不知道规则,但是就想遇到连续的空格就当分隔符,那么我喜欢用UE之类的文本编辑工具,搜索两个空格,替换成一个空格。重复执行几次,当他说再也找不到连续的两个空格时,那么文档里面所有的连续空格就都被替换成1个空格了。如此之类的处理完再进行数据行和字段的分隔就简单了。:这位仁兄,感谢你的回答,20M,文本文件,一百多万条记录了,处理起来还是要麻烦些,光是打开文件,电脑就卡顿了几秒钟,大概思路知道了,也不是经常处理,但是,一年要遇到到两三次,如果用工具,是啥工具可以格式整理,具体代码是啥?用程序咋个格式整理,如何判断数据行的分隔符,感觉这个文本文件是用tab键分隔的,不过我看见有的空格短,有的空格长,用input#1读取报超出文件尾错误。还望仁兄再指导一下,谢谢!
      

  4.   


    感谢这位仁兄的回答,一行一行的读取,每行进行“预处理”(替换操作),然后进行“字段分隔”。
     把分隔结果写入 Excel的每一行…………,关键是咋个一行一行的处理,能否有详细代码?
      

  5.   

    你用“文本编辑器”(特别是“瘟到死”系统的“记事本”)
      去打开比较大的文件,它引起卡顿,很平常。
     虽然 20MB左右的文件,实质上也并不算太大。既然一年才遇到两、三次,那直接用 Excel打开,
      利用它的“分列”功能处理,不就行了?
      

  6.   

    这个代码是VBS的脚本,注意:没有处理文本中包含逗号的情况:Set fso = createobject("scripting.filesystemobject")
    curdir = fso.getparentfoldername(wscript.scriptfullname)
    inputpath = fso.buildpath(curdir,"data.txt")
    Set stream = fso.opentextfile(inputpath,1,False)
    content = stream.readall()
    stream.close
    Set reg = createobject("vbscript.regexp")
    reg.Global = True
    reg.ignorecase = True
    reg.multiline = True
    reg.pattern = "[ \t]+"
    content = reg.Replace(content,",")
    outputpath = fso.buildpath(curdir,"data.csv")
    Set stream = fso.opentextfile(outputpath,2,True)
    stream.write content
    stream.close
    msgbox "done!"运行示例(标出的两列需要调整一下单元格格式):下载地址:
    链接:https://pan.baidu.com/s/1NSeqvxgfSt1z4WB6-Wz5ZQ 
    提取码:lk9y 
      

  7.   

    开大文件用UE之类的工具,别说20M,2G开起来都不费力