以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]从excel表中复制数据到表中  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=157189)

--  作者:chnfo
--  发布时间:2020/10/7 10:13:00
--  [求助]从excel表中复制数据到表中
想动态读取excel表的数据,添加到一个临时表中。
        Dim Book As New XLS.Book(“外部表全路径名称”)
        Dim App As New MSExcel.Application
        Dim Wb As MSExcel.WorkBook = App.WorkBooks.Open(y)
        Dim Ws As MSExcel.WorkSheet = Wb.WorkSheets(1)
        Dim Rg As MSExcel.Range = Ws.UsedRange
        
        DataTables("目标临时表").DataRows.Clear
        DataTables("目标临时表").AddNew(rg.Rows.count)

rg.copy
Tables("目标临时表").Select(0,0)
Syscmd.Edit.Paste()

这样似乎不行,数据没有进到“目标临时表”中

--  作者:有点蓝
--  发布时间:2020/10/7 10:46:00
--  
这种方式:http://www.foxtable.com/webhelp/topics/2334.htm
--  作者:chnfo
--  发布时间:2020/10/7 10:51:00
--  
我就是用的这个办法。
主要是效率太低了。
8*31的表格,要用1.6秒,有时候还要2秒多

如果能直接copy,那就完美,1秒钟都不要
[此贴子已经被作者于2020/10/7 10:59:07编辑过]

--  作者:有点蓝
--  发布时间:2020/10/7 11:01:00
--  
效率低但是安全不会出错!使用剪贴板,不可控!
--  作者:chnfo
--  发布时间:2020/10/7 14:44:00
--  
因为目前的应用场景没有什么特殊字符之类的,所以我想知道如果用剪贴板,要怎么用。 我想可以先清空剪贴板,然后RG.copy,然后再到数据表中粘贴
[此贴子已经被作者于2020/10/7 14:44:06编辑过]

--  作者:有点蓝
--  发布时间:2020/10/7 15:42:00
--  
要保证表格所在的窗口是选中激活状态
……
rg.copy
basemainform.Select
Tables("表C").Select(0,0)
Syscmd.Edit.Paste()

--  作者:chnfo
--  发布时间:2020/10/7 17:38:00
--  
还是贴不上去,是哪里写错了么?
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:剪贴板.zip


--  作者:有点蓝
--  发布时间:2020/10/7 18:03:00
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:剪贴板.zip


--  作者:chnfo
--  发布时间:2020/11/7 16:07:00
--  
DataTables("XXX").DataRows.Clear

Dim dlg As New OpenFileDialog \'定义一个新的OpenFileDialog
dlg.Filter= "Excel文件|*.xls;*.xlsx" 
If dlg.ShowDialog = DialogResult.Ok Then 
    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 Rg As MSExcel.Range = Ws.UsedRange
    
    app.Application.CutCopyMode = False
    
    rg.copy
    DataTables("XXX").AddNew(rg.Rows.count)
    basemainform.Select
    Tables("XXX").Select(0,0)
    syscmd.edit.paste()
    App.Quit
End If

运行之后,总弹出提示什么:在剪贴板中有大量信息……之类的,如何让它不显示?试了一下,用了ClipBoard.clear的话,这句代码如果加在最后,tables("XXX")界面的数据就全部空了
另外:贴进去的数据要保存怎么办?如果清空剪贴板,表中的数据就空了,保存也无意义



--  作者:chnfo
--  发布时间:2020/11/7 16:15:00
--  
哦,可以了