找回密码
 立即注册

QQ登录

只需一步,快速开始

拾趣ヾ
金牌服务用户   /  发表于:2024-7-29 18:48  /   查看:1248  /  回复:10
1金币

最佳答案

查看完整内容

您好!暂时没有类似getArray()的批量获取下拉列表的API,针对您的业务场景,可以自定义实现,思路如下: 1. 轮询所选区域内的单元格,对每个单元格通过Worksheet:getCellType()获取单元格类型。 2. 判断当前单元格类型是否为Combox,如果是则找到下拉列表,即可访问其方法和属性,或自定义其他业务逻辑。 如下代码即上述思路实现demo:

10 个回复

倒序浏览
最佳答案
最佳答案
Wilson.Zhang
超级版主   /  发表于:2024-7-29 18:48:29
来自 4#
本帖最后由 Wilson.Zhang 于 2024-7-30 10:24 编辑

您好!暂时没有类似getArray()的批量获取下拉列表的API,针对您的业务场景,可以自定义实现,思路如下:
1. 轮询所选区域内的单元格,对每个单元格通过Worksheet:getCellType()获取单元格类型。
2. 判断当前单元格类型是否为Combox,如果是则找到下拉列表,即可访问其方法和属性,或自定义其他业务逻辑。
如下代码即上述思路实现demo:
  1. for (var i = row; i < row + rowCount; i++) {
  2.     for (var j = col; j < col + colCount; j++) {
  3.         var cellType = sheet.getCellType(i, j);
  4.         if (cellType.typeName === 7) {
  5.             //  Combox作下拉列表,自定义处理逻辑
  6.         }
  7.     }
  8. }
复制代码




回复 使用道具 举报
Wilson.Zhang
超级版主   /  发表于:2024-7-30 09:36:50
2#
您好!在您关于“下拉列表的按钮图标怎么改”的帖子中,您提供的图片显示在使用的下拉列表是ComboBox,为了更准确地解决问题,所以需要跟您确认下当前是通过设置单元格类型ComboBox在单元格上填充的下拉列表吗?
回复 使用道具 举报
拾趣ヾ
金牌服务用户   /  发表于:2024-7-30 10:07:21
3#
是的
回复 使用道具 举报
拾趣ヾ
金牌服务用户   /  发表于:2024-7-30 10:33:19
5#
Wilson.Zhang 发表于 2024-7-30 10:21
您好!暂时没有类似getArray()的批量获取下拉列表的API,针对您的业务场景,可以自定义实现,思路如下:
...

如果选取比较大,这个会有一些性能问题或者很慢,有没有高效一些的方式呢
回复 使用道具 举报
Wilson.Zhang
超级版主   /  发表于:2024-7-30 10:57:02
6#
拾趣ヾ 发表于 2024-7-30 10:33
如果选取比较大,这个会有一些性能问题或者很慢,有没有高效一些的方式呢

在200行20列的工作表中测试,未发现卡顿现象。您可以先尝试下看这个方法能否满足需求。您的具体需求是怎样的呢?
回复 使用道具 举报
拾趣ヾ
金牌服务用户   /  发表于:2024-7-30 11:09:16
7#
需求是选中一个选区,首先要判断选区内有没有下拉列表和有没有值,将所有值和第一个下拉列表的值提取处理,去重作为新的下拉列表项
回复 使用道具 举报
Wilson.Zhang
超级版主   /  发表于:2024-7-30 13:52:50
8#
拾趣ヾ 发表于 2024-7-30 11:09
需求是选中一个选区,首先要判断选区内有没有下拉列表和有没有值,将所有值和第一个下拉列表的值提取处理, ...

了解您的需求了,我理解选区只是工作表中的一部分位置相邻的单元格组成的区域,数据规模和操作动作频次不大,获取单元格类型并判断是否为下拉列表不影响性能。暂时没有单独的API获取区域内的下拉列表,4楼给出的方案可行,请您先尝试看是否满足需求。
回复 使用道具 举报
拾趣ヾ
金牌服务用户   /  发表于:2024-7-30 14:09:23
9#
好的,谢谢
回复 使用道具 举报
Wilson.Zhang
超级版主   /  发表于:2024-7-30 14:13:57
10#

不客气,有问题欢迎继续沟通
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部