0

Excel (xlsx) エクスポート機能を備えた Ext.Net Web アプリケーションがあり、いくつかの列をフォーマットしたいと考えています。すべての列が文字列として表現されるため、A1 C1 H1 は数値として表されます。

here is my xsl-template:
 <xsl:template match="/*">
    <Worksheet>
      <xsl:attribute name="ss:Name">
        <xsl:value-of select="local-name(/*/*)" />
      </xsl:attribute>
      <Table x:FullColumns="1" x:FullRows="1">
        <Row>
          <xsl:for-each select="*[position() = 1]/*">
            <Cell>
              <Data ss:Type="String">
                <xsl:value-of select="local-name()" />
              </Data>
            </Cell>
          </xsl:for-each>
        </Row>
        <xsl:apply-templates/>
      </Table>
    </Worksheet>
  </xsl:template> 
4

1 に答える 1

1

Excel で値を数値としてフォーマットする方法を理解する方法は、Excel 自体に問い合わせることです。または、Excel で空白のワークシートを開き、フィールドに値を入力し、形式は数値として、ワークシートを Xml スプレッドシート 2003 形式で保存します。次に、メモ帳などでファイルを開いて、実際に何が行われたかを確認します。

この場合、おそらく次のように、Excel がStyle要素を追加したことがわかります。

<Style ss:ID="s62">
    <NumberFormat ss:Format="Fixed"/>
</Style>

または多分このように(数値をフォーマットする方法はたくさんあります)

<Style ss:ID="s63">
   <NumberFormat ss:Format="#,##0.00"/>
</Style>

次に、表のセルのスタイルを参照し、データの正しい型を設定するだけです。そのようです

<Row>
   <Cell ss:StyleID="s62"><Data ss:Type="Number">123</Data></Cell>
</Row>
<Row>
   <Cell ss:StyleID="s63"><Data ss:Type="Number">1233</Data></Cell>
</Row>

Style要素は、上記のWorksheet要素の前にある親Stylesに配置する必要があることに注意してください。このようなもの、おそらく...

<xsl:template match="/*">
<Styles>
  <Style ss:ID="Default" ss:Name="Normal">
   <Alignment ss:Vertical="Bottom"/>
   <Borders/>
   <Font ss:FontName="Calibri" x:Family="Swiss" ss:Size="11" ss:Color="#000000"/>
   <Interior/>
   <NumberFormat/>
   <Protection/>
  </Style>
  <Style ss:ID="s62">
   <NumberFormat ss:Format="Fixed"/>
  </Style>
  <Style ss:ID="s63">
   <NumberFormat ss:Format="#,##0.00"/>
  </Style>
</Styles>
<Worksheet>
  <xsl:attribute name="ss:Name">
    <xsl:value-of select="local-name(/*/*)" />
  </xsl:attribute>
  <Table x:FullColumns="1" x:FullRows="1">
    <Row>
      <xsl:for-each select="*[position() = 1]/*">
        <Cell>
          <Data ss:Type="String">
            <xsl:value-of select="local-name()" />
          </Data>
        </Cell>
      </xsl:for-each>
    </Row>
    <xsl:apply-templates/>
  </Table>
</Worksheet>
</xsl:template> 
于 2013-05-24T07:36:03.110 に答える