Foxtable(狐表)用户栏目专家坐堂 → merge的问题


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

主题:merge的问题

美女呀,离线,留言给我吧!
狐狐妞
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:72 积分:727 威望:0 精华:0 注册:2020/12/11 17:25:00
merge的问题  发帖心情 Post By:2021/1/8 17:21:00 [只看该作者]

下面是一个批量合并的例子,假定目录c:\data下有多个Excel文件,这些文件都有一个名为订单的表,需要将这些表中的数据批量并到Foxtable的订单表中:

For Each fl As String In FileSys.GetFiles("c:\Data")
    Dim
 mg As
 New Merger
    mg.SourcePath = fl
    mg.Format = 
"excel" '指定格式
    mg.SourceTableName = 
"订单" '指定要合并的表
    mg.DataTableName = 
"订单" '指定接收数据的表
    mg.Merge() 
'开始合并
Next 

-----------------------------------------------------------

但是名字一样,里面也会重名啊,比如订单, 订单(1),订单(2).......... 能不能不管名字,直接合并里面所有EXCEL的表?如果不行,那么如何解决了?


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


加好友 发短信
等级:超级版主 帖子:106209 积分:540168 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/1/8 17:23:00 [只看该作者]

Excel里面的不同sheet名称是不可能相同的

mg.SourceTableName = "sheet名称"

 回到顶部
美女呀,离线,留言给我吧!
狐狐妞
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:72 积分:727 威望:0 精华:0 注册:2020/12/11 17:25:00
  发帖心情 Post By:2021/1/8 17:26:00 [只看该作者]

是啊,我一次要合并30多个excel 文档,因为我们是做教育的,要给每次的学员课程打分,我总不可能在代码里面每个去添加sheet 名称吧?

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


加好友 发短信
等级:超级版主 帖子:106209 积分:540168 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/1/8 17:40:00 [只看该作者]

名称默认都是sheet1啊,如果30多个excel 文档每个的sheet名称都不一样,那就没有办法使用Merger了。可以考虑这种:http://www.foxtable.com/webhelp/topics/2334.htm

 回到顶部
美女呀,离线,留言给我吧!
狐狐妞
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:72 积分:727 威望:0 精华:0 注册:2020/12/11 17:25:00
  发帖心情 Post By:2021/1/8 17:57:00 [只看该作者]

Dim dlg As New OpenFileDialog
dlg.Filter = "excel文件|*.xlsx"
dlg.MultiSelect = True '允许选择多个文件
If dlg.ShowDialog =DialogResult.OK Then
    For Each fl As String In dlg.FileNames
        Dim mg As New Merger
        mg.SourcePath = fl
        mg.SourceTableName = "调查表$" 
        mg.DataTableName = "打分"
        mg.Merge()
    Next
End If
‘------------------------------这个是我的代码-----------------------’
我要合并的是这几个表 

图片点击可在新窗口打开查看此主题相关图片如下:foxtable 问题2.png
图片点击可在新窗口打开查看
谢谢



 回到顶部
美女呀,离线,留言给我吧!
狐狐妞
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:72 积分:727 威望:0 精华:0 注册:2020/12/11 17:25:00
  发帖心情 Post By:2021/1/8 19:16:00 [只看该作者]

或者用这种写法:
Dim dlg As New OpenFileDialog
'dlg.Filter = "excle文件|*.xlsx"
'dlg.MultiSelect = True '允许选择多个文件
If dlg.ShowDialog =DialogResult.OK Then
'-----------------------------------------------------
Dim Book As New XLS.Book(" 这里怎么填可以一次性上传N个不同名字的xls文件?")
Dim Sheet As XLS.Sheet = Book.Sheets(0)
Tables("打分").StopRedraw()
'注意以下数组中列名称的顺序,必须和Excel表中的列顺序一致
Dim nms() As String = {"知识点","打分"}
'注意下面的循环变量从1开始,而不是从0开始,因为Excel表的第一行是标题
For n As Integer = 1 To Sheet.Rows.Count -1
    Dim r As Row = Tables("打分").AddNew()
    For m As Integer = 0 To nms.Length - 1
         r(nms(m)) = Sheet(n,m).Value
    Next
Next
End If
Tables("打分").ResumeRedraw(),

如何在DIALOG打开以后可选择多个不同名字的文件合并了?谢谢了。。。。。。。

 回到顶部
美女呀,离线,留言给我吧!
狐狐妞
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:72 积分:727 威望:0 精华:0 注册:2020/12/11 17:25:00
  发帖心情 Post By:2021/1/8 22:58:00 [只看该作者]

没人回答吗?谢谢:))))))

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


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

Dim dlg As New OpenFileDialog
'dlg.Filter = "excle文件|*.xlsx"
dlg.MultiSelect = True '允许选择多个文件
If dlg.ShowDialog =DialogResult.OK Then
'-----------------------------------------------------
Tables("打分").StopRedraw()
For Each fl As String In dlg.FileNames
Dim Book As New XLS.Book(fl)
Dim Sheet As XLS.Sheet = Book.Sheets(0)

 回到顶部
美女呀,离线,留言给我吧!
狐狐妞
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:72 积分:727 威望:0 精华:0 注册:2020/12/11 17:25:00
  发帖心情 Post By:2021/1/9 10:08:00 [只看该作者]

谢谢有点甜,现在的代码是这样:
Dim dlg As New OpenFileDialog
dlg.MultiSelect = True '允许选择多个文件
If dlg.ShowDialog =DialogResult.OK Then
    '-----------------------------------------------------
    Tables("打分").StopRedraw()
    For Each fl As String In dlg.FileNames
        Dim Book As New XLS.Book(fl)
        Dim Sheet As XLS.Sheet = Book.Sheets(0)
        Tables("打分").StopRedraw()'----注意以下数组中列名称的顺序,必须和Excel表中的列顺序一致
        Dim nms() As String = {"知识点","打分"}  '-----注意下面的循环变量从1开始,而不是从0开始,因为Excel表的第一行是标题
        For n As Integer = 1 To Sheet.Rows.Count -1
            Dim r As Row = Tables("打分").AddNew()
            For m As Integer = 0 To nms.Length - 1
                r(nms(m)) = Sheet(n,m).Value
            Next
        Next
       Next
    End If
Tables("打分").ResumeRedraw()
Tables("打分").DataTable.Save
MessageBox.show("已经上传完毕","提示")
程序现在能运行了,但是我看表的时候是个大空白版,重启项目以后才能看到“打分“表里加紧去的数据
图片点击可在新窗口打开查看此主题相关图片如下:foxtable问题3.png
图片点击可在新窗口打开查看


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


加好友 发短信
等级:超级版主 帖子:106209 积分:540168 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/1/9 10:15:00 [只看该作者]

应该是测试代码的时候出错,或者代码不合理导致Tables("打分").ResumeRedraw()没有调用到,

 回到顶部