需求要求:根据数据库中查询出的数据,导出报表, 电子表格形式, 可以使用MS Office 打开。 最开始的想法: 1.使用Apache的POI API将查询到的数据填写到Excel文档中,但思来想去觉得这不是一个Good idea,感觉类似硬编码,太生硬太粗暴; 2.使用开源的一些报表工具:貌似很多工具都很花哨我的项目用不到,而且学习周期长,有些工具虽开源但文档收费(要命,按美金收,没文档很难整); 最后考虑下来,决定尝试XSLT: 1. 相对成熟的技术,使用的人多,可参考的例子也多; 2. 学习周期短; 3. 手边有一个现成的XSLT解析XML生成表格型XML(可以使用MS Office 2003以上版本打开,界面显示同Excel)的例子; 学习及实践的Step: 1. 首先,按照项目的需求,创建一个相应的表格型XML(可以使用MS Office 2003),模拟些假的数据,保存,然后使用文本编辑器打开查看其格式,对要生成的目标文件有个大体的了解;
Xml代码 <?xml version="1.0"?> <?mso-application progid="Excel.Sheet"?> <Workbook ..........> <!--文档属性--> <DocumentProperties ......> ..... </DocumentProperties> <!--Excel工作簿属性--> <ExcelWorkbook ....> ..... </ExcelWorkbook> <!--定义共通样式供单元格调用--> <Styles> .... </Styles> <!--Excel的sheet--> <Worksheet ss:Name="报表-部门费用分配表"> <Table ss:ExpandedColumnCount="8" ss:ExpandedRowCount="73" x:FullColumns="1" x:FullRows="1" ss:StyleID="s23" ss:DefaultColumnWidth="90" ss:DefaultRowHeight="18"> <!--某一列的属性--> <Column ss:Index="8" ss:StyleID="s23" ss:Width="99.75"/> <!--某一行的属性--> <Row ss:AutoFitHeight="0" ss:Height="29.25" /> <!--行中各单元格的值和属性--> <Cell /> <Cell /> ... ... </Row> ... ... ... </Table> </Worksheet> </Workbook>从上面可以看出:表格型的XML其结构还是很清晰的,包括数据是以何种方式列举并显示的。 整个过程: 根据我们的源数据XML的结构,写一个XSL文件(相当于写一个逻辑处理代码,使用的是XSLT的API), 然后来解析(解析使用XSLT的引擎)这个源数据XML, 最后生成(或者说组合出)目标文件(一个表格型的XML)。 此为第一弹,了解下目标文件:表格型XML的结构。未完待续。
转自:http://woniu1983.iteye.com/blog/696730