需求与总体思路
在37. 面向对象的LotusScript(九)之导出Excel(一)、38. 面向对象的LotusScript(九)之导出Excel(二)到39. 面向对象的LotusScript(十一)之导出Excel(三)几篇文章里,笔者谈了将MS Excel作为目标格式创建报表。虽然大部分情况下这都是不错的选择,也有些时候“报表”用其它格式展现更方便或适宜,包括网页甚至动态的Notes表格。理由可能有很多种,从没有安装Excel软件,想将结果嵌入在Html邮件中,到直接在Notes客户端里展现,不一而足。笔者对网页和Notes表格这两种格式就都使用过。
现在想把网页作为目标格式创建报表的框架整理出来,希望对工作中可能遇上这样需求的或者仅仅是有兴趣的朋友有些帮助。说是整理,其实是按照现在的思路重写,就像考古学家根据文献资料复制历史上的马车盔甲一样,因为当年那些代码都没有保留下来。
为了利用36. 面向对象的LotusScript(八)之继承所述的思想,笔者先抽象出一个基本的创建表格的类,之后以Html或Notes富文本域的动态表格为目标的具体实现都继承这个类。
- Public Class TableWriter
- %REM
- Description: Comments for Function
- %END REM
- Public Function WriteHeader(headers As Variant)
- End Function
- %REM
- Description: Comments for Function
- %END REM
- Public Function WriteLine(values As Variant)
- End Function
- %REM
- Description: Comments for Function
- %END REM
- Public Function EndTable()
- End Function
- %REM
- Description: Finishes the report and shows it.
- %END REM
- Public Function Show()
- End Function
- End Class
四个空函数分别是写表格的头,写表格一行,结束表格和结束并显示报表。然后我们来看写HTML表格的类。这样做会遇上两个前置问题,第一个是HTML的转义字符,第二个是HTML文件创建到哪里并且如何自动打开它。
HTML转义字符
先看第一个问题,HTML的文本节点里,也就是<>标签之外的内容,需要转义的字符有<、>和&三个,<>标签内需转义的字符有'和"。对这五个字符,可以写出如下的转义函数。