找回密码
 立即注册

QQ登录

只需一步,快速开始

cccc
金牌服务用户   /  发表于:2024-6-27 14:13  /   查看:872  /  回复:4
本帖最后由 cccc 于 2024-7-1 09:27 编辑

我在excel文件某个工作表中自定义了2个名称,一个是工作簿级名称"rngWK",一个是工作表级名称"rngSt"。spread打开了这个excel文件,当前表为有这2个名称的工作表。现在我用 fpspread1.ActiveSheet.GetCustomName("rngWK",0,0)可以获得自定义名称"rngWK"的地址,同理我用fpspread1.ActiveSheet.GetCustomName("rngSt",0,0)结果为空。问题是:1、用什么方法分别获得工作簿级名称和工作表级名称的地址? 2、用什么方法分别获得工作簿级名称和工作表级名称的区域值?3、如何快速判断是工作簿级名称还是工作表级名称?

4 个回复

倒序浏览
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2024-6-27 19:00:21
沙发
可以尝试用
  1. fpspread1.ActiveSheet.GetCustomName("rngSt",0,0,false)
复制代码


false表示获取workbook级别的名称

image.png825251464.png

目前没有专门的方法来判断是工作表级别还是工作簿级别,你用上面的方法最后一个参数设置true或者false都获取一下就能判断

要把这个自定义名称中的公式字符串解析为区域,目前spread.net只能自己来解析字符串,没有其他的办法(实际上这个公式字符串也不一定是区域,也有可能是一个计算公式)


回复 使用道具 举报
cccc
金牌服务用户   /  发表于:2024-6-28 08:52:07
板凳
好,我试下增加false参数,我目前获得自定义名称区域的范围,也是解析公式字符串的方式。
回复 使用道具 举报
cccc
金牌服务用户   /  发表于:2024-6-28 09:07:53
地板

可以了,谢谢。通过fpspread1.ActiveSheet.GetCustomName("rngSt",0,0,true)方式获取到了工作表级名称的公式字符串或区域名称地址。但注意到一种情况:工作簿里不同工作表定义了同名字的名称时,fpspread1.ActiveSheet.GetCustomName("rngSt",0,0,true)这句会获取到其他工作表的相同名称的区域地址,后把fpspread1.ActiveSheet改成fpspread1.sheets[目标工作表名]就可以了。
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2024-6-30 18:06:18
5#
,确实会这样的,对于sheet级别的自定义名称,需要用所属的sheet来获取
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部