将XML转换为XLS时如何格式化和截断数字(使用XSL)

时间:2018-01-19 17:20:28

标签: xml xslt number-formatting xls

我正在使用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>

谢谢。

1 个答案:

答案 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.###')