回 帖 发 新 帖 刷新版面

主题:[原创]求助:如何解决文本读取问题

各位VB大侠,求助了:
附件中,有两个文件,一个是txt格式的,一个是word格式的。里面的内容一样,就是想要处理的内容。
问题是这样的:
文件里头有许多记录,每个记录之间是通过两个换行符隔开的,每个记录中含有的具体字段数目不是完全一致(有的只有AP、OPD、PD、PN四个,有的有AP、OPD、PD、PN、PNFP共五个)。
其实最终希望实现的是,目前每个纪录都是横向排列的,希望将每个记录的字段以纵向的方式排列,从而可以放到excel中。
于是想到用VB,希望将AP、OPD、PD、PN、PNFP的内容,读取到对应的数组中,作为数组的元素(比如,建立arr_ap()、arr_opd()、arr_pd()、arr_pn()、arr_pnfp()数组),然后,将这些数组各自写到一个对应的文件中(比如AP.txt、OPD.txt、PD.txt、PN.txt、PNFP.txt),然后再从对应的文件中,将一列一列的数据,拷贝到Excel中,最终实现将数据按照列(字段)的形式在excel中排列。
我试图按照一些VB教材的Input、Output、Line Input、Input等方法去做,使用do...loop、for...next、if...then...else等,可是怎么也实现不了。
所以特地到此地寻求帮助!
期待着高手不吝赐教!
PS:如果可以不是用VB,而是用其他方法也可以。不过,附件中的仅是一个例子,我实际要处理的数据,记录数目都是在5万个左右的。
期待~~~~~~

再次补充说明:由于对论坛不熟悉,似乎只能够上传一个附件,所以又将问题与想要的效果合并了,压缩再上传了。
请大家们帮忙啊~~~

回复列表 (共2个回复)

沙发

好像没法再次粘贴附件了。
result没发上传了。

板凳

看了一下你的文件,由于是用换行符结尾,所以Line Input没办法一行行读出来(Line Input需要的是回车符),其实办法很简单,只要把所有的换行符替换为回车换行符即可,然后保存为一个临时文件,再打开这个临时文件来操作就行了。代码如下:

Dim AP As String, OPD As String, PD As String, PN As String, PNFP As String, ST As String

ST = Space(FileLen("D:\Test-VB.txt") - 1) '先将字串变量填入文件长度的空格,这一句是必须的
Open "D:\Test-VB.txt" For Binary As #1
Get #1, , ST
Close #1

ST = Replace(ST, Chr(10), vbCrLf) '把所有的换行符替换为回车换行符

Open "D:\Temp.txt" For Output As #1 '保存为临时文件
Print #1, ST
Close #1

Open "D:\Temp.txt" For Input As #1
Do Until EOF(1)
  Line Input #1, ST
  If Len(ST) > 4 Then
    Select Case Mid(ST, 3, 3)
      Case "AP ": AP = AP & ST & vbCrLf
      Case "OPD": OPD = OPD & ST & vbCrLf
      Case "PD ": PD = PD & ST & vbCrLf
      Case "PN ": PN = PN & ST & vbCrLf
      Case "PNF": PNFP = PNFP & ST & vbCrLf
    End Select
  End If
Loop
Close #1

Open "D:\AP.txt" For Output As #1
Print #1, AP
Close #1

Open "D:\OPD.txt" For Output As #1
Print #1, OPD
Close #1

Open "D:\PN.txt" For Output As #1
Print #1, PN
Close #1

Open "D:\PD.txt" For Output As #1
Print #1, PD
Close #1

Open "D:\PNFP.txt" For Output As #1
Print #1, PNFP
Close #1

我来回复

您尚未登录,请登录后再回复。点此登录或注册