找回密码
 立即注册

QQ登录

只需一步,快速开始

xiaoxiao

注册会员

8

主题

25

帖子

160

积分

注册会员

积分
160

活字格认证

xiaoxiao
注册会员   /  发表于:2017-3-23 13:54  /   查看:4450  /  回复:5
采用sortrows排序时(升序),排序范围内如果有空白的单元格,会把空白的单元格作为排序对象排在前面。
而采用AutoSortColumn的时候,空白单元格不被作为排序对象。
想问一下使用sortrows排序时,能不能想AutoSortColumn那样,把空白单元格给忽略掉。

[sortrows排序的代码]
Dim sortInfo1(0) As FarPoint.Win.Spread.SortInfo

        sortInfo1(0) = New FarPoint.Win.Spread.SortInfo(
                            0, True, System.Collections.Comparer.Default)
        FpSpread1.Sheets(0).SortRows(0, FpSpread1.Sheets(0).RowCount, sortInfo1)

[AutoSortColumn排序的代码]
FpSpread1.Sheets(0).AutoSortColumn(0)

5 个回复

倒序浏览
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2017-3-23 18:41:47
沙发
排序时您用 fpSpread1.ActiveSheet.NonEmptyRowCount ,只对有数据的行排序
FpSpread1.Sheets(0).SortRows(0, fpSpread1.ActiveSheet.NonEmptyRowCount, sortInfo1)
回复 使用道具 举报
xiaoxiao
注册会员   /  发表于:2017-3-24 17:16:16
板凳
dexteryao 发表于 2017-3-23 18:41
排序时您用 fpSpread1.ActiveSheet.NonEmptyRowCount ,只对有数据的行排序
FpSpread1.Sheets(0).SortRows ...

谢谢你的回答。
刚刚按照回答上的试了一下。对于连续数据的列,这个办法可以把空白行排在所有数据的后面。
但是对于非连续数据的列,这个办法就不可行了。会把中间的那几个空白行排到所有数据的前面。
所以,对于非连续数据的列,还有其他办法么?
回复 使用道具 举报
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2017-3-24 17:57:20
地板
排序是按区域进行的,空行在排序的范围中就会参与排序。
您可以通过 修改 SortInfo 的 Comparer 改变排序规则
回复 使用道具 举报
xiaoxiao
注册会员   /  发表于:2017-3-27 11:04:45
5#
dexteryao 发表于 2017-3-24 17:57
排序是按区域进行的,空行在排序的范围中就会参与排序。
您可以通过 修改 SortInfo 的 Comparer 改变排序 ...

谢谢提示。重写了ICompare的comparer后,实现了这个功能。非常感谢。
回复 使用道具 举报
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2017-3-27 14:50:30
6#
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部