以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  如何读取文本数据写入数据表?  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=173352)

--  作者:cnsjroom
--  发布时间:2021/11/25 18:01:00
--  如何读取文本数据写入数据表?
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:文本数据.zip

如何实现代码读取文本行数,并将数据进行拆分,第一行拆分为列名,根据列名创建临时表“统计”,然后从第二行开始进行内容拆分,并将拆分的内容分别对应第一行所拆分的列名赋值填充到临时表“统计”中

当前问题:1、如何获取文本文件的行,2、如何使用获取得到的行 
代码如下:
Dim s As String = FileSys.ReadAllText("C:\\Users\\Administrator\\Desktop\\20211125\\银行\\text.txt", Encoding.Default)
Output.Show(s.split("|").Length-1)
If s.split("|").Length-1 = 21 Then
    s.Insert(21,chr(13) & chr(10))
End If
Dim Values1() As String = s.split(chr(13))
Output.Show(Values1(0))

测试文本第一行数据,并进行指定拆分,当前可以创建含有拆分值为列名的空表“统计”
Dim Multi As String = "账号|户名|交易日期|主机日期|交易时间|交易码|交易名称|借贷标记|交易金额|账户余额|营业机构|账务机构|交易柜员|授权柜员|柜员流水|现转标志|摘要代码|对方账号|对方名称|对方行号|对方行名"
Dim Values() As String
Values = Multi.split("|")
Dim dtb As New DataTableBuilder("统计")
For Index As Integer = 0 To Values.Length - 1
    Output.Show(Values(Index))
    dtb.AddDef(Values(Index), Gettype(String), 32)
Next
dtb.Build()
[此贴子已经被作者于2021/11/25 18:03:22编辑过]

--  作者:有点蓝
--  发布时间:2021/11/25 20:40:00
--  
参考:http://www.foxtable.com/webhelp/topics/2629.htm
--  作者:cnsjroom
--  发布时间:2021/11/26 8:38:00
--  回复:(有点蓝)参考:http://www.foxtable.com/webh...
老师  参照过这个帮助   得到的结果和文本是一样的 还得麻烦老师根据我这个银行导出的text文本来指导下   文档已放入楼上的文件中
--  作者:有点蓝
--  发布时间:2021/11/26 9:07:00
--  
帮助列和列之间的数据是根据tab键分隔的,1楼的数据是根据“|”分隔的,改一下就行了
--  作者:cnsjroom
--  发布时间:2021/11/26 10:09:00
--  回复:(有点蓝)帮助列和列之间的数据是根据tab键分隔...
老师我参照操作了下   运行效果如图(红色部分因为没有|符号  所以没有正确拆分  老师有没有办法呢   我试过换行符  回车符 都没有行)
如果正确拆分之后,又该怎么写入对应的列名下的值呢?
图片点击可在新窗口打开查看
当前代码如下:
Dim s As String = FileSys.ReadAllText("C:\\Users\\Administrator\\Documents\\Foxtable项目\\文本数据\\text.txt", Encoding.Default)
Dim Values1() As String = s.split(chr(13))
\'Output.Show(s.split("|").Length-1)
Dim strs As String = s
strs = strs.Replace(vblf,"")
Dim rs() As String = strs.Split(vbcr)
For i1 As Integer = 0 To s.split("|").Length-1    
    For i As Integer = 0 To rs.Length - 1
        Dim cs() As String = rs(i).Split("|")
        If s.split("|").Length-1 = 21 Then
            strs = strs.Replace(vbcr,"|")
        End If
        output.Show(cs(i1))
    Next   
Next
文件内容如下:
图片点击可在新窗口打开查看

列名和临时表生成代码:
Dim Multi As String = "账号|户名|交易日期|主机日期|交易时间|交易码|交易名称|借贷标记|交易金额|账户余额|营业机构|账务机构|交易柜员|授权柜员|柜员流水|现转标志|摘要代码|对方账号|对方名称|对方行号|对方行名"
Dim Values() As String
Values = Multi.split("|")
Dim dtb As New DataTableBuilder("统计")
For Index As Integer = 0 To Values.Length - 1
    Output.Show(Values(Index))
    dtb.AddDef(Values(Index), Gettype(String), 32)
Next
dtb.Build()
[此贴子已经被作者于2021/11/26 10:10:32编辑过]

