Foxtable(狐表)用户栏目专家坐堂 → 复制粘贴EXCEL单元格,每粘贴一行,单元格内有几行(单元格内换行)会多出来几行空行是什么原因?


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

主题:复制粘贴EXCEL单元格,每粘贴一行,单元格内有几行(单元格内换行)会多出来几行空行是什么原因?

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


加好友 发短信
等级:童狐 帖子:250 积分:1813 威望:0 精华:0 注册:2012/6/28 13:53:00
复制粘贴EXCEL单元格,每粘贴一行,单元格内有几行(单元格内换行)会多出来几行空行是什么原因?  发帖心情 Post By:2017/12/17 10:48:00 [只看该作者]

1、复制粘贴EXCEL单元格,每粘贴一行,单元格内有几行(单元格内换行)会多出来几行空行是什么原因?如何修改代码?

工程项目下的清单表,在项目东南西北内,复制粘贴EXCEL表单元格到清单后,1、出现双引号;2、自动添加4行空白行。

2复制粘贴EXCEL单元格,用代码解决EXCEL单元格内有换行问题,如何去掉双引号呢?

 

'粘贴带有换行的EXCEL单元格

If e.control = True AndAlso e.keycode = keys.v Then

    '执行代码

    Dim str As String = ClipBoard.GetText

    Dim nstr As String = ""

    Dim tempstr As String = ""

    Dim flag As Boolean = False

    For i As Integer = 0 To str.length - 1

        If str(i) = """" Then

            If i = 0 OrElse str(i-1) = chr(9) OrElse str(i-1) = chr(10) Then '开始

                flag = True

            ElseIf i = str.length-1 OrElse str(i+1) = chr(9) OrElse str(i+1) = chr(13) Then '结束

                tempstr = tempstr.Replace(chr(13), "")

                nstr &= tempstr

                tempstr = ""

                flag = False

            End If

        End If

        If flag = True Then

            tempstr &= str(i)

        Else

            nstr &= str(i)

        End If

    Next

    'ClipBoard.SetText(nstr)

    ClipBoard.SetText(nstr.trim(""""))

End If

 

 下载信息  [文件大小:   下载次数: ]
点击浏览该文件:成本测算 - 171129 - 副本.rar


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/12/17 20:08:00 [只看该作者]

1、测试的excel文件发上来。

 

2、具体说明赋值哪些数据,粘贴到哪些列出问题。截图说明。


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


加好友 发短信
等级:童狐 帖子:250 积分:1813 威望:0 精华:0 注册:2012/6/28 13:53:00
  发帖心情 Post By:2017/12/17 21:52:00 [只看该作者]

复制EXCEL表第一行数据,粘贴到工程项目“东西南北”的清单子表中,粘贴后增加4行空行,且粘贴数据有双引号

1、粘贴前

图片点击可在新窗口打开查看此主题相关图片如下:tw1fvphx9`ww)18s7ps4i3.png
图片点击可在新窗口打开查看

2、粘贴后

图片点击可在新窗口打开查看此主题相关图片如下:c2dk@29`kgyg~94{pp.png
图片点击可在新窗口打开查看

3、EXCEL表
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:book1.xlsx






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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/12/17 23:30:00 [只看该作者]

'
'粘贴带有换行的EXCEL单元格
If e.control = True AndAlso e.keycode = keys.v Then
    '执行代码
    Dim str As String = ClipBoard.GetText
    Dim nstr As String = ""
    Dim tempstr As String = ""
    Dim flag As Boolean = False
    For i As Integer = 0 To str.length - 1
        If str(i) = """" Then
            If i = 0 OrElse str(i-1) = chr(9) OrElse str(i-1) = chr(10) Then '开始
                flag = True
            ElseIf i = str.length-1 OrElse str(i+1) = chr(9) OrElse str(i+1) = chr(13) Then '结束
                tempstr = tempstr.Replace(chr(13), "")
                nstr &= tempstr
                tempstr = ""
                flag = False
            End If
        End If
        If flag = True Then
            tempstr &= str(i)
        Else
            nstr &= str(i)
        End If
    Next
    ClipBoard.SetText(nstr.replace("""", ""))
    str = ClipBoard.GetText
    Dim nr As Integer = str.Replace(vblf,"").Trim(vbcr).Split(vbcr).Length + (e.Table.RowSel) - e.Table.Rows.Count
    Dim k = e.Table.Rowsel
    Dim j = e.Table.Colsel
    If nr > 0 Then
        e.Table.AddNew(nr)
        e.Table.Select(k, J)
    End If
End If


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


加好友 发短信
等级:童狐 帖子:250 积分:1813 威望:0 精华:0 注册:2012/6/28 13:53:00
  发帖心情 Post By:2017/12/18 8:03:00 [只看该作者]

会多出来几行空行是什么原因? 好修改吗?是不是和前面粘贴多行有关系?


'粘贴多行
Dim t As Table = e.Table
If e.Control = True AndAlso t.Current IsNot Nothing Then
    Dim r As Integer = t.RowSel
    If e.KeyCode = keys.V Then
        Dim str As String = ClipBoard.GetText        
        Dim nr As Integer = str.Replace(vblf,"").Trim(vbcr).Split(vbcr).Length + (t.RowSel) - t.Rows.Count        
        If nr > 0 Then
            t.AddNew(nr)
            t.Select(r,t.ColSel)
        End If
    End If
End If

'

'
'粘贴带有换行的EXCEL单元格
If e.control = True AndAlso e.keycode = keys.v Then
    '执行代码
    Dim str As String = ClipBoard.GetText
    Dim nstr As String = ""
    Dim tempstr As String = ""
    Dim flag As Boolean = False
    For i As Integer = 0 To str.length - 1
        If str(i) = """" Then
            If i = 0 OrElse str(i-1) = chr(9) OrElse str(i-1) = chr(10) Then '开始
                flag = True
            ElseIf i = str.length-1 OrElse str(i+1) = chr(9) OrElse str(i+1) = chr(13) Then '结束
                tempstr = tempstr.Replace(chr(13), "")
                nstr &= tempstr
                tempstr = ""
                flag = False
            End If
        End If
        If flag = True Then
            tempstr &= str(i)
        Else
            nstr &= str(i)
        End If
    Next
    ClipBoard.SetText(nstr.replace("""", ""))
    str = ClipBoard.GetText
    Dim nr As Integer = str.Replace(vblf,"").Trim(vbcr).Split(vbcr).Length + (e.Table.RowSel) - e.Table.Rows.Count
    Dim k = e.Table.Rowsel
    Dim j = e.Table.Colsel
    If nr > 0 Then
        e.Table.AddNew(nr)
        e.Table.Select(k, J)
    End If
End If
[此贴子已经被作者于2017/12/18 8:07:04编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/12/18 8:47:00 [只看该作者]

删除你前面的代码就可以了。keydown事件,只写4楼的代码即可。

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


加好友 发短信
等级:童狐 帖子:250 积分:1813 威望:0 精华:0 注册:2012/6/28 13:53:00
  发帖心情 Post By:2017/12/18 13:10:00 [只看该作者]

感谢老师不厌其烦地指教!图片点击可在新窗口打开查看

 回到顶部