以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]如何快速的导入一个表格到软件中  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=193644)

--  作者:moseser
--  发布时间:2024/9/30 10:31:00
--  [求助]如何快速的导入一个表格到软件中
如我有一个excel表,我想快速的将其导入软件中的表A中,能否用 下面的方案导入表A 呢?


Dim
ip as New Importer
ip
.SourcePath = "c:\\Data\\销售管理.xls" \'指定数据文件
ip
.SourceTableName = "订单" \'指定要导入的表
ip
.NewTableName ="订单" \'导入后的表名
ip.Format = "Excel"
\'指定导入格式

ip
.Import()

我看我们的说明,
Merger用于合并数据。
合并的速度要远低于导入,所以如果有大量数据要引入管理项目中,最好用导入。

这个效率比较低,我想用 improter 的话,该如何操作?





--  作者:有点蓝
--  发布时间:2024/9/30 10:53:00
--  
improter 只能导入为新表。无法合并数据。

或者试试导入新表,fill到表A,再删除新表。不过我觉得这个可能会更慢

--  作者:moseser
--  发布时间:2024/9/30 12:31:00
--  回复:(有点蓝)improter 只能导入为新表。无法...
咱们软件中的这个合并也挺快,能分享下这个的思路的或者 代码?

我想自己写一下,更灵活一些

如下拉
图片点击可在新窗口打开查看此主题相关图片如下:微信图片_20240930122820.png
图片点击可在新窗口打开查看
sheet 表后,下面的表就显示出来了,查看下,没有问题,就正常合并的软件中的表中

--  作者:moseser
--  发布时间:2024/9/30 12:34:00
--  回复:(moseser)回复:(有点蓝)improter 只能...
我如下写了下 代码,可是 ,选择 excel 表后,就比较卡,要等上十来秒,才能下拉

foxtable 自带的合并,反应很快,请问是如何做到的?

Dim dlg As New OpenFileDialog \'定义一个新的OpenFileDialog 
dlg.Filter = "Excel文件|*.xls|Word文件|*.doc|Access文件|*.mdb" \'设置筛选器
If dlg.ShowDialog = DialogResult.Ok Then \'如果用户单击了确定按钮
    \'  MessageBox.Show("你选择的是:" & dlg.FileName, "提示") \'提示用户选择的文件
    Dim txt As WinForm.Label = e.Form.Controls("Label1")
    txt.Text = dlg.FileName
    \'获取 worksheets   
    Dim App As New MSExcel.Application
    Dim Wb As MSExcel.WorkBook = App.WorkBooks.Open(txt.Text)
    Dim Lst As New List(Of String)
    For Each Ws As MSExcel.WorkSheet In Wb.WorkSheets
        \'MessageBox.Show(Ws.Name)
        Lst.Add(Ws.Name)
    Next
    \'将表sheet表集合转成string 
    
    Dim Arys() As String
    Arys = Lst.ToArray() \'将集合转换为数组
    
    Dim Str1 As String
    Str1 = String.Join("|", Arys)

    Dim cmb As WinForm.ComboBox = e.Form.Controls("ComboBox1")
    cmb.ComboList = Str1
    App.Quit

End If

--  作者:moseser
--  发布时间:2024/9/30 12:40:00
--  回复:(moseser)回复:(moseser)回复:(有点蓝)...
    Dim App As New MSExcel.Application
    Dim Wb As MSExcel.WorkBook = App.WorkBooks.Open(txt.Text)


到这里,测试了下,耗时就4.8秒

--  作者:有点蓝
--  发布时间:2024/9/30 13:33:00
--  
菜单的高速合并其实就是Merger。

如果数据比较多,试试这种方式:http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=100317&replyID=&skin=1