--  作者:有点蓝
--  发布时间:2021/11/26 10:15:00
--  
Dim s As String = FileSys.ReadAllText("C:\\Users\\Administrator\\Documents\\Foxtable项目\\文本数据\\text.txt", Encoding.Default)
Dim Values1() As String = s.Replace(vbcr,"").split(vblf)
For i As Integer = 0 To Values1.length - 1
    Dim cs() As String = Values1(i).split("|")
    For i1 As Integer = 0 To cs.Length-1
        output.Show(cs(i1))
    Next
Next

--  作者:cnsjroom
--  发布时间:2021/11/26 10:21:00
--  回复:(有点蓝)Dim s As String = FileSys.ReadAllT...
谢谢老师  精简的代码   获取得到数据之后  当前采用了临时表代码生成临时表

怎么匹配拆分的值到对应的列名下呢?


Dim s As String = FileSys.ReadAllText("C:\\Users\\Administrator\\Documents\\Foxtable项目\\文本数据\\text.txt", Encoding.Default)
Dim Values1() As String = s.Replace(vbcr,"").split(vblf)
For i As Integer = 0 To Values1.length - 1
    Dim cs() As String = Values1(i).split("|")
    For i1 As Integer = 0 To cs.Length-1
        output.Show(cs(i1))
    Next
Next

列名和临时表生成代码:
Dim Multi As String = "账号|户名|交易日期|主机日期|交易时间|交易码|交易名称|借贷标记|交易金额|账户余额|营业机构|账务机构|交易柜员|授权柜员|柜员流水|现转标志|摘要代码|对方账号|对方名称|对方行号|对方行名"
Dim Values() As String
Values = Multi.split("|")
Dim dtb As New DataTableBuilder("统计")
For Index As Integer = 0 To Values.Length - 1
    Output.Show(Values(Index))
    dtb.AddDef(Values(Index), Gettype(String), 32)
Next
dtb.Build()
[此贴子已经被作者于2021/11/26 10:22:45编辑过]

--  作者:有点蓝
--  发布时间:2021/11/26 10:24:00
--  
帮助里就有
--  作者:cnsjroom
--  发布时间:2021/11/26 15:29:00
--  回复:(有点蓝)帮助里就有
不好意思   老师我按照帮助教程还是没有得到要领
当前代码如下:
Dim Multi As String = "账号|户名|交易日期|主机日期|交易时间|交易码|交易名称|借贷标记|交易金额|账户余额|营业机构|账务机构|交易柜员|授权柜员|柜员流水|现转标志|摘要代码|对方账号|对方名称|对方行号|对方行名"
Dim Values() As String
Values = Multi.split("|")
Dim dtb As New DataTableBuilder("统计")
For Index As Integer = 0 To Values.Length - 1
    Output.Show(Values(Index))
    dtb.AddDef(Values(Index), Gettype(String), 32)
Next
dtb.Build()
MainTable=Tables("统计")

Dim s As String = FileSys.ReadAllText("C:\\Users\\Administrator\\Documents\\Foxtable项目\\文本数据\\text.txt", Encoding.Default)
Dim Values1() As String = s.Replace(vbcr,"").split(vblf)
For i As Integer = 0 To Values1.length - 1
    Dim cs() As String = Values1(i).split("|")
    For i1 As Integer = 0 To cs.Length-1
        \'output.Show(cs(i1))
        Dim cs1() As String = cs(i1).Split("|")
        output.Show(cs1(0))
        If cs1.Length = 21 Then
            \'output.Show(cs(i1))            
            For Each c As DataCol In DataTables("统计").DataCols                
                \'output.Show(c.name)                               
                Dim dr As DataRow = DataTables("统计").Addnew()
                dr(c.name) = cs1(0)
                \'dr("第二列") = cs(1)
                \'dr("第三列") = cs(2)
                \'dr("第四列") = cs(3)                
            Next
        End If
    Next
Next

--  作者:有点蓝
--  发布时间:2021/11/26 15:38:00
--  
For i As Integer = 0 To Values1.length - 1
    Dim cs() As String = Values1(i).split("|")
Dim r As Row = Tables("统计").Addnew()
    For i1 As Integer = 0 To cs.Length-1
        \'output.Show(cs(i1))
r(i1) = cs(i1)
    Next
Next