您的位置:首页 > 其它

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

2017-06-08 15:11 183 查看
一、

除了要知道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)。 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  XSLT 报表xml