如何使用xslt在Excel中的单元格中插入任何/空文本?

时间:2011-03-21 11:55:24

标签: xml excel xslt null

我正在通过xslt创建一个Excel xml工作簿。其中一个日期字段通常为NULL,在这种情况下我不需要在单元格中插入任何内容。目前即使我没有指定任何值,-146087正被输入到单元格中。然后,当单元格为日期格式时,它将显示为哈希值。

我可以在

之间放什么
<xsl:otherwise></xsl:otherswise>

标签?

这是xslt ......

<Cell>
  <Data ss:Type="DateTime">
    <xsl:choose>
      <xsl:when test="substring(EOI_StartDate, 0, 11)">
        <xsl:value-of select="substring(EOI_StartDate, 0, 11)"/>
      </xsl:when>
      <xsl:otherwise>

      </xsl:otherwise>
    </xsl:choose>
  </Data>
  <NamedCell ss:Name="_FilterDatabase"/>
</Cell>

1 个答案:

答案 0 :(得分:1)

从你的问题看来,你想要制作:

<Data/>

在条件未满足的情况下。

最简单的方法是不使用<xsl:choose>,而是使用更简单的<xsl:if>

<Data ss:Type="DateTime">
  <xsl:if test="substring(EOI_StartDate, 0, 11)">
    <xsl:value-of select="substring(EOI_StartDate, 0, 11)"/>
  </xsl:if>
</Data>

或者,如果您想在不满足条件时完全省略<Data>元素,则:

<xsl:if test="substring(EOI_StartDate, 0, 11)">
  <Data ss:Type="DateTime">
    <xsl:value-of select="substring(EOI_StartDate, 0, 11)"/>
  </Data>
</xsl:if>

最后,如果<Data>元素必须保留在那里,但如果不满足条件,则不希望将其视为日期,请执行以下操作:

<xsl:choose>
  <xsl:when test="substring(EOI_StartDate, 0, 11)">
    <Data ss:Type="DateTime">
            <xsl:value-of select="substring(EOI_StartDate, 0, 11)"/>
    </Data>
  </xsl:when>
  <xsl:otherwise>
    <Data ss:Type="String"> </Data>
  </xsl:otherwise>
</xsl:choose>