纯数据xml通过xslt转换成报表xml

一、

除了要知道xml,xslt的知识,还需要了解ExcelXml(可用Excel打开的报表xml)各标签的含义。

数据放在<Worksheet>标签的<Table>标签内。


每一行数据放在<Row>标签内,每个单元格的内容放在<Cell>标签内


每个标签都有自己的属性(废话-_-||),主要都是样式相关的。

有些比较重要,比如:

下面部分转自:http://woniu1983.iteye.com/blog/700749

1.

ss:ExpandedColumnCount是定义表格的列数 
    测试中我发现这个数值必须大于实际的列数,例如,我的实际列数是5列,那么赋值的时候使用的是6, 如果使用的是5的话,解析的结果文件使用Office无法打开,提示格式错误信息,不信的同学可以尝试下。

2.

ss:ExpandedRowCount是定义表格的行数,当然肯定要大于实际的行数,这里我做了个算式:统计出源数据xml中Section个数+10  

3.

Column... 标签是定义每一列的长宽等属性,实际列数是5列,那么就定义5个Column标签 

4.

Row... 标签是定义每一行的长宽等属性,实际行数是多少,那么就定义多少个Row标签 

5.

Cell... 标签是Row的子标签,用于定义每一行中各单元格的数据及样式等等

6.

ss:MergeDown是Cell的属性, 用于单元格的纵向合并 
 ss:MergeDown = "4" 表示:合并当前单元格下边的4个单元格(即纵向区域总共5个单元格被合并)

.

ss:MergeAcross是Cell的属性, 用于单元格的横向合并 
ss:MergeAcross="4" 表示:合并当前单元格右边的4个单元格(即横向区域总共5个单元格被合并)  

栗子

表格型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的结构,写一个XSL文件(相当于写一个逻辑处理代码,使用的是XSLT的API), 然后来解析(解析使用XSLT的引擎)这个源数据XML, 最后生成(或者说组合出)目标文件(一个表格型的XML)。 



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值