以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  复制多行文本单元格的问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=38876)

--  作者:明丰
--  发布时间:2013/8/9 14:08:00
--  复制多行文本单元格的问题
 

Excel单元格多行文本格式:Chr(34) & "第一行" & Chr(10) & 第二行 & chr(34) &  Chr(13) & Chr(10)

 

Foxtable单元格多行文本格式:"第一行"  &  Chr(13) & Chr(10) & 第二行  &  Chr(13) & Chr(10)

 

Foxtable采用Excel多行文本格式时,能正常多行显示,但单元格进入编辑状态时变为单行显示。

 

Foxtable复制含多行文本的单元格时,文本第二行会跳到下一单元格,Excel就不会出现这种情况。

 

同时复制 多个 含多行文本单元格时,如何避免文本第二行跳出单元格?


此主题相关图片如下:多行文本.gif
按此在新窗口浏览图片

--  作者:Bin
--  发布时间:2013/8/9 14:15:00
--  
你双击进入编辑状态再黏贴就没有这样的问题.
--  作者:明丰
--  发布时间:2013/8/9 14:19:00
--  
复制单个单元格没问题,如果是多行呢?
--  作者:Bin
--  发布时间:2013/8/9 14:22:00
--  
多行复制要不你就用代码导出吧,这个很难做到完美契合.
--  作者:明丰
--  发布时间:2013/8/9 14:37:00
--  

复制前将单元格内部“换行、回车”替换为“换行”,粘贴完成后再替换回来,可以解决问题。

但如果狐爸能完善一下功能,就更好了,毕竟大家都碰到过这个问题。


--  作者:y2287958
--  发布时间:2013/8/9 19:30:00
--  
支持
--  作者:有点甜
--  发布时间:2013/8/9 19:58:00
--  
 楼主可以尝试这样。

Dim str As String = ClipBoard.GetText()
str = str.Replace(vbcrlf, Chr(10))
ClipBoard.SetText(str)



--  作者:明丰
--  发布时间:2013/8/9 21:53:00
--  

\'项目事件 Initialize
For Each dt As DataTable In DataTables
    dt.GlobalHandler.PrepareEdit = True   \'开启PrepareEdit事件
Next
For Each dt As DataTable In DataTables
    dt.GlobalHandler.AfterEdit = True     \'开启AfterEdit事件
Next

 

\'全局表事件 PrepareEdit  准备编辑时,替换剪贴板多行文本换行符
Dim str As String = ClipBoard.GetText()
If str.contains(vbcrlf) Then
    str = str.Replace(vbcrlf, Chr(10))
    ClipBoard.SetText(str)
End If

 

\'全局表事件 AfterEdit   结束编辑单元格后,替换单元格多行文本换行符
If e.Row(e.Col.name).contains(chr(10)) And e.Row(e.Col.name).contains(vbcrlf) = False Then
    e.Row(e.Col.name) = e.Row(e.Col.name).replace(chr(10),vbcrlf)
End If

[此贴子已经被作者于2013-8-10 16:48:18编辑过]

--  作者:明丰
--  发布时间:2013/8/10 16:50:00
--  
测试通过!
--  作者:lsy
--  发布时间:2013/8/10 17:21:00
--  

只要有利于使用者使用

只要有利于开发者开发

只要有利于狐狸精成长

 

顶就一个字,没得商量。