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

How to format and truncate numbers when converting XML to XLS (using XSL)

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

谢谢。

您可以使用 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.###')