将 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...
我现在使用文本格式正确设置了列值的格式。
我正在使用 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...
我现在使用文本格式正确设置了列值的格式。