一、语言本身
- JSA 支持的 JS 语言特性探索
- JSA 扩展公式函数
-
二、XLSExample:表格常见宏编程任务示例
[x] AutoFilter bug : 一个表只能有一个 AutoFilter
- Sort bug :可以不依赖 AutoFilter
- 静态公开数据对象
- ProgressValue 换成更有意义的状态
- JSA 创建图表
- JSA 创建数据透视表
- 超链接
- 文本框
- 控件
- 打印设置
- 自选图形
三、JSA 代码生成器:
- 功能物件或基层对象辅助器:一个功能物件可能包含很多基本数据成员,也可以包含很多子对象成员;基层对象,不包含子对象
- 属性成员树 MemberTreeInfo:属性成员树信息,会为其它方法成员,提供基本数据;具体实现为静态属性 Info
- 属性提取器 Extractor:数据提取器,用于从具体对象上提取出数据对象;具体实现为静态方法 Extract(obj)
- 仅基本类型属性成员
- 基本类型属性+可选的可空类型属性成员
- 引用类型成员
- 数据校验器 Checker :检验一个数据对象,是否是当前对象类型的数据;具体实现为实例方法
- 属性设置器 Setter :可以将数据对象,应用到具体对象上
- 属性比较器 Comparer:将数据对象与具体对象相比较,看两者特征是否吻合;具体实现为方法 Equal
四、工程内数据库
- 数据库表:使用一个数据表保存数据,这个数据表隐藏:
- 为类型提供一个名称,如以
XLSObjectTypeName
命名 - 为类型提供一个数据行,这个类型有到这个数据表的地址,它是只读静态属性
- 行的前几个单元格保存基本信息,剩余的单元格可以用来保存数据,基本信息包括类名,类型包装的宿主类型,适用的范围,比如
Font
支持Range.Font/Comment.Font
,还有相关描述信息 - 剩余的保存数据的单元格,直接存放的不是数据本身,而是数据的描述信息,用户可以用这个信息来查找自己想要的东西
- 使用批注实际保存提取到的 JSON 数据
- 有的对象可能是大对象,包含几个层级的信息,比如 FormatCondition 就包含很多信息,字体信息,公式信息,格式信息等等,这种综合性对象,它的数据应该是组合在一起的,拆分开来是不合适的,虽然如此,它还是有它的类型的
- 那么按数据来弄,怎么样?它应该有这些列:数据 Id/所属的类型名称/描述信息/数据,这样就可以支持 SQL
- 或者仍然是一种类型一个表,但是它是表内表,比如 A:J 这十行,全用来存放
FormatCondition
数据
- 数据集合库:使用代码与基于 JSON 的数据,来保存数据