Share via


[方法] Open XML API を使用して Office Open XML パッケージからドキュメント パーツのコンテンツを検索して置換する

Office Open XML パッケージの仕様は、コンテンツを含み、単一のパッケージに格納されているすべてのドキュメント パーツのリレーションシップを定義する XML ファイルのセットを定義しています。これらのパッケージは、Microsoft® Office Excel® 2007、Microsoft Office PowerPoint® 2007、および Microsoft Office Word 2007 のドキュメント ファイルを構成するパーツを結合します。Open XML アプリケーション プログラミング インターフェイス (API) を使用して、パッケージを作成したり、パッケージを構成するファイルを操作したりできます。このトピックでは、Office Word 2007 で Office Open XML パッケージ内のドキュメント パーツ (ファイル) のコンテンツを他のコンテンツと置換するためのコードと手順について説明していますが、手順は Office Open XML 形式をサポートする 3 つのどの 2007 Microsoft Office system プログラムでも同じです。

注意

このトピックのコード サンプルは、Microsoft Visual Basic .NET および Microsoft Visual C# で記述されており、Microsoft Visual Studio 2008 で作成されたアドインで使用できます。Visual Studio 2008 でアドインを作成する方法の詳細については、「Open XML 形式 SDK 1.0 を使用して作業を開始する」を参照してください。

パッケージのパーツを別のパーツと置換する

以下のコードでは、正規表現を使用して、WordprocessingDocument パッケージの MainDocumentPart パーツのコンテンツに格納されているテキスト値を検索して置換します。

' How to search and replace content in a document part. 
Public Sub SearchAndReplace(ByVal document As String)
    Dim wordDoc As WordprocessingDocument = WordprocessingDocument.Open(document, true)
    Dim docText As String = Nothing
    Dim sr As StreamReader = New StreamReader(wordDoc.MainDocumentPart.GetStream)
    docText = sr.ReadToEnd
    sr.Close
    Dim regexText As Regex = New Regex("Hello world!")
    docText = regexText.Replace(docText, "Hi Everyone!")
    Dim sw As StreamWriter = New StreamWriter(wordDoc.MainDocumentPart.GetStream(FileMode.Create))
    sw.Write(docText)
    sw.Close
    wordDoc.Save
End Sub
// How to search and replace content in a document part.
public static void SearchAndReplace(string document)
{
    using (WordprocessingDocument wordDoc = WordprocessingDocument.Open(document, true))
    {
        string docText = null;
        using (StreamReader sr = new StreamReader(wordDoc.MainDocumentPart.GetStream()))
        {
            docText = sr.ReadToEnd();
        }

        Regex regexText = new Regex("Hello world!");
        docText = regexText.Replace(docText, "Hi Everyone!");

        using (StreamWriter sw = new StreamWriter(wordDoc.MainDocumentPart.GetStream(FileMode.Create)))
        {
            sw.Write(docText);
        }
    }
}

正規表現を使用して、MainDocumentPart パーツのコンテンツに格納されているテキスト値を検索して置換するには

  1. 最初に、ソース Word 2007 文書のパスと名前およびテーマ コンテンツを含むドキュメント パーツの名前とパスを表すパラメータを渡します。

  2. 次に、文書を WordprocessingDocument オブジェクトとして開きます。

  3. 次に、正規表現を定義して、WordProcessingDocument パッケージの MainDocumentPart パーツに格納されているテキストを検索して置換します。

  4. 最後に、StreamReader オブジェクトと StreamWriter オブジェクトをそれぞれ使用して、元のドキュメント ファイルのコンテンツを読み取り、それを新しいパーツに書き込みます。