vb中,如何读取不规则的文本文件,到xls电子表格中.如txt文件如下:

like2020 2019-05-10 10:30:50
vb中,如何读取不规则的文本文件,到xls电子表格中.如txt文件如下:
50122219800198 贵州 交易类型:2 价格 黄三 男 139081352555 地址:市中区北京路3号
50122219800185 河南 交易类型:2 价格 李武 女 139081352555 地址:市中区上海路紫云街13号
50122219800152 北京 交易类型:2 价格 鹿红 男 139081352555 地址:市中区南京路厚街26号
5012221980016522 四川 交易类型:1 价格 李四娃 男 139081352555 地址:市中区四川路梅花鹿街19号
这个文本文件中间空白处可能是空格键、tab键或者其他键。这个TXT文件很大,有20M左右,尽量详细些,谢谢!
...全文
160 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
脆皮大雪糕 2019-05-12
  • 打赏
  • 举报
回复
开大文件用UE之类的工具,别说20M,2G开起来都不费力
脆皮大雪糕 2019-05-11
  • 打赏
  • 举报
回复
引用 3 楼 舉杯邀明月 的回复:
一行一行的读取,每行进行“预处理”(替换操作),然后进行“字段分隔”。  把分隔结果写入 Excel的每一行………… So easy . . . . . . . .
好像很多人对循环有一种恐惧,说到逐一咋的就蒙圈。
舉杯邀明月 2019-05-11
  • 打赏
  • 举报
回复
一行一行的读取,每行进行“预处理”(替换操作),然后进行“字段分隔”。
 把分隔结果写入 Excel的每一行…………

So easy . . . . . . . .
小噤 2019-05-11
  • 打赏
  • 举报
回复
正则表达式可以了解一下.
milaoshu1020 2019-05-11
  • 打赏
  • 举报
回复
这个代码是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
脆皮大雪糕 2019-05-11
  • 打赏
  • 举报
回复
不要怕文件大,20M算小文件。 对于你觉得乱的文件,先做文件整理 考虑你处理这种文件的频率,如果就是一次性处理,那么用现成工具进行格式整理就行了。如果是需要频繁处理此类文件再考虑使用程序脚本处理。 不论用程序还是用工具,第一步,先搞清楚文件的规则,比如数据行的分隔符是啥,字段使用分隔符分隔还是用定长处理。总是有 规则的,按照规则来。对于一些不定长的无用数据比如空格,如果你能区分到某个字段里面去那就分到字段里再去trim。 如果是真心不知道规则,但是就想遇到连续的空格就当分隔符,那么我喜欢用UE之类的文本编辑工具,搜索两个空格,替换成一个空格。重复执行几次,当他说再也找不到连续的两个空格时,那么文档里面所有的连续空格就都被替换成1个空格了。 如此之类的处理完再进行数据行和字段的分隔就简单了。
舉杯邀明月 2019-05-11
  • 打赏
  • 举报
回复
你用“文本编辑器”(特别是“瘟到死”系统的“记事本”)
  去打开比较大的文件,它引起卡顿,很平常。
 虽然 20MB左右的文件,实质上也并不算太大。

既然一年才遇到两、三次,那直接用 Excel打开,
  利用它的“分列”功能处理,不就行了?
like2020 2019-05-11
  • 打赏
  • 举报
回复
引用 3 楼 舉杯邀明月 的回复:
一行一行的读取,每行进行“预处理”(替换操作),然后进行“字段分隔”。
 把分隔结果写入 Excel的每一行…………

So easy . . . . . . . .


感谢这位仁兄的回答,一行一行的读取,每行进行“预处理”(替换操作),然后进行“字段分隔”。
 把分隔结果写入 Excel的每一行…………,关键是咋个一行一行的处理,能否有详细代码?
like2020 2019-05-11
  • 打赏
  • 举报
回复
[quote=引用 1 楼 脆皮大雪糕 的回复:]
不要怕文件大,20M算小文件。
对于你觉得乱的文件,先做文件整理
考虑你处理这种文件的频率,如果就是一次性处理,那么用现成工具进行格式整理就行了。如果是需要频繁处理此类文件再考虑使用程序脚本处理。
不论用程序还是用工具,第一步,先搞清楚文件的规则,比如数据行的分隔符是啥,字段使用分隔符分隔还是用定长处理。总是有 规则的,按照规则来。对于一些不定长的无用数据比如空格,如果你能区分到某个字段里面去那就分到字段里再去trim。
如果是真心不知道规则,但是就想遇到连续的空格就当分隔符,那么我喜欢用UE之类的文本编辑工具,搜索两个空格,替换成一个空格。重复执行几次,当他说再也找不到连续的两个空格时,那么文档里面所有的连续空格就都被替换成1个空格了。

如此之类的处理完再进行数据行和字段的分隔就简单了。:这位仁兄,感谢你的回答,20M,文本文件,一百多万条记录了,处理起来还是要麻烦些,光是打开文件,电脑就卡顿了几秒钟,大概思路知道了,也不是经常处理,但是,一年要遇到到两三次,如果用工具,是啥工具可以格式整理,具体代码是啥?用程序咋个格式整理,如何判断数据行的分隔符,感觉这个文本文件是用tab键分隔的,不过我看见有的空格短,有的空格长,用input#1读取报超出文件尾错误。还望仁兄再指导一下,谢谢!

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