我试图使用XSLT将ss:Type="Number"
分配给标题中具有数字的列中的所有数据单元格。到目前为止,我只能将它正确地分配给标题行。XSLT +根据标题行的数据类型将Excel数据类型标记添加到单元格
XSLT:
<!-- match the Columns element and create header row -->
<xsl:template match="Columns/*">
<xsl:choose>
<xsl:when test="@Description[boolean(number()) or . = 0]">
<ss:Cell ss:StyleID="1">
<ss:Data ss:Type="Number"><xsl:apply-templates select="@Description"/></ss:Data>
</ss:Cell>
<xsl:call-template name="numberFormat"/>
</xsl:when>
<xsl:otherwise>
<ss:Cell ss:StyleID="1">
<ss:Data ss:Type="String"><xsl:apply-templates select="@Description"/></ss:Data>
</ss:Cell>
<xsl:call-template name="stringFormat"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template name="stringFormat" match="Row/*">
<ss:Cell>
<ss:Data ss:Type="String"><xsl:apply-templates/></ss:Data>
</ss:Cell>
</xsl:template>
<xsl:template name="numberFormat" match="Row/*">
<ss:Cell>
<ss:Data ss:Type="Number"><xsl:apply-templates/></ss:Data>
</ss:Cell>
</xsl:template>
结果:
<ss:Row>
<ss:Cell ss:StyleID="1">
<ss:Data ss:Type="Number">2012001 (Number Header)</ss:Data>
</ss:Cell>
<ss:Cell ss:StyleID="1">
<ss:Data ss:Type="String">String Header</ss:Data>
</ss:Cell>
</ss:Row>
<ss:Row>
<ss:Cell>
<ss:Data ss:Type="Number">Row2Column1Data</ss:Data>
</ss:Cell>
<ss:Cell>
<ss:Data ss:Type="Number">Row2Column2Data</ss:Data>
</ss:Cell>
</ss:Row>
<ss:Row>
<ss:Cell>
<ss:Data ss:Type="Number">Row3Column1Data</ss:Data>
</ss:Cell>
<ss:Cell>
<ss:Data ss:Type="Number">Row3Column2Data</ss:Data>
</ss:Cell>
</ss:Row>
XML:
<Rowsets>
<Rowset>
<Columns>
<Column Description="_2012001"/>
<Column Description="StringHeader"/>
</Columns>
<Row>
<_2012001>Row2Column1Data</_2012001>
<StringHeader>Row2Column2Data</StringHeader>
</Row>
<Row>
<_2012001>Row3Column1Data</_2012001>
<StringHeader>Row3Column2Data</StringHeader>
</Row>
</Rowset>
</Rowsets>
目前,无论哪个模板是最后优先所以在这种情况下,我的“NUMBERFORMAT”模板是最后的ss:type
设为即使我明确地调用模板数...
更新: 所需的输出
//First header cell contains a numeric value -- the cell should have ss:Type="Number"
<ss:Row>
<ss:Cell ss:StyleID="1">
<ss:Data ss:Type="Number">_2012001 (Number Header)</ss:Data>
</ss:Cell>
//Second header cell contains a string value -- the cell should have ss:Type="String"
<ss:Cell ss:StyleID="1">
<ss:Data ss:Type="String">String Header</ss:Data>
</ss:Cell>
</ss:Row>
//ss:Type="Number" for the first column because the header row of that column contains a number
<ss:Row>
<ss:Cell>
<ss:Data ss:Type="Number">Row2Column1Data</ss:Data>
</ss:Cell>
//ss:Type="String" for the second column because the header row of that column is a String
<ss:Cell>
<ss:Data ss:Type="String">Row2Column2Data</ss:Data>
</ss:Cell>
</ss:Row>
<ss:Row>
//ss:Type="Number" for the first column because the header row of that column contains a number
<ss:Cell>
<ss:Data ss:Type="Number">Row3Column1Data</ss:Data>
</ss:Cell>
//ss:Type="String" for the second column because the header row of that column is a String
<ss:Cell>
<ss:Data ss:Type="String">Row3Column2Data</ss:Data>
</ss:Cell>
</ss:Row>
...etc.
请编辑问题和specidy确切的通缉令。然后我会提供一个解决方案。 – 2012-02-16 02:15:55
谢谢!我添加了我想要的输出 – user1130511 2012-02-16 03:48:34