我有一个带有Excel(xlsx)导出功能的Ext.Net Web应用程序,并希望格式化一些列,例如。 A1 C1 H1作为数字,因为所有列都被重新表示为字符串。
here is my xsl-template:
<xsl:template match="/*">
<Worksheet>
<xsl:attribute name="ss:Name">
<xsl:value-of select="local-name(/*/*)" />
</xsl:attribute>
<Table x:FullColumns="1" x:FullRows="1">
<Row>
<xsl:for-each select="*[position() = 1]/*">
<Cell>
<Data ss:Type="String">
<xsl:value-of select="local-name()" />
</Data>
</Cell>
</xsl:for-each>
</Row>
<xsl:apply-templates/>
</Table>
</Worksheet>
</xsl:template>
答案 0 :(得分:0)
计算如何在Excel中将值格式化为数字的方法是询问Excel本身!或者更确切地说,在Excel中打开一个空白工作表,在字段中输入一个值,格式为数字,然后以Xml Spreadsheet 2003格式保存工作表。然后在记事本或类似文件中打开该文件,以查看实际执行的操作。
在这种情况下,您可能会看到Excel添加了样式元素,可能是这样的
<Style ss:ID="s62">
<NumberFormat ss:Format="Fixed"/>
</Style>
或者可能是这样(有很多方法可以格式化数字)
<Style ss:ID="s63">
<NumberFormat ss:Format="#,##0.00"/>
</Style>
然后,只是引用表格单元格上的样式,以及为数据设置正确的类型。像这样
<Row>
<Cell ss:StyleID="s62"><Data ss:Type="Number">123</Data></Cell>
</Row>
<Row>
<Cell ss:StyleID="s63"><Data ss:Type="Number">1233</Data></Cell>
</Row>
请记住,样式元素必须放在上面的工作表元素之前的父样式中。这样的事,也许......
<xsl:template match="/*">
<Styles>
<Style ss:ID="Default" ss:Name="Normal">
<Alignment ss:Vertical="Bottom"/>
<Borders/>
<Font ss:FontName="Calibri" x:Family="Swiss" ss:Size="11" ss:Color="#000000"/>
<Interior/>
<NumberFormat/>
<Protection/>
</Style>
<Style ss:ID="s62">
<NumberFormat ss:Format="Fixed"/>
</Style>
<Style ss:ID="s63">
<NumberFormat ss:Format="#,##0.00"/>
</Style>
</Styles>
<Worksheet>
<xsl:attribute name="ss:Name">
<xsl:value-of select="local-name(/*/*)" />
</xsl:attribute>
<Table x:FullColumns="1" x:FullRows="1">
<Row>
<xsl:for-each select="*[position() = 1]/*">
<Cell>
<Data ss:Type="String">
<xsl:value-of select="local-name()" />
</Data>
</Cell>
</xsl:for-each>
</Row>
<xsl:apply-templates/>
</Table>
</Worksheet>
</xsl:template>