1

Visual Studio 2010 (C#) で OpenXML SDK 2.0 を使い始めたばかりです。COM オートメーションを使用する前にオフィス プログラムを自動化していましたが、これは苦痛でした。

レポートの土台となるテンプレートをグラフィック デザイナーが作成しました。単純なもの (プレーンテキスト アイテム) を自動化するために、コンテンツ コントロールをテンプレートに追加し、カスタム XML 部分をドキュメントにバインドしました。コンテンツ コントロールは次のとおりです。

  • デイカウント
  • 代替役職
  • 日にち
  • 署名名

テンプレートのコピーを作成した後、コンテンツ コントロールを編集し、次のコードを使用してファイルを保存します。

//stand up object that reads the Word doc package
using (WordprocessingDocument doc = WordprocessingDocument.Open(docOutputPath, true))
  {
    //create XML string matching custom XML part
    string newXml = "<root>" +
                    "<DayCount>42</DayCount>" +
                    "<AlternateJobTitle>Supervisor</AlternateJobTitle>" +
                    "<Date>9/24/2012</Date>" +
                    "<SignatureName>John Doe</SignatureName>" +
                    "</root>";

    MainDocumentPart main = doc.MainDocumentPart;
    main.DeleteParts<CustomXmlPart>(main.CustomXmlParts);

    //add and write new XML part
    CustomXmlPart customXml = main.AddCustomXmlPart(CustomXmlPartType.CustomXml);
    using (StreamWriter ts = new StreamWriter(customXml.GetStream()))
    {

       ts.Write(newXml);
    }
}

これはすべてうまくいきます。ただし、私のドキュメントは、標準テキストとプレーンテキストの更新のみで構成されているわけではありません。レポートの本質は、各レポートに追加する必要がある多数のテーブルにあります。私はこれがどのように行われるかについての良い説明を狂ったように探していましたが、実際には何も見つかりませんでした. プレーンテキスト コントロールに使用されるのと同じコンテンツ コントロール ロジックを使用して、テーブルを配置する場所を示す方法はありますか? 私が見つけた、OpenXML を使用してテーブルを作成するコード サンプルは、メイン ドキュメント パーツの末尾にテーブルを追加することを想定しているだけです。テンプレートでテーブルを配置する必要がある場所を指定し、テーブルを生成して、テンプレートの指定された領域に配置したいと思います。これは可能ですか?

どんな助けでも大歓迎です。

4

2 に答える 2

0

OpenXml の作成に関する質問はたくさんあります。しかし、この方法を取ることに決めた場合 (答えは一般的です)、OpenXml Productivity Toolを検討してください。私の PC では、「C:\Program Files (x86)\Open XML SDK\V2.0\tool\OpenXmlSdkTool.exe」にあります。OpenXml で作成したい MsWord 文書を作成し、このツールを使用して文書のコードを反映するだけです。幸運を!

于 2012-11-20T16:30:38.827 に答える
0

表形式のデータを表示する必要がある場合、これまでのところ、http: //worddocgenerator.codeplex.com/ にある Word Document Generator が最適です。

于 2013-01-07T21:57:22.737 に答える