将 XSLT 数字单元格输出修复为 Excel 作为字符串

Fix XSLT Numeric Cell Output to Excel as String

我正在使用 XSLT 模板将 FileMaker 的一些输出转换并格式化为 Excel。它适用于除一列以外的所有列。数据是数字,但必须以 NN.NN 格式的字符串输出。例如,数据字段输入为 04.13,但输出到 Excel 时,显示为 4.13。在某些情况下,用户输入了 04 13(正确输出,因为它不能被解析为数字)但用户已将数据正确输入 filemaker(字段为文本),即 04.13,我需要确保输出数据保持正确的格式。
我尝试了以下方法,但它似乎没有按预期工作 - 输出文件仍将列值显示为数字,即丢失前导零:

<xsl:choose>
    <xsl:when test="$xlFieldName='d_Oracle_Task_Code'">
        <xsl:variable name="OracleTaskCode" select="fmp:DATA" />
        <xsl:value-of select='format-number(OracleTaskCode, "00.00")' />                            
    </xsl:when>
</xsl:choose>

我不担心输入缺少小数点分隔符的情况,只是确保值以文本形式输出。

尝试将变量定义为:

<xsl:variable name="apos">'</xsl:variable>

然后使用:

<xsl:value-of select="concat($apos, format-number(OracleTaskCode, '00.00'))" />

另一个值得尝试的选项是将单元格内容定义为数据类型 string:

<Data ss:Type="String">
    ....
</Data>

恐怕我也没办法测试

我的问题是我检查的顺序。我无法让 XSLT 应用格式或附加撇号,直到​​我将我的 when 块设置为我的选择块中的第一个。

<Style ss:ID="xlTextStyle">
    <NumberFormat ss:Format="@"/>
</Style>
<xsl:choose>
<xsl:when test="$xlFieldName='d_Scheme_Task_Code'">
    <xsl:attribute name="ss:StyleID">xlTextStyle</xsl:attribute>
        <Data>
            <xsl:attribute name="ss:Type">String</xsl:attribute>
            <xsl:value-of select="." />
        </Data>
</xsl:when>
<xsl:when test="$xlFieldType='NUMBER'">
<xsl:choose>
<xsl:when test...

我现在使用文本格式正确设置了列值的格式。