一、语言本身

  • JSA 支持的 JS 语言特性探索
  • JSA 扩展公式函数
  • [x] JSA Linq

    二、XLSExample:表格常见宏编程任务示例

  • [x] AutoFilter bug : 一个表只能有一个 AutoFilter

  • Sort bug :可以不依赖 AutoFilter
  • 静态公开数据对象
  • ProgressValue 换成更有意义的状态
  • JSA 创建图表
  • JSA 创建数据透视表
  • 超链接
  • 文本框
  • 控件
  • 打印设置
  • 自选图形

三、JSA 代码生成器:

  1. 功能物件或基层对象辅助器:一个功能物件可能包含很多基本数据成员,也可以包含很多子对象成员;基层对象,不包含子对象
  • 属性成员树 MemberTreeInfo:属性成员树信息,会为其它方法成员,提供基本数据;具体实现为静态属性 Info
  • 属性提取器 Extractor:数据提取器,用于从具体对象上提取出数据对象;具体实现为静态方法 Extract(obj)
  • 仅基本类型属性成员
  • 基本类型属性+可选的可空类型属性成员
  • 引用类型成员
  • 数据校验器 Checker :检验一个数据对象,是否是当前对象类型的数据;具体实现为实例方法
  • 属性设置器 Setter :可以将数据对象,应用到具体对象上
  • 属性比较器 Comparer:将数据对象与具体对象相比较,看两者特征是否吻合;具体实现为方法 Equal

四、工程内数据库

  • 数据库表:使用一个数据表保存数据,这个数据表隐藏:
  1. 为类型提供一个名称,如以 XLSObjectTypeName命名
  2. 为类型提供一个数据行,这个类型有到这个数据表的地址,它是只读静态属性
  3. 行的前几个单元格保存基本信息,剩余的单元格可以用来保存数据,基本信息包括类名,类型包装的宿主类型,适用的范围,比如 Font支持 Range.Font/Comment.Font,还有相关描述信息
  4. 剩余的保存数据的单元格,直接存放的不是数据本身,而是数据的描述信息,用户可以用这个信息来查找自己想要的东西
  5. 使用批注实际保存提取到的 JSON 数据
  6. 有的对象可能是大对象,包含几个层级的信息,比如 FormatCondition 就包含很多信息,字体信息,公式信息,格式信息等等,这种综合性对象,它的数据应该是组合在一起的,拆分开来是不合适的,虽然如此,它还是有它的类型的
  7. 那么按数据来弄,怎么样?它应该有这些列:数据 Id/所属的类型名称/描述信息/数据,这样就可以支持 SQL
  8. 或者仍然是一种类型一个表,但是它是表内表,比如 A:J 这十行,全用来存放 FormatCondition 数据
  • 数据集合库:使用代码与基于 JSON 的数据,来保存数据