Open XML 개체 모델을 사용하여 Office Open XML 패키지에서 파트 컨텐츠를 검색하여 치환하기

[이 글은 프리릴리스 문서로, 출시 후에 변경될 가능성이 있습니다. ]

Office Open XML 패키지의 사양은 컨텐츠를 포함한 단일 패키지에 보관된 모든 파트의 관계를 정의하는 XML 파일집합을 정의합니다. 이러한 패키지는 Microsoft Office Excel 2007, Microsoft Office PowerPoint 2007, 및 Microsoft Office Word 2007 의 문서 파일을 구성하는 파트를 결합니다. Open XML 개체 모델을 사용하여, 패키지를 생성하거나 패키지를 구성하는 파일을 조작할 수 있습니다. 이 토픽에서는 Word 2007에서 Office Open XML 패키지 안의 파트 (파일)의 컨텐츠를 다른 컨텐츠와 치환하기 위한 코드와 순서에 대해서만 설명하지만, Office Open XML 형식을 지원하는 세 가지의 2007 Office system 프로그램에서는 순서가  같습니다.

Note메모 :

이 토픽의 코드 예제는 Visual Basic .NET 및 Visual C# 로 Microsoft Visual Studio 2008 에서 생성된 추가기능으로 사용할 수 있습니다. Studio 2005에서의 추가 기능 생성 순서는 이 시리즈의 「Microsoft SDK for Open XML Formats 을 사용하여 작업 시작하기」에서 설명합니다. 

패키지 파트를 다른 파트와 치환하기

다음 코드에서는 정규 표현을 사용하고, WordprocessingDocument 패키지 안의 MainDocumentPart 파트의 컨텐츠에 보관된 텍스트값을 검색하여 바꿉니다.

' How to: Search and replace content in a 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 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);
        }
    }
}

먼저 소스 Word 2007 문서에의 경로와 그 이름 및 테마 컨텐츠를 포함한 파트의 이름과 경로를 나타내는 매개 변수를 건네줍니다. 그리고, 문서를 WordprocessingDocument 개체로서 엽니다. 그리고, 정규 표현을 정의하고, WordProcessingDocument 패키지의MainDocumentPart 파트에 보관된 텍스트를 검색하여 바꿉니다. 마지막으로, StreamReader 개체와 StreamWriter 개체를 각각 사용하고, 원본 문서 파일의 컨텐츠를 읽고 새로운 파트에 씁니다.