软件准备OO是OpenOffice的简称而非众人皆知的面向对象有关它的开发文档有好几沓在此不多言了别忘了先安装一下啊否则无法进行类型转换的OO支持的文档类型odtods等对应熟知的Office文档类型docxls JOOReports是基于OO文档模版的文档生成软件支持动态替换和freemarker ELCollection的文档重复替换附随源代码提供了比较精简的api和doc但源代码中的example很值得一看
JOOConvert毋庸置疑就是配套的文档转换软件将文档托管给OO进行转换然后获得转换后的文档支持多种类型文档odtodsdocrtftxtpdfxls后面的代码中有详细介绍
代码框架信手写来也称不上框架总体上分了三部分调用JOOReports/JOOConvert的核心类基于Strieps框架的web实现必不可少的UnitTest核心部分DocumentTemplateParam文档生成参数类
DocumentConvertParam文档转换参数类
ConvertContext用于连接OO网络服务的转换上写文类
DocumentGenerator文档生成类
DocumentFormatConverter文档格式转换类
之所以分如此细致也许是本人的重构癖作祟吧但扩展起来是很具灵性的如果Martin Flower大人看到可能感激落泪吧
Web实现很简单的Stripes框架实现的产品登记输出为docpdfxls格式的文件在此抛砖引玉啦
Product产品Bean类
ProductDetailActionBean实现产品登记的ActionBean类
WEBINF/fileTemplateodtods文档模版保存位置
UnitTest对核心部分进行测试当然Stripes也可作测试但应用简单懒于编写了
编写文档模版OO在设计时考虑了通用性所以每个odtods文件都是以zip的压缩模式保存只要用相关软件便可以观其状了Contentxml尤为重要其中保存了模版数据如hellotemplateodt
其中的乱码是因UTF编码造成文档风格就是xml分割但其中红色代码使用了freemarker的表达式风格这也是JOOReport所支持的具体详见freemarker和JOOConvert manual编写模版时建议使用设计好格式的文档然后使用文本编辑器在其中插入表达式切勿在OO中直接编写表达式因为OO会对其进行转换使其失效
转换文档时启动OO后台服务在调用JOOReport生成文档时无需启动OO因为与OO服务无关而调用JOOConvert进行文档转换时就需要在控制台中输入一下cd %OPENOFFICE_HOME%\program sofficeexe headless accept=socketport=host=localhosturp OPENOFFICE_HOME代表了OO安装时的目录