Foxtable(狐表)用户栏目专家坐堂 → 当从EXECL中一次性地复制多列数据到当前表中的时候


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

主题:当从EXECL中一次性地复制多列数据到当前表中的时候

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


加好友 发短信
等级:管理员 帖子:47448 积分:251060 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2010/6/26 8:22:00 [显示全部帖子]

自己做个粘贴按钮就行,用split拆分,逐个单元格写入表中。

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


加好友 发短信
等级:管理员 帖子:47448 积分:251060 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2010/6/27 9:21:00 [显示全部帖子]

获得剪贴板中的字符的方法:

 

Dim s As String = System.Windows.Forms.ClipBoard.GetText()

 

接下来用Split拆分成行,每一行再用Split拆分成列,再逐个写入单元格。

 

你自己先尝试一下,这些都是很好的锻炼机会,实在搞不定,我再帮你写个。


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


加好友 发短信
等级:管理员 帖子:47448 积分:251060 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2010/6/27 22:03:00 [显示全部帖子]

我明天抽空帮你写一段吧。

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


加好友 发短信
等级:管理员 帖子:47448 积分:251060 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2010/6/28 10:15:00 [显示全部帖子]

我在C版的基础上改一下

 

粘贴排除隐藏列:

 

Dim t As Table = CurrentTable
Dim s As String = System.Windows.Forms.ClipBoard.GetText()
Dim Lines() As String = s.split(chr(13) & chr(10))
Dim Count As Integer = Math.Min(Lines.Length , t.Rows.Count - t.TopPosition) - 1
For n As Integer = 0 To Count
    Dim Line() As String = Lines(n).Split(chr(9))
    Dim r As Integer = t.TopPosition + n
    Dim vp As Integer = 0
    For c As Integer = t.LeftCol to t.Cols.Count - 1
        If t.Cols(c).Visible Then
            If vp < Line.Length  Then
                t.Rows(r)(c) = Line(vp)
            End If
            vp = vp + 1
        End If
    Next
Next

 

粘贴考虑隐藏列:

 

Dim t As Table = CurrentTable
Dim s As String = System.Windows.Forms.ClipBoard.GetText()
Dim Lines() As String = s.split(chr(13) & chr(10))
Dim Count As Integer = Math.Min(Lines.Length,t.Rows.Count - t.TopPosition) - 1
For n As Integer = 0 To Count
    Dim Line() As String = Lines(n).Split(chr(9))
    Dim r As Integer = t.TopPosition + n
    Dim vp As Integer = 0
    For c As Integer = t.LeftCol to t.Cols.Count - 1
        If vp < Line.Length  Then
            t.Rows(r)(c) = Line(vp)
        End If
        vp = vp + 1
    Next
Next

[此贴子已经被作者于2010-6-28 10:20:23编辑过]

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


加好友 发短信
等级:管理员 帖子:47448 积分:251060 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2010/6/28 12:33:00 [显示全部帖子]

这个没有撤销和反撤销的

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


加好友 发短信
等级:管理员 帖子:47448 积分:251060 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2010/6/29 19:17:00 [显示全部帖子]

改一下:

 

Dim t As Table = CurrentTable
Dim s As String = System.Windows.Forms.ClipBoard.GetText()
Dim Lines() As String = s.split(chr(13))
Dim Count As Integer = Math.Min(Lines.Length,t.Rows.Count - t.TopPosition) - 1
For n As Integer = 0 To Count
    Dim Line() As String = Lines(n).Trim(chr(10)).Split(chr(9))
    Dim r As Integer = t.TopPosition + n
    Dim vp As Integer = 0
    For c As Integer = t.LeftCol to t.Cols.Count - 1
        If vp < Line.Length  Then
            t.Rows(r)(c) = Line(vp)
        End If
        vp = vp + 1
    Next
Next


 回到顶部