9

Open XML を使用していますが、Word ファイルのヘッダーのテキストを変更する必要があります。ドキュメント内の特定の段落を変更するには、次のコードを使用しました。

Dim body = wdDoc.MainDocumentPart.Document.Body
            Dim paras = body.Elements(Of DocumentFormat.OpenXml.Wordprocessing.Paragraph)()
            Dim header = body.Elements(Of DocumentFormat.OpenXml.Wordprocessing.Header)()


            For Each para In paras
                For Each run In para.Elements(Of DocumentFormat.OpenXml.Wordprocessing.Run)()
                    For Each testo In run.Elements(Of DocumentFormat.OpenXml.Wordprocessing.Text)()
                        If (testo.Text.Contains("<$doc_description$>")) Then
                            testo.Text = testo.Text.Replace("<$doc_description$>", "replaced-text")
                        End If
                    Next
                Next
            Next

前もって感謝します!

4

3 に答える 3

8

次のコードを使用して、Word 文書のヘッダーのタグを置き換えることができます。

Using wdDoc = WordprocessingDocument.Open("header.docx", True)

  For Each headerPart In wdDoc.MainDocumentPart.HeaderParts
    For Each currentParagraph In headerPart.RootElement.Descendants(Of DocumentFormat.OpenXml.Wordprocessing.Paragraph)()
      For Each currentRun In currentParagraph.Descendants(Of DocumentFormat.OpenXml.Wordprocessing.Run)()
        For Each currentText In currentRun.Descendants(Of DocumentFormat.OpenXml.Wordprocessing.Text)()

          If (currentText.Text.Contains("$doc-description$")) Then
            Console.WriteLine("found")
            currentText.Text = currentText.Text.Replace("$doc-description$", "replaced-text")
          End If

        Next
      Next
    Next
  Next

End Using

まず、すべてHeaderPartsの単語文書を列挙します。Text次に、置換するタグを含むすべての要素を検索します。次に、タグをテキストに置き換えます。

<>および_文字を含まないタグを使用する必要があることに注意してください。タグにこれらの文字が含まれている場合、単語はテキストを複数のText要素に分割します。

テーブル(または他の要素)のテキストを変更したい場合は、すべてのText要素を検索してください:

Using wdDoc = WordprocessingDocument.Open("header.docx", True)

  For Each headerPart In wdDoc.MainDocumentPart.HeaderParts
    For Each currentText In headerPart.RootElement.Descendants(Of DocumentFormat.OpenXml.Wordprocessing.Text)()

      If (currentText.Text.Contains("$doc-description$")) Then
        Console.WriteLine("found")
        currentText.Text = currentText.Text.Replace("$doc-description$", "replaced-text")
      End If

    Next
  Next

End Using
于 2013-09-25T18:03:26.047 に答える
0

返信ありがとうございます実際に機能します:)次のコードも試しました:

    for Each headref In mainDoc.Descendants(Of DocumentFormat.OpenXml.Wordprocessing.HeaderReference)()
    headerRelationshipId = headref.Id.Value
    headerType = headref.Type.Value.ToString()
    Dim header01 As DocumentFormat.OpenXml.Wordprocessing.Header = DirectCast(wdDoc.MainDocumentPart.GetPartById(headerRelationshipId), HeaderPart).Header
    Dim headerText As New StringBuilder()

    For Each text00 As DocumentFormat.OpenXml.Wordprocessing.Text In header01.Descendants(Of DocumentFormat.OpenXml.Wordprocessing.Text)()
        If (text00.Text.Contains("")) その後
            text00.Text = text00.Text.Replace("", "置換テキスト")
        終了条件
    次
次

しかし、(段落ではなく) 表のテキストを変更したい場合はどうすればよいでしょうか?

于 2013-09-26T10:35:23.060 に答える