XML 报表1

    技术2022-05-20  49

       需求要求:根据数据库中查询出的数据,导出报表, 电子表格形式, 可以使用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


    最新回复(0)