XML 报表1

   需求要求:根据数据库中查询出的数据,导出报表, 电子表格形式, 可以使用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代码    收藏代码
  1. <?xml version="1.0"?>  
  2. <?mso-application progid="Excel.Sheet"?>  
  3. <Workbook ..........>  
  4.  <!--文档属性-->  
  5.  <DocumentProperties ......>  
  6.    .....  
  7.  </DocumentProperties>  
  8.  <!--Excel工作簿属性-->  
  9.  <ExcelWorkbook ....>  
  10.     .....  
  11.  </ExcelWorkbook>  
  12.  <!--定义共通样式供单元格调用-->  
  13.  <Styles>  
  14.     ....  
  15.  </Styles>  
  16.  <!--Excel的sheet-->  
  17.  <Worksheet ss:Name="报表-部门费用分配表">  
  18.    <Table ss:ExpandedColumnCount="8" ss:ExpandedRowCount="73" x:FullColumns="1"  
  19.      x:FullRows="1" ss:StyleID="s23" ss:DefaultColumnWidth="90"  
  20.      ss:DefaultRowHeight="18">  
  21.      <!--某一列的属性-->  
  22.      <Column ss:Index="8" ss:StyleID="s23" ss:Width="99.75"/>  
  23.      <!--某一行的属性-->  
  24.      <Row ss:AutoFitHeight="0" ss:Height="29.25" />  
  25.          <!--行中各单元格的值和属性-->  
  26.          <Cell />  
  27.          <Cell />  
  28.          ...  
  29.          ...  
  30.      </Row>  
  31.      ...  
  32.      ...  
  33.      ...  
  34.    </Table>  
  35.   </Worksheet>  
  36.   </Workbook>  
  37.    



  从上面可以看出:表格型的XML其结构还是很清晰的,包括数据是以何种方式列举并显示的。 

     整个过程: 根据我们的源数据XML的结构,写一个XSL文件(相当于写一个逻辑处理代码,使用的是XSLT的API), 然后来解析(解析使用XSLT的引擎)这个源数据XML, 最后生成(或者说组合出)目标文件(一个表格型的XML)。 

   此为第一弹,了解下目标文件:表格型XML的结构。未完待续。

 

转自:http://woniu1983.iteye.com/blog/696730

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值