0

私は、.Net フレームワークの XslCompiledTransform クラスを XSLT プロセッサ (つまり、Xslt 1.0) として使用しています。

私の要件は、XSLT 1.0 と .Net [4.0] を使用して、XML ファイルを Excel ファイル (xls ファイル) に変換したいということです。

簡単にするために、これは単なるテスト コードであるため、Xsl ファイルに単純なハード コーディングを検討しているだけです。

具体的には、私の2つの質問は次のとおりです。

  1. たくさんのことを試しましたが、名前を付けようとしている「wAbc」という名前の Excel シートのワークシートが表示されません。ワークシート名がファイル名として表示されます。追加のワークシートも生成されません。以下は私のXSLファイルです
  2. また、これはテスト コードであるため、HTML タグを使用しない限り、別の行に出力されたデータを確認できません。私が見ているのは:AbcNext line代わりに

    Abc ネクストライン

それで、私は何を間違っていますか?お時間とご協力いただきありがとうございます。

ファイル応答のコンテンツ タイプを次のように設定しました。

application/vnd.ms-excel

テスト用の Xsl ファイルは次のとおりです。

<?xml version="1.0"?>
    <xsl:stylesheet version="1.0"
        xmlns="urn:schemas-microsoft-com:office:spreadsheet"
        xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
        xmlns:msxsl="urn:schemas-microsoft-com:xslt"
        xmlns:o="urn:schemas-microsoft-com:office:office"
        xmlns:x="urn:schemas-microsoft-com:office:excel"
        xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" 
    xmlns:html="http://www.w3.org/TR/REC-html40">


      <xsl:template match="/">
        <xsl:processing-instruction name="mso-application">progid='Excel.Sheet'</xsl:processing-instruction>
        <Workbook>
            <Worksheet ss:Name="wAbc">
              <Table ss:ExpandedColumnCount="2" x:FullColumns="1" x:FullRows="1" ss:DefaultRowHeight="15">
                <Column ss:AutoFitWidth="20" ss:AutoWidth="65"></Column>
                <Row>
                  <Cell>
                    <Data ss:Type="String">Abc</Data>
                  </Cell>
                </Row>
                <Row>
                  <Cell>
                    <Data ss:Type="String">Next line</Data>
                  </Cell>
                </Row>
              </Table>
              <WorksheetOptions xmlns="urn:schemas-microsoft-com:office:excel">
                <PageSetup>
                  <Header x:Margin="0.3"/>
                  <Footer x:Margin="0.3"/>
                  <PageMargins x:Bottom="0.75" x:Left="0.7" x:Right="0.7" x:Top="0.75"/>
                </PageSetup>
              </WorksheetOptions>
            </Worksheet>
        </Workbook>
      </xsl:template>
    </xsl:stylesheet>
4

2 に答える 2

1

ここでは形式として Excel XML を使用しています (したがって、厳密にはバイナリである XLS ファイルではありません)。

いずれにしても、現在出力している Excel XML には 2 つの問題があります。まず、Column要素のss:AutoFitWidth属性を 1 (または 0) に設定する必要があると思います。20 は有効な値ではないと思います。

可能な値のリストについては、http://msdn.microsoft.com/en-us/library/aa140066 (v=office.10).aspx を参照してください。

さらに、(これについて 100% 確信があるわけではありませんが) ss:ExpandedColumnCountと同様にTable要素にss :ExpandedRowCountを設定する必要があるかもしれません。

これらのいずれかまたは両方を変更すると、エラーが修正されるかどうかを確認してください。

于 2012-04-26T10:07:04.783 に答える
0

ExcelXLSファイルはMicrosoft独自のバイナリ形式を使用しています。XSLTでそれを生成する方法はありません。

(比較的)新しいXSLX形式は、一緒にZIPで圧縮されたXMLファイルのセットであるため、原則として、XSLTを使用してこれらのファイルを生成し、次にそれらをZIPして最終ファイルを生成できますが、それでもそれほど簡単ではありません。これらのファイルを表示するには、ファイルのZIPを解除するだけXSLXです。

より単純な形式(CSVまたは中間XML)を生成してから、Excelにインポートすることをお勧めします。

于 2012-04-26T07:16:15.447 に答える