[b]需求要求:根据数据库中查询出的数据,导出报表, 电子表格形式, 可以使用MS Office 打开。[/b]
[b]最开始的想法: [/b]
1.使用Apache的POI API将查询到的数据填写到Excel文档中,但思来想去觉得这不是一个Good idea,感觉类似硬编码,太生硬太粗暴;
2.使用开源的一些报表工具:貌似很多工具都很花哨我的项目用不到,而且学习周期长,有些工具虽开源但文档收费(要命,按美金收,没文档很难整);
[b]最后考虑下来,决定尝试XSLT:[/b]
1. 相对成熟的技术,使用的人多,可参考的例子也多;
2. 学习周期短;
3. 手边有一个现成的XSLT解析XML生成表格型XML(可以使用MS Office 2003以上版本打开,界面显示同Excel)的例子;
[b]学习及实践的Step:[/b]
1. 首先,按照项目的需求,创建一个相应的表格型XML(可以使用MS Office 2003),模拟些假的数据,保存,然后使用文本编辑器打开查看其格式,对要生成的目标文件有个大体的了解;
[b] 从上面可以看出:[/b]表格型的XML其结构还是很清晰的,包括数据是以何种方式列举并显示的。
整个过程: 根据我们的源数据XML的结构,写一个XSL文件(相当于写一个逻辑处理代码,使用的是XSLT的API), 然后来解析(解析使用XSLT的引擎)这个源数据XML, 最后生成(或者说组合出)目标文件(一个表格型的XML)。
[b] 此为第一弹,了解下目标文件:表格型XML的结构。未完待续。[/b]
[b]最开始的想法: [/b]
1.使用Apache的POI API将查询到的数据填写到Excel文档中,但思来想去觉得这不是一个Good idea,感觉类似硬编码,太生硬太粗暴;
2.使用开源的一些报表工具:貌似很多工具都很花哨我的项目用不到,而且学习周期长,有些工具虽开源但文档收费(要命,按美金收,没文档很难整);
[b]最后考虑下来,决定尝试XSLT:[/b]
1. 相对成熟的技术,使用的人多,可参考的例子也多;
2. 学习周期短;
3. 手边有一个现成的XSLT解析XML生成表格型XML(可以使用MS Office 2003以上版本打开,界面显示同Excel)的例子;
[b]学习及实践的Step:[/b]
1. 首先,按照项目的需求,创建一个相应的表格型XML(可以使用MS Office 2003),模拟些假的数据,保存,然后使用文本编辑器打开查看其格式,对要生成的目标文件有个大体的了解;
<?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>
[b] 从上面可以看出:[/b]表格型的XML其结构还是很清晰的,包括数据是以何种方式列举并显示的。
整个过程: 根据我们的源数据XML的结构,写一个XSL文件(相当于写一个逻辑处理代码,使用的是XSLT的API), 然后来解析(解析使用XSLT的引擎)这个源数据XML, 最后生成(或者说组合出)目标文件(一个表格型的XML)。
[b] 此为第一弹,了解下目标文件:表格型XML的结构。未完待续。[/b]