找回密码
 立即注册

QQ登录

只需一步,快速开始

烟雨入墨

注册会员

7

主题

20

帖子

63

积分

注册会员

积分
63
最新发帖
烟雨入墨
注册会员   /  发表于:2024-10-31 08:50  /   查看:174  /  回复:5
当一个行或者列被隐藏或者分组折叠时,我如何可以获取他取消隐藏或者取消折叠后的宽度或者高度

5 个回复

倒序浏览
Wilson.Zhang
超级版主   /  发表于:2024-10-31 13:33:21
沙发
您好!可以使用Worksheet:getColumnVisible()方法遍历每列是否被隐藏,同理,使用Worksheet:getRowVisible()方法遍历每行是否被隐藏。当行列被隐藏或折叠时,获取隐藏行的行高和隐藏列的列宽结果都为0,可见的行列才能获取到非0值的实际行高和列宽。请问下您需要通过获取隐藏或折叠行列的行高列宽实现怎样的业务需求呢?
回复 使用道具 举报
烟雨入墨
注册会员   /  发表于:2024-10-31 13:36:53
板凳
Wilson.Zhang 发表于 2024-10-31 13:33
您好!可以使用Worksheet:getColumnVisible()方法遍历每列是否被隐藏,同理,使用Worksheet:getRowVisible( ...

我们的报表具有自动扩展功能,扩展通过copyTo api进行实现,然而当分组被收起的时候,进行扩展,由于扩展的内容也会被加入分组,导致加入的行/列处于塌陷状态,原因就在于获取不到宽高
回复 使用道具 举报
Wilson.Zhang
超级版主   /  发表于:2024-10-31 17:21:08
地板
烟雨入墨 发表于 2024-10-31 13:36
我们的报表具有自动扩展功能,扩展通过copyTo api进行实现,然而当分组被收起的时候,进行扩展,由于扩展 ...

如下动图所示,对B列和C列创建分组并折叠分组,随后通过Worksheet:copyTo()分别复制单元格C1和B1的内容至紧邻的E1和F1,都可以正常复制粘贴。
隐藏列copyTo.gif

关于您提到的”导致加入的行/列处于塌陷状态“是什么现象?需要您录屏演示下。另外,如果在折叠分组后还需要了解分组内的行高和列宽,可以在RangeGroupStateChanged事件被触发时将保存分组内各行列的行高列宽,待需要时读取。可以参考如下方案:

1. 为Worksheet注册RangeGroupStateChanegd事件。
2. 在事件发生时,根据isRowGroup参数判断事件触发源为行分组还是列分组。
3. 以列分组为例,根据iindex和level,通过Outline:find()获取分组信息OutlineInfo。
4. OutlineInfo中保存了分组的起始列和结束列索引,不包含摘要列,即可通过Worksheet:getColumnWidth()遍历获取起始列至结束列之间的各列列宽,之后保存即可在需要时读取使用。
回复 使用道具 举报
烟雨入墨
注册会员   /  发表于:2024-11-1 09:10:19
5#
Wilson.Zhang 发表于 2024-10-31 17:21
如下动图所示,对B列和C列创建分组并折叠分组,随后通过Worksheet:copyTo()分别复制单元格C1和B1的内容至 ...

感谢你的回复  但我觉得稍微有点复杂了,目前采用的方法是:
(1)停止渲染
(2)展开所有分组
(3)开始扩展功能(此时可正常读取所有宽高)
(4)复原第二步展开的分组

该问题已解决,可以关闭该帖子了

评分

参与人数 1金币 +200 收起 理由
Lynn.Dou + 200 很给力!

查看全部评分

回复 使用道具 举报
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2024-11-1 14:25:33
6#
感谢您的分享,给您送上金币奖励。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部