以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]关于合并表的问题  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=158120)

--  作者:klkingkkk
--  发布时间:2020/11/9 10:49:00
--  [求助]关于合并表的问题
用代码来合并一张7千多行的数据表 大根需要7,8秒的时间.但是通过杂项里面的高速合并按钮来合并的话速度可能就是1秒的样子
现在我想怎么通过代码来实现高速合并表这一动作呢?  我现在写的代码入下 
Dim dlg As New OpenFileDialog \'定义一个新的SaveFileDialog
dlg.Filter= "Excel文件|*.xls;*.xlsx" \'设置筛选器
If dlg.ShowDialog = DialogResult.Ok Then \'如果用户单击了确定按钮
    
    \'导入前先删除所有行
    DataTables("顺丰账务总表").DeleteFor("")
    
    Dim App As New MSExcel.Application
   Dim Wb As MSExcel.WorkBook = App.WorkBooks.Open(dlg.FileName)
   Dim Ws As MSExcel.WorkSheet = Wb.WorkSheets(1)
    
    导入数据
    Dim mg As New Merger
    mg.SourcePath = dlg.FileName
    mg.Format = "excel" \'指定格式
    mg.SourceTableName = ws.Name & "$" \'指定要合并的表
    mg.DataTableName = "顺丰账务总表" \'指定接收数据的表
    mg.Merge()
   App.Quit
End If
[此贴子已经被作者于2020/11/9 11:02:29编辑过]

--  作者:有点蓝
--  发布时间:2020/11/9 10:54:00
--  
请把代码直接发上来,不要加行号
--  作者:klkingkkk
--  发布时间:2020/11/10 9:36:00
--  
代码已发上来了.麻烦
看一下,谢谢!!

--  作者:有点蓝
--  发布时间:2020/11/10 10:15:00
--  
Dim dlg As New OpenFileDialog \'定义一个新的SaveFileDialog
dlg.Filter= "Excel文件|*.xls;*.xlsx" \'设置筛选器
Dim d As Date = Date.Now
If dlg.ShowDialog = DialogResult.Ok Then \'如果用户单击了确定按钮
    \'导入前先删除所有行
    DataTables("顺丰账务总表").DeleteFor("")
    Output.Show("删除:" & (Date.Now - d).TotalSeconds)
    d = Date.Now
    
    Dim Book As New XLS.Book(dlg.FileName)
    Dim Sheet As XLS.Sheet = Book.Sheets(0)
    Output.Show("打开文件:" & (Date.Now - d).TotalSeconds)
    d = Date.Now
    导入数据
    Dim mg As New Merger
    mg.SourcePath = dlg.FileName
    mg.Format = "excel" \'指定格式
    mg.SourceTableName = Sheet.Name & "$" \'指定要合并的表
    mg.DataTableName = "顺丰账务总表" \'指定接收数据的表
    mg.Merge()
    Output.Show("导入:" & (Date.Now - d).TotalSeconds)
End If