Foxtable(狐表)用户栏目专家坐堂 → 求助:从剪贴板导入数据的代码


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

主题:求助:从剪贴板导入数据的代码

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


加好友 发短信
等级:一尾狐 帖子:447 积分:4572 威望:0 精华:0 注册:2009/1/11 11:00:00
求助:从剪贴板导入数据的代码  发帖心情 Post By:2010/11/2 14:26:00 [只看该作者]

CZY楼主,麻烦你写一个“从剪贴板导入数据(即,粘贴时区分列标题)”的按钮功能。能够自动匹配列标题进行粘贴。

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1.rar

 

如咐件:

(1)打开销售明细.xls,全选,复制

(2)打开管理项目1.Table,选择表A,粘贴(求助:此粘贴按钮的代码)。


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


加好友 发短信
等级:一尾狐 帖子:447 积分:4572 威望:0 精华:0 注册:2009/1/11 11:00:00
  发帖心情 Post By:2010/11/2 16:12:00 [只看该作者]

请高手,看看这个是我写的

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目2.rar

 


CZY楼主,麻烦你写个精简代码


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


加好友 发短信 一级勋章 三级勋章 二级勋章
等级:超级版主 帖子:6318 积分:33963 威望:0 精华:10 注册:2008/8/31 20:56:00
  发帖心情 Post By:2010/11/2 20:23:00 [只看该作者]

老兄,别这样点名啊,其实我不是高手,不是什么事我都能做到的,我只是比有些人稍稍热情了一点而已。图片点击可在新窗口打开查看

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


加好友 发短信 一级勋章 三级勋章 二级勋章
等级:超级版主 帖子:6318 积分:33963 威望:0 精华:10 注册:2008/8/31 20:56:00
  发帖心情 Post By:2010/11/2 20:51:00 [只看该作者]

这样试试

 

Dim s As String = ClipBoard.GetText()
Dim Lines() As String = s.split(chr(13))
Dim Title() As String = Lines(0).Trim(chr(10)).Split(chr(9))
Dim dtb As New DataTableBuilder("test")
For n As Integer = 0 To Title.Length -1
    dtb.AddDef(Title(n), Gettype(String),250)
Next
dtb.TableVisible = False
dtb.Build()
Dim t As Table = Tables("test")
For n As Integer = 1 To Lines.Length -2
    Dim Line() As String = Lines(n).Trim(chr(10)).Split(chr(9))
    Dim r As Row = t.AddNew()
    For c As Integer = 0 To t.Cols.Count - 1
        r(c) = Line(c)
    Next
Next
For Each dr1 As DataRow In DataTables("test").DataRows
    Dim dr2 As DataRow = DataTables("表A").AddNew()
    For Each dc As DataCol In DataTables("test").DataCols
        If DataTables("表A").DataCols.Contains(dc.name) Then
            dr2(dc.name) = dr1(dc.name)
        End If
    Next
Next


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


加好友 发短信 一级勋章 三级勋章 二级勋章
等级:超级版主 帖子:6318 积分:33963 威望:0 精华:10 注册:2008/8/31 20:56:00
  发帖心情 Post By:2010/11/2 20:53:00 [只看该作者]

楼上不太好,会产生空行。

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


加好友 发短信 一级勋章 三级勋章 二级勋章
等级:超级版主 帖子:6318 积分:33963 威望:0 精华:10 注册:2008/8/31 20:56:00
  发帖心情 Post By:2010/11/2 21:02:00 [只看该作者]

搞定

 

If ClipBoard.ContainsText Then '如果剪贴板中有数据
    Dim x As Integer
    Dim s As String = ClipBoard.GetText()
    Dim Lines() As String = s.split(chr(13))
    Dim Title() As String = Lines(0).Trim(chr(10)).Split(chr(9))
    Dim dtb As New DataTableBuilder("Temp") '创建临时表
    For n As Integer = 0 To Title.Length -1
        dtb.AddDef(Title(n),Gettype(String),250)
    Next
    dtb.TableVisible = False
    dtb.Build()
    Dim t As Table = Tables("Temp")
    '将剪贴板中的数据写入临时表
    For n As Integer = 1 To Lines.Length -2
        Dim Line() As String = Lines(n).Trim(chr(10)).Split(chr(9))
        Dim r As Row = t.AddNew()
        For c As Integer = 0 To t.Cols.Count - 1
            r(c) = Line(c)
        Next
    Next
    ClipBoard.Clear
    s = ""
    For i As Integer = 0 To Tables("表A").Cols.Count -1
        s = s & Tables("表A").Cols(i).Name & "|" & Tables("表A").Cols(i).Width & "|"
    Next '隐藏临时表在表A中不存在的列
    t.SetColVisibleWidth(s)
    For c As Integer = 0 To t.Cols.Count -1
        If t.Cols(c).Visible Then
            x = x + 1
        End If
    Next
    If x > 0 Then '如果临时表有符合的列,则向表A填充数据
        Dim f As New Filler
        f.SourceTable = DataTables("Temp")
        f.datatable = DataTables("表A")
        f.Distinct = False
        f.Fill()
    End If
End If


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


加好友 发短信 一级勋章 三级勋章 二级勋章
等级:超级版主 帖子:6318 积分:33963 威望:0 精华:10 注册:2008/8/31 20:56:00
  发帖心情 Post By:2010/11/2 21:04:00 [只看该作者]

这是文件。

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目2.rar


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


加好友 发短信
等级:一尾狐 帖子:447 积分:4572 威望:0 精华:0 注册:2009/1/11 11:00:00
  发帖心情 Post By:2010/11/3 9:30:00 [只看该作者]

CZY楼主,谢谢。你太谦虚了,是我辈学习谐模。以后麻烦多多指教。


 回到顶部