以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  从EXCEL中复制数据时的问题  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=116892)

--  作者:wangj6666
--  发布时间:2018/4/2 13:26:00
--  从EXCEL中复制数据时的问题

各位专家们:您们好!

       将EXCEL表格中的数据信息复制如FOXTABLE中时,如何处理在EXCEL单元格中使用了回车换行的数据?因为这类单元格的数据在粘贴到FOXTABLE中时,它会不在1个单元格中,每一个回车换行都自动另起了一行,被放到了多个行的单元格中。谢谢!


--  作者:有点甜
--  发布时间:2018/4/2 14:24:00
--  

keydown事件,写这种代码

 

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)
End If


--  作者:wangj6666
--  发布时间:2018/4/3 14:58:00
--  
以下是引用有点甜在2018/4/2 14:24:00的发言:

keydown事件,写这种代码

 

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)
End If

 

 

请问是Keydown事件还是KeydowmEdit事件?我没有找到Keydown事件。


--  作者:wangj6666
--  发布时间:2018/4/3 15:11:00
--  找到了,搞定

找到了,搞定


--  作者:wangj6666
--  发布时间:2018/4/4 10:23:00
--  复制时有一列遇到了新问题

专家:您好!

使用上面的代码复制时,又出现了1个新问题,就是在复制“评论信息”这一列时提示了错误:

我的“评论信息”列单元格内的信息如下:

 


图片点击可在新窗口打开查看此主题相关图片如下:微信截图_20180404102007.png
图片点击可在新窗口打开查看

 

复制时FOXTABLE提示的提示如下:

 


图片点击可在新窗口打开查看此主题相关图片如下:微信截图_20180404100333.png
图片点击可在新窗口打开查看

请问还要如何修改代码才能解决这个问题。谢谢!


--  作者:有点甜
--  发布时间:2018/4/4 10:28:00
--  

1、excel文件发上来测试;

 

2、贴出你keydown的事件代码。


--  作者:wangj6666
--  发布时间:2018/4/4 10:51:00
--  
以下是引用有点甜在2018/4/4 10:28:00的发言:

1、excel文件发上来测试;

 

2、贴出你keydown的事件代码。

我的EXCEL文件如下:

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:report交样汇报.xls

KEYDOWN的事件代码为:

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:新建文本文档1.txt


--  作者:有点甜
--  发布时间:2018/4/4 11:43:00
--  

改成这样

 

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
            End If
            If i = str.length-1 OrElse str(i+1) = chr(9) OrElse str(i+1) = chr(10) 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
    msgbox(nstr)
    ClipBoard.SetText(nstr)
End If