Foxtable(狐表)用户栏目专家坐堂 → 批量合并execl数据


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

主题:批量合并execl数据

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


加好友 发短信
等级:四尾狐 帖子:957 积分:8440 威望:0 精华:0 注册:2012/10/3 13:25:00
批量合并execl数据  发帖心情 Post By:2016/11/1 20:58:00 [只看该作者]

1、foxtable内有数张表,除表A、表B外,其余数据表的表结构均相同,但列数不同。数据表的第一列都是时间列,后面的每一列是一个股piao数据。
2、同路径下有数个execl数据表,每个数据表的第一列都是时间列,后面的每一列也是一个股piao数据。
3、想批量把数个execl数据表内的数据合并进foxtable的数个数据表。
问题是两种数据表的个数不是一一对应的,列数也不是一一对应的。
按照foxtable内数据表中含有的股piao种类合并。
感觉就是要遍历所有execl工作表中的列和foxtable所有数据表中的列以后,再导入。但不会写代码,请指教!

图片点击可在新窗口打开查看此主题相关图片如下:image 1.jpg
图片点击可在新窗口打开查看

附件:
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:数据表.rar




 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107880 积分:548763 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2016/11/1 22:02:00 [只看该作者]


 回到顶部
帅哥,在线噢!
有点蓝
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107880 积分:548763 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2016/11/1 22:03:00 [只看该作者]

Dim dlg As New OpenFileDialog
dlg.MultiSelect = True
If dlg.ShowDialog = DialogResult.OK Then
    Dim lst As new List(of String)
    lst.Add("_Identify")
    lst.Add("_Locked")
    lst.Add("_SortKey")
    lst.Add("时间")
    Dim dict As new Dictionary(of String,String)
    For Each dt As DataTable In DataTables
        If dt.Name.StartsWith("数据") Then
            For Each c As DataCol In dt.DataCols
                If lst.Contains(c.Name) = False AndAlso dict.ContainsKey(c.Name) = False Then dict.Add(c.Name,dt.Name)
            Next
        End If
    Next
    Dim dict2 As new Dictionary(of String,DataRow)
    SystemReady = False
    For Each fl As String In dlg.FileNames
        Dim Book As New XLS.Book(fl)
        Dim Sheet As XLS.Sheet = Book.Sheets(0)
        
        For m As Integer = 1 To Sheet.Cols.Count -1
            If dict.ContainsKey(Sheet(0,m).Value) Then
                For n As Integer = 1 To Sheet.Rows.Count -1
                    Dim dr As DataRow
                    Dim cl As String  = dict(Sheet(0,m).Value) & "|" & Sheet(n,0).Value
                    If dict2.ContainsKey(cl) Then
                        dr = dict2(cl)
                    Else
                        dr = DataTables(dict(Sheet(0,m).Value)).AddNew()
                        dr("时间") =  Sheet(n,0).Value
                        dict2.Add(cl,dr)
                    End If
                    dr(Sheet(0,m).Value) = Sheet(n,m).Value
                    dict2(cl) = dr
                    
                Next
            End If
        Next
    Next
    SystemReady = True
End If
[此贴子已经被作者于2016/11/1 22:03:02编辑过]

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


加好友 发短信
等级:四尾狐 帖子:957 积分:8440 威望:0 精华:0 注册:2012/10/3 13:25:00
  发帖心情 Post By:2016/11/1 22:35:00 [只看该作者]

谢谢版主!
有点小问题,就是foxtable表中原先有的  “时间”  行数据没能覆盖,出现了重复的 “时间”行。能不能不是追加,而是覆盖写入?

图片点击可在新窗口打开查看此主题相关图片如下:image 3.jpg
图片点击可在新窗口打开查看


[此贴子已经被作者于2016/11/1 22:40:25编辑过]

 回到顶部
帅哥,在线噢!
有点蓝
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107880 积分:548763 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2016/11/1 22:58:00 [只看该作者]

参考2楼的第二个帮助

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


加好友 发短信
等级:四尾狐 帖子:957 积分:8440 威望:0 精华:0 注册:2012/10/3 13:25:00
  发帖心情 Post By:2016/11/2 13:08:00 [只看该作者]

版主,代码难度太大了,看了一早晨还是无从下手。麻烦有空再给看看。谢谢!

 回到顶部
帅哥,在线噢!
有点蓝
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107880 积分:548763 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2016/11/2 14:49:00 [只看该作者]

初学者先系统看看开发指南,和视频教程

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


加好友 发短信
等级:二尾狐 帖子:573 积分:2961 威望:0 精华:0 注册:2016/10/27 14:33:00
  发帖心情 Post By:2016/11/2 18:00:00 [只看该作者]

Dim dlg As New OpenFileDialog
dlg.MultiSelect = True
If dlg.ShowDialog = DialogResult.OK Then
    Dim lst As new List(of String)
    lst.Add("_Identify")
    lst.Add("_Locked")
    lst.Add("_SortKey")
    lst.Add("时间")
    Dim dict As new Dictionary(of String,String)
    Dim dict2 As new Dictionary(of String,DataRow)
    For Each dt As DataTable In DataTables
        If dt.Name.StartsWith("数据") Then
            For Each c As DataCol In dt.DataCols
                If lst.Contains(c.Name) = False AndAlso dict.ContainsKey(c.Name) = False Then
                    dict.Add(c.Name,dt.Name)
                End If
            Next
            For Each r As DataRow In dt.Select("")
                If dict2.ContainsKey(dt.name & "|" & r("时间")) = False Then
                    dict2.add(dt.name & "|" & r("时间"), r)
                End If
            Next
        End If
    Next
    SystemReady = False
    For Each fl As String In dlg.FileNames
        Dim Book As New XLS.Book(fl)
        Dim Sheet As XLS.Sheet = Book.Sheets(0)
       
        For m As Integer = 1 To Sheet.Cols.Count -1
            If dict.ContainsKey(Sheet(0,m).Value) Then
                For n As Integer = 1 To Sheet.Rows.Count -1
                    Dim dr As DataRow
                    Dim cl As String  = dict(Sheet(0,m).Value) & "|" & Sheet(n,0).Value
                    If dict2.ContainsKey(cl) Then
                        dr = dict2(cl)
                    Else
                        dr = DataTables(dict(Sheet(0,m).Value)).AddNew()
                        dr("时间") =  Sheet(n,0).Value
                        dict2.Add(cl,dr)
                    End If
                    dr(Sheet(0,m).Value) = Sheet(n,m).Value
                    dict2(cl) = dr
                Next
            End If
        Next
    Next
    SystemReady = True
End If

 


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


加好友 发短信
等级:四尾狐 帖子:957 积分:8440 威望:0 精华:0 注册:2012/10/3 13:25:00
  发帖心情 Post By:2016/11/2 19:09:00 [只看该作者]

谢谢版主和 有点青 老师!

 回到顶部