1

XSLT を使用して、日付列を含むレポートを生成しています。スプレッドシートの XLSX ファイルで、日付を文字列として渡すと、Excel などのスプレッドシート パッケージで開くと、日付であると見なされますが (これは正しい)、MM/dd/yyyy実際に必要なものがdd/MM/yyyy. これは、これを引き起こしているスプレッドシート パッケージのようですが、XSLT からセルの書式設定を定義できるかどうか疑問に思っていました。

これを行うために使用しているコードは次のとおりです。

<xsl:template match="SomeTemplate">
  <Row>
    ...
    <Cell>
      <xsl:value-of select="ms:format-date(StartTime, 'dd/MM/yyyy')" />
      <xsl:text> </xsl:text>
      <xsl:value-of select="ms:format-time(StartTime, 'HH:mm:ss')" />
    </Cell>
    ...
  </Row>
</xsl:template>

でセルを開始するなど、これを回避する他の方法を試みました'が、奇妙なことに、これは機能しませんでした!

上記の XSLT に関連する XML サンプルを次に示します。

...
<Destination>
  <StartTime>2013-03-07T00:01:09</StartTime>
  <EndTime>2013-03-07T10:41:09</EndTime>
  ...
</Destination>
...
4

1 に答える 1

0

Excel xml のセルの書式設定は、スタイルを介して行うことができます。

つまり、セルに xs:datetime 形式の日付を入力します (例では ms:format-date 変換はまったく必要ありません) が、ss:styleId を使用してセル スタイルを指定します。

<Destination>
  <StartTime>2013-03-07T00:01:09</StartTime>
  <EndTime>2013-03-07T10:41:09</EndTime>
</Destination>

+

<xsl:stylesheet 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:ms="urn:schemas-microsoft-com:xslt"
xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"
xmlns="urn:schemas-microsoft-com:office:spreadsheet"
version="1.0">
<xsl:template match="/">
    <Workbook>
        <Styles>
            <Style ss:ID="style_default">
                <NumberFormat ss:Format="Short Date"/>
            </Style>
            <Style ss:ID="style_ddslashmmslashyy">
                <NumberFormat ss:Format="dd/mm/yy;@"/>
            </Style>
        </Styles>
        <Worksheet ss:Name="Sheet1">
            <Table>
                <xsl:apply-templates/>
            </Table>
        </Worksheet>
    </Workbook>
</xsl:template>
<xsl:template match="Destination">
    <Row>
        <Cell ss:StyleID="style_default">
            <Data ss:Type="DateTime"><xsl:value-of select="StartTime"/></Data>
        </Cell>
        <Cell ss:StyleID="style_ddslashmmslashyy">
            <Data ss:Type="DateTime"><xsl:value-of select="StartTime"/></Data>
        </Cell>
    </Row>
</xsl:template>
</xsl:stylesheet>
于 2013-07-19T21:40:49.740 に答える