Open XML SDK 2.0 を使用して Word 2010 ドキュメントからスタイルを抽出する
概要: ドキュメントを Word に読み込むことなく、Open XML SDK 2.0 の厳密に型指定されたクラスを使用して、Microsoft Word ドキュメントの styles パーツまたは stylesWithEffects パーツを含む XDocument インスタンスを取得します。
適用対象: Excel 2010 | Office 2010 | Office client | Open XML | PowerPoint 2010 | VBA | Word 2010
公開: 2011 年 2 月
提供元: Ken Getz、MCW Technologies, LLC (英語)
![]() Open XML ファイル形式を使用すると、Microsoft Word ドキュメントからコンテンツのブロックを取得できますが、そのためには若干の作業が必要です。Open XML SDK 2.0 で追加される厳密に型指定されたクラスを使用すると、Open XML ファイル形式へのアクセスが簡単になります。SDK を使用すると、たとえばドキュメントの styles または stylesWithEffects パーツを含む XDocument インスタンスを簡単に取得できるようになります。XML コンテンツを利用すれば、情報をアーカイブしたり、変更および再適用したり、新しいドキュメントに適用したりできます。この Visual How To に含まれるコード サンプルでは、SDK を使用して styles または stylesWithEffects パーツを取得する方法を示します。新しいドキュメントへのスタイルの適用は、このコード サンプルには含まれません。 ![]() この Visual How To で提供されているサンプルには、Word 2007 または Word 2010 ドキュメントの styles または stylesWithEffects パーツを含む XDocument インスタンスを取得するために必要なコードが含まれます。以下のセクションでは、このコードについて詳しく説明します。Word 2007 で作成されるドキュメントには、styles パーツが 1 つだけ存在します。Word 2010 では第 2 の stylesWithEffects パーツが追加されます。Word 2010 から Word 2007 またはその逆のドキュメントの引き継ぎに対応するため、Word 2010 では元のスタイル パーツと新しいスタイル パーツの両方が保持されています。Open XML の仕様では、Microsoft Word は認識できないパーツを無視する必要があります。Word 2007 は、Word 2010 がドキュメントに追加する stylesWithEffects パーツを認識しません。styles または stylesWithEffects パーツの取得結果は、アプリケーションで解釈する必要があります。 参照のセットアップ Open XML SDK 2.0 のコードを使用するには、プロジェクトにいくつかの参照を追加する必要があります。サンプル プロジェクトには既にこれらの参照が含まれていますが、独自のコードでは次のアセンブリを明示的に参照する必要があります。
また、次の using/Imports ステートメントをコード ファイルの先頭に追加する必要があります。
プロシージャの確認 WDExtractStyles プロシージャは 2 つのパラメーターを受け取ります。第 1 のパラメーターには、変更するファイルへのパスを示す文字列が含まれます。第 2 のパラメーターは、styles パーツと新しい stylesWithEffects パーツのどちらを取得するのかを示します (基本的に、Word 2010 ドキュメントの場合は、このプロシージャを 2 回呼び出して、それぞれのパーツを取得する必要があります)。このプロシージャは、要求された完全な styles または stylesWithEffects パーツが格納されている XDocument インスタンスと、ドキュメントのすべてのスタイル情報を返します (または、要求されたパーツが存在しない場合は null 参照)。
このプロシージャは、指定されたドキュメントを調べて、指定された styles または stylesWithEffects パーツを検索します。パーツが存在する場合、プロシージャはそれを XDocument インスタンスとして返します。プロシージャを呼び出すには、コード例で示されているようにパラメーター値を渡します。サンプル コードを実行する前に、デモ用にサンプルで変更されるスタイルをいくつか含む C:\temp\StylesFrom.docx という名前のドキュメントを用意しておく必要があります。
ドキュメントへのアクセス コードでは、最初に、プロシージャが終了する前に返す styles という名前の変数を作成します。
次に、WordprocessingDocument.Open メソッドを使用し、読み取り専用アクセスを指定して (最後の false パラメーター)、ドキュメントを開きます。ドキュメントを開いたら、MainDocumentPart プロパティを使用してメイン ドキュメントに移動し、styles パーツの参照を保持するために stylesPart という名前の変数を準備します。
適切なスタイル パーツの検索 次に、setStylesWithEffectsPart Boolean パラメーターを使用して、要求されたスタイル パーツの参照を取得します。この値を基にして、コードは docPart 変数の特定のプロパティを取得し、stylesPart 変数にそれを格納します。
パーツの内容の取得 要求されたスタイル パーツが存在する場合は、パーツのすべての内容を XDocument インスタンスで返す必要があります。各パーツで提供されている GetStream メソッドは、Stream を返します。コードでは、Stream インスタンスを XmlNodeReader.Create メソッドに渡してから、XDocument.Load メソッドを呼び出し、XmlNodeReader をパラメーターとして渡します。この一連の手順は、XDocuments と Open XML パーツを使用するときに共通のものです。よく目にするはずです。
サンプル プロシージャ 次のコード例には、完全なサンプル プロシージャが含まれています。
![]() この Visual How To に含まれるサンプルでは、Word ドキュメントから styles パーツまたは stylesWithEffects パーツを取得するコードが示されています。サンプルを使用するには、「関連情報」のリンクから入手できる Open XML SDK 2.0 をインストールする必要があります。また、このサンプルでは、Open XML SDK 2.0 に対するコード スニペットのセットの一部として含まれるコードの変更バージョンを使用します。「関連情報」セクションにはスニペット全体のリンクも含まれますが、スニペットをダウンロードしてインストールしなくてもサンプルを使用できます。 サンプルでは、ドキュメントの構造を変更するときに使用できる Open XML SDK 2.0 で提供されているプロパティとメソッドのうちの一部のみが紹介されています。詳細については、Open XML SDK 2.0 生産性ツールに付属するドキュメントを参照してください。アプリケーション ウィンドウの左下隅の [Open XML SDK Documentation] タブをクリックし、目的のクラスを検索します。どのドキュメントにもコード例は含まれませんが、ここで示したサンプルとドキュメントを使用すれば、サンプル アプリケーションを問題なく変更できるはずです。 |
![]() ビデオを見る (英語) | 所要時間: 00:07:52 ![]() 著者について Ken Getz 氏は、MCW Technologies のシニア コンサルタント。『ASP.NET Developers Jumpstart』(Addison-Wesley 刊、2002 年)、『Access Developer's Handbook』(Sybex 刊、2001 年)、および『VBA Developer's Handbook, 2nd Edition』(Sybex 刊、2001 年) の共著者でもあります。 |