当前位置:编程学习 > VB >>

请教如何逐行读取文本文件中每行以“tab”分割的数据,并写入制定的excel?

小弟我有这样的一个文本文档,其中数据大致如下:
2010.8 -30 TS4 ON     -1 -31 -31.0565
2010.8 -30 TS4 ON     -10 -40 -40.5189
2010.8 -30 TS4 ON     -20 -50 -50.2598
2010.8 -30 ALL ON     -1 -31 -30.9433
2010.8 -30 ALL ON     -10 -40 -41.0027
2010.8 -30 ALL ON     -20 -50 -49.9594

每一行中的每一列数据都是以tab分隔的。

我想实现的内容是:读取第一行文本数据,进行分割,写入excel表格。依次读取第二行,分割,写入....直至结束。
其实就是按照原有格式,把txt数据转成excel了,请各位大侠不吝赐教~ --------------------编程问答-------------------- 要达到目的,生产的时候生产csv就简单了。 --------------------编程问答-------------------- split函数 --------------------编程问答-------------------- 所有tab字符换成逗号,然后后缀名改为csv,然后就ok了 --------------------编程问答--------------------
引用 2 楼 liguicd 的回复:
split函数

支持.

先以vbcrlf为分隔符,分开各行.

然后再以vbtab为分隔符,分开各个列. --------------------编程问答--------------------
Tab 分隔的数据行,不必处理,可以直接添加到 Excel。 --------------------编程问答-------------------- 支持楼上。
慢慢历遍吧。 --------------------编程问答-------------------- 方法一:拷贝-粘贴
方法二:改文本文件的扩展名为xls --------------------编程问答-------------------- Open TmpPath For Binary As #filenum
 fileContents = Space(LOF(filenum))
 Get #filenum, , fileContents
 Close filenum
 fileInfo = Split(fileContents, vbCrLf)
 For j = 0 To UBound(fileInfo)
    str = Split(fileContents, vbTab)
    For i = 0 To UBound(str)
        Sheet1.cells(j+1,i+1) =  str(i)
    NEXT i
Next j
Close #filenum --------------------编程问答-------------------- 直接用 Excel 自己的导入功能
Sub Macro1()
    With ActiveSheet.QueryTables.Add(Connection:="TEXT;C:\Temp\1.txt", _
        Destination:=Range("A1"))
        .Name = "1"
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .TextFilePromptOnRefresh = False
        .TextFilePlatform = 936
        .TextFileStartRow = 1
        .TextFileParseType = xlDelimited
        .TextFileTextQualifier = xlTextQualifierDoubleQuote
        .TextFileConsecutiveDelimiter = False
        .TextFileTabDelimiter = True
        .TextFileSemicolonDelimiter = False
        .TextFileCommaDelimiter = False
        .TextFileSpaceDelimiter = False
        .TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1)
        .TextFileTrailingMinusNumbers = True
        .Refresh BackgroundQuery:=False
    End With
End Sub
--------------------编程问答-------------------- 相同的效果用C++如何实现?请教高人指点 --------------------编程问答-------------------- 不懂,帮顶 --------------------编程问答--------------------
引用 7 楼 cbirdno1no1 的回复:
方法一:拷贝-粘贴
方法二:改文本文件的扩展名为xls

方法二:改文本文件的扩展名为xls
这个是最简单的办法了 因为excel可以直接读出以vbtab也就是chr(9)分隔并以chr(10)结束的字符串。
但是要注意 如果 其中某个字段里是很大的数值 就会有很大的问题了 所以在产生数据时要在数值的开头或结尾加个字符 试其变成文本
--------------------编程问答--------------------

Sub InptDt()
    Dim Arr, Ary, k%, i%

    Open Application.GetOpenFilename("文本文件,*.txt", , "请选择:", , False) For Input As #1
    Arr = Split(StrConv(InputB(LOF(1), 1), vbUnicode), vbCrLf): Reset
    
    ReDim Ary(0 To UBound(Arr), 0 To 6)
    For k = 0 To UBound(Arr)
        For i = 0 To 6
            Ary(k, i) = Split(Arr(k), vbTab)(i)
        Next
    Next
    [A1].Resize(k, 7) = Ary
End Sub
补充:VB ,  VBA
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,