Foxtable(狐表)用户栏目专家坐堂 → 如何读取文本数据写入数据表?


  共有2594人关注过本帖树形打印复制链接

主题:如何读取文本数据写入数据表?

帅哥哟,离线,有人找我吗?
cnsjroom
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1570 积分:11222 威望:0 精华:0 注册:2021/1/17 17:06:00
如何读取文本数据写入数据表?  发帖心情 Post By: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编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
cnsjroom
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1570 积分:11222 威望:0 精华:0 注册:2021/1/17 17:06:00
回复:(有点蓝)参考:http://www.foxtable.com/webh...  发帖心情 Post By:2021/11/26 8:38:00 [显示全部帖子]

老师  参照过这个帮助   得到的结果和文本是一样的 还得麻烦老师根据我这个银行导出的text文本来指导下   文档已放入楼上的文件中

 回到顶部
帅哥哟,离线,有人找我吗?
cnsjroom
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1570 积分:11222 威望:0 精华:0 注册:2021/1/17 17:06:00
回复:(有点蓝)帮助列和列之间的数据是根据tab键分隔...  发帖心情 Post By:2021/11/26 10:09:00 [显示全部帖子]

老师我参照操作了下   运行效果如图(红色部分因为没有|符号  所以没有正确拆分  老师有没有办法呢   我试过换行符  回车符 都没有行)
如果正确拆分之后,又该怎么写入对应的列名下的值呢?
图片点击可在新窗口打开查看
当前代码如下:
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编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
cnsjroom
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1570 积分:11222 威望:0 精华:0 注册:2021/1/17 17:06:00
回复:(有点蓝)Dim s As String = FileSys.ReadAllT...  发帖心情 Post By:2021/11/26 10:21: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

列名和临时表生成代码:
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编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
cnsjroom
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1570 积分:11222 威望:0 精华:0 注册:2021/1/17 17:06:00
回复:(有点蓝)帮助里就有  发帖心情 Post By: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

 回到顶部
帅哥哟,离线,有人找我吗?
cnsjroom
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1570 积分:11222 威望:0 精华:0 注册:2021/1/17 17:06:00
回复:(有点蓝)For i As Integer = 0 To Values1.le...  发帖心情 Post By:2021/11/26 16:30:00 [显示全部帖子]

图片点击可在新窗口打开查看
老师运行提示如图错误

 回到顶部
帅哥哟,离线,有人找我吗?
cnsjroom
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1570 积分:11222 威望:0 精华:0 注册:2021/1/17 17:06:00
回复:(有点蓝)判断一下分隔后的数组长度,判断一下...  发帖心情 Post By:2021/11/26 16:59: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 = 1 To Values1.length - 1
    Dim cs() As String = Values1(i).split("|")
    Dim r As Row = Tables("统计").Addnew()
    'For Each c As DataCol In DataTables("统计").DataCols
    output.show(cs.Length-1)
    For i1 As Integer = 0 To cs.Length-1
        If cs.Length-1 = 1 Then
            r(i1) = cs(i1)
        End If
    Next
    'Next
Next

数据行对了 但是是空行
图片点击可在新窗口打开查看

 回到顶部
帅哥哟,离线,有人找我吗?
cnsjroom
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1570 积分:11222 威望:0 精华:0 注册:2021/1/17 17:06:00
回复:(有点蓝)【If cs.Length-1 = 1 Then】只有一个...  发帖心情 Post By:2021/11/26 19:36:00 [显示全部帖子]

麻烦老师帮忙看看   为什么还是不行呢
图片点击可在新窗口打开查看图片点击可在新窗口打开查看


[此贴子已经被作者于2021/11/26 19:39:18编辑过]

 回到顶部