我正在使用XSL将XML转换为Excel XLS。 如何将数字格式化为3十进制,并截断? 因此,如果XML中的数字是101.746789,我希望Excel中的数字为101.746。
当我使用下面的XSL时,Excel中的数字变为101.747。
<td style='mso-number-format:"\#\,\#\#0\.000";'>
<xsl:apply-templates select="Price"/>
</td>
谢谢。
答案 0 :(得分:0)
您可以使用substring-before()
计算需要保留的数量,然后使用substring()
进行实际截断...
<xsl:variable name="length"
select="string-length(substring-before(normalize-space(Price),'.'))+4"/>
<td style="mso-number-format: '\#\,\#\#0\.000';">
<xsl:value-of select="substring(normalize-space(Price),1,$length)"/>
</td>
你应该得到类似的东西:
<td style="mso-number-format: '\#\,\#\#0\.000';">101.746</td>
如果您想使用XSLT进行实际格式化,可以使用format-number()
...
format-number(substring(normalize-space(Price),1,$length),',##0.###')