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 を使用してテーブルを作成するコード サンプルは、メイン ドキュメント パーツの末尾にテーブルを追加することを想定しているだけです。テンプレートでテーブルを配置する必要がある場所を指定し、テーブルを生成して、テンプレートの指定された領域に配置したいと思います。これは可能ですか?
どんな助けでも大歓迎です。