Foxtable(狐表)用户栏目专家坐堂 → [求助]想删除单元格内空行,却改变了单元格字符串长度


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

主题:[求助]想删除单元格内空行,却改变了单元格字符串长度

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


加好友 发短信
等级:四尾狐 帖子:962 积分:8505 威望:0 精华:0 注册:2012/10/3 13:25:00
[求助]想删除单元格内空行,却改变了单元格字符串长度  发帖心情 Post By:2016/9/6 15:56:00 [只看该作者]

下面这段代码是想删除  单元格内  多余空行(单元格内Ctrl+Enter产生的空换行符,如果换行有内容仍保留),执行代码后却改变了其他单元格字符串长度,麻烦版主看看是哪里出了问题?

For Each t As Table In Tables
    For Each r As Row In t.rows
        For Each c As Col In t.cols
            Dim ary() As String = cstr(r(c.name)).split(new Char() {chr(10), chr(13)})
            Dim str As String = ""
            For Each s As String In ary
                If s.trim > "" Then
                    str &= s & vbcrlf
                End If
            Next
            r(c.name) = str
        Next
    Next
Next

 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110597 积分:562881 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2016/9/6 16:32:00 [只看该作者]

Dim lst As new List(of String)
For Each t As Table In Tables
    For Each r As Row In t.rows
        For Each c As Col In t.cols
            lst.Clear
            Dim lines = r.DataRow.Lines(c.Name)
            If lines.Count > 1 Then
                For Each s As String In  lines
                    If s.trim > "" Then
                        lst.Add(s)
                    End If
                Next
                r(c.name) = String.Join(vbcrlf,lst.ToArray)
            End If
        Next
    Next
Next

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


加好友 发短信
等级:四尾狐 帖子:962 积分:8505 威望:0 精华:0 注册:2012/10/3 13:25:00
  发帖心情 Post By:2016/9/6 20:10:00 [只看该作者]

版主,运行代码后,每个单元格字符长度增加2,双击单元格后再离开,长度就会减小2(回到原长度),是什么原因?

 回到顶部
帅哥,在线噢!
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110597 积分:562881 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2016/9/6 20:52:00 [只看该作者]

测试没有这种问题,做个例子看看

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


加好友 发短信
等级:四尾狐 帖子:962 积分:8505 威望:0 精华:0 注册:2012/10/3 13:25:00
  发帖心情 Post By:2016/9/6 21:08:00 [只看该作者]

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


 回到顶部
帅哥,在线噢!
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110597 积分:562881 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2016/9/6 21:34:00 [只看该作者]

Dim lst As new List(of String)
For Each t As Table In Tables
    For Each r As Row In t.rows
        For Each c As Col In t.cols
            lst.Clear
            Dim lines = r.DataRow.Lines(c.Name)
            If lines.Count > 1 Then
                For Each s As String In  lines
                    If s.trim > "" Then
                        lst.Add(s)
                    End If
                Next
                r(c.name) = String.Join(vbcrlf,lst.ToArray)
            Else
                r(c.name) = r(c.name).TrimEnd(chr(10),chr(13))
            End If
        Next
    Next
Next


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


加好友 发短信
等级:四尾狐 帖子:962 积分:8505 威望:0 精华:0 注册:2012/10/3 13:25:00
  发帖心情 Post By:2016/9/6 21:49:00 [只看该作者]

谢谢版主!

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


加好友 发短信
等级:四尾狐 帖子:962 积分:8505 威望:0 精华:0 注册:2012/10/3 13:25:00
  发帖心情 Post By:2016/9/6 22:02:00 [只看该作者]

在例子里行,换到另一项目提示“未设置变量或with块变量”


图片点击可在新窗口打开查看此主题相关图片如下:image 1.jpg
图片点击可在新窗口打开查看

[此贴子已经被作者于2016/9/6 22:11:55编辑过]

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


加好友 发短信
等级:四尾狐 帖子:962 积分:8505 威望:0 精华:0 注册:2012/10/3 13:25:00
  发帖心情 Post By:2016/9/7 10:31:00 [只看该作者]

麻烦版主再给看看。

 回到顶部
帅哥,在线噢!
有点蓝
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110597 积分:562881 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2016/9/7 11:00:00 [只看该作者]

试试

Dim lst As new List(of String)
For Each t As Table In Tables
    For Each r As Row In t.rows
        For Each c As Col In t.cols
            If c.IsString Then
                lst.Clear
                Dim lines = r.DataRow.Lines(c.Name)
                If lines.Count > 1 Then
                    For Each s As String In  lines
                        If s.trim > "" Then
                            lst.Add(s)
                        End If
                    Next
                    r(c.name) = String.Join(vbcrlf,lst.ToArray)
                Else
                    r(c.name) = r(c.name).TrimEnd(chr(10),chr(13))
                End If
            End If
        Next
    Next
Next

或者上传例子

 回到顶部