动态名称管理器拼接
本帖最后由 Winny 于 2022-12-8 10:39 编辑在你所不知道的名称管理器中,介绍了名称管理器的含义及它用于标记单元格设置数据的使用方法。但是在用代码添加名称管理器时,客户会觉得自己编写名称管理器的引用区域略显复杂,希望可以根据区域来动态生成名称管理器的引用范围。本文会从前后端表格控件SpreadJS和GCExcel两方面去讲解如何动态生成名称管理器的引用区域。
(1)SpreadJS生成名称管理器引用区域
根据上图,当添加一个名称管理器时,引用区域为Sheet2!$C$5:$D$6,由工作表名称和区域引用组成。如果使用API去添加,容易出错,此时,我们可以借助其它API来拼接出引用字符串,详细代码如下:
let rangeStr = GC.Spread.Sheets.CalcEngine.rangeToFormula(sheet.getRange(0,0,4,4))
let cusref = `='${sheet.name()}'!${rangeStr}`
sheet.addCustomName('test',cusref,0,0)
关于名称管理器的API解释,可参考学习指南-名称管理器,添加完上述代码之后,打开名称管理器,可以看到添加的信息:
需要注意的时,这列拼接工作表名称时,工作表名称需要加单引号,防止当工作表名称出现一些运算符时,后续定位单元格有问题。
(2) GCExcel拼接名称管理器
Workbook wb = new Workbook();
IWorksheet ws = wb.getActiveSheet();
ws.setName("CIT.WP01.3_预提费用-FS");
Reference refer = new Reference();
refer.setWorksheetName(ws.getName());
refer.setRow(0);
refer.setColumn(0);
refer.setIsColumnRelative(false);
refer.setIsRowRelative(false);
ws.getNames().add("test", refer.toString());
wb.save("test.xlsx");
关于名称管理器的API介绍可以参考GCExcel学习指南,添加完成后,导出Excel,名称管理器展示如下:
页:
[1]