我无法导入访问以与此类似的方式格式化的TXT文件:
Johnny Doe Nobody 018918651Something else about this guy 556161 001
159159189489405604640 3rd Avenue - Random Street 123 - Alaska
Mary Rose 468486464Something else about this gal 564566 002
194984498446415615648 3rd Avenue - Random Street 456 - Alaska
Johnny Doe Jr. 265262655Something about this dude 556558 003
489446811897188678678 3rd Avenue - Random Street 789 - Alaska
问题:每个人都有不止一条线!我该如何解析这个文件?谢谢!
- 编辑 - 更糟糕的是,有些数据库可能会这样:
Johnny Doe Nobody 018918651Something else about this guy 556161 001
159159189489405604640 3rd Avenue - Random Street 123 - Alaska
Johnny Doe Nobody 018918651Something else about this guy 556161 001
151515456489489494894 3rd Avenue - Random Street 123 - Alaska
Johnny Doe Nobody 018918651Something else about this guy 556161 001
165156161561561615165 3rd Avenue - Random Street 123 - Alaska
我必须把它变成一条记录! :(
答案 0 :(得分:0)
如果状态是强制性的,请说在这种情况下阿拉斯加或任何其他状态' - '是强制性的,那么我只需逐行读取它,然后添加包含' - '的直接下一行并使用它。
如果该行不包含连字符(' - '),则为新行。
完全取决于基本文件格式的结构。
实施例
Buffer string = Johnny Doe没有人018918651关于这个男士的其他556161 001
如果在那里搜索连字符,则将其添加到缓冲区,如果它包含任何连字符,则读取下一个连字符。如果它没有那么它是一个新的线。处理缓冲行并在循环中再次执行相同操作。
答案 1 :(得分:0)
以下是一些公然被盗的代码:Shivam 这将删除在指定输入文件中找到的每个其他CRLF,并将结果写入指定的输出文件。首先在文本文件上运行此命令,然后将输出文件作为具有固定长度记录的文本文件导入。
Sub CleanFile()
Const ForReading = 1
Const ForWriting = 2
Const TriStateUseDefault = -2
Dim strInput As String
Dim strOutput As String
Dim objFSO As Object
Dim objInput As Object
Dim objOutput As Object
Dim arrLines As Variant
Dim i As Integer
strInput = "C:\temp\in.txt"
strOutput = "C:\temp\out.txt"
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objInput = objFSO.OpenTextFile(strInput, ForReading, False, TriStateUseDefault)
arrLines = Split(objInput.ReadAll, vbCrLf)
objInput.Close
Set objOutput = objFSO.OpenTextFile(strOutput, ForWriting, True)
For i = 0 To UBound(arrLines) Step 2
If i + 1 > UBound(arrLines) Then
objOutput.WriteLine arrLines(i)
Else
objOutput.WriteLine arrLines(i) & " " & arrLines(i + 1)
End If
Next
objOutput.Close
End Sub