1

1 つの Excel テンプレート (クライアントから提供されたもの) からデータを取得し、それを独自の内部 Excel テンプレートに変換したいと考えています。

私は基本的に、クライアントの Excel テンプレートからフィールド名を呼び出す変換 (XSLT) を作成し、何らかのマッピング プロセスを通じて、自分のテンプレートの対応するフィールドに値をインポートできるようにしたいと考えています。

これを行う方法はありますか?たとえば、クライアントには次の列がある場合があります。名、姓、住所、電話番号

ただし、私のテンプレートには名字の電話番号しかない場合があります

クライアントの Excel テンプレートの 3 つの対応するフィールドから値を自動的に取得するだけの変換が必要です。

これは可能ですか?もしそうなら、私はどのようなプロセスフローを見ていますか?

注: Excel テンプレートとは、フィールドとセル値を含む適切にフォーマットされた Excel ファイルを意味します。

4

1 に答える 1

1

はい、私が見ているプロセスは次のとおりです。

1) Excel スプレッドシートから XML データとスキーマ ファイルを作成します。このリファレンスを参照してください。

2) XML スキーマをクライアントの Excel スプレッドシートにインポートします。このリファレンスを参照してください。

3) クライアントの Excel スプレッドシートも XML データ ファイルにエクスポートします。

4) 基本的に、両方のドキュメントに対して変換を一気に実行します。

<xsl:stylesheet
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  xmlns:exsl="http://exslt.org/common">

  <xsl:variable name="mine"   select="document(/path/to/your.xml)"/>
  <xsl:variable name="client" select="document(/path/to/client.xml)"/>

  <xsl:variable name="both">
    <both>
      <xsl:copy-of select="exsl:node-set($mine)/>
      <xsl:copy-of select="exsl:node-set($client)/>
    </both>
  </xsl:variable>

  <xsl:template match="exsl:node-set($both)/whatever>
    <xsl:apply-templates/>
  </xsl:template>

  <!-- More templates here to do what you will with all the data,
       whether it be copying, sorting first, or etc. -->
</xsl:stylesheet>

5) 結果を Excel ドキュメントにインポートします。

それはかなりむき出しであり、私はしばらくこれを行っていないため、それ以降、Excel のバージョン バンプ全体でいくつかの特定の手順が変更されている可能性があります。XSLT は非破壊的 (入力ソース ドキュメントを変更せず、新しい結果ドキュメントを出力するだけ) であるため、最後のステップは変換の外で実行する必要があります。

また、XSLT 拡張関数 exsl:node-set() を使用します。使用しているツール (IE など) によっては、MSXSL 拡張バージョンに切り替える必要がある場合があります。

xmlns:msxsl="urn:schemas-microsoft-com:xslt"

msxsl:node-set()

それぞれ。

于 2012-08-14T23:24:15.190 に答える