Замените текст закладки в файле Word, используя Open XML SDK - PullRequest
19 голосов
/ 22 июля 2010

Полагаю, v2.0 лучше ... у них есть несколько хороших "как: ..." примеров , но закладки, кажется, не действуют так же очевидно, как, например, Таблица ...закладка определяется двумя элементами XML BookmarkStart & BookmarkEnd .У нас есть несколько шаблонов с текстом в виде закладок, и мы просто хотим заменить закладки другим текстом ... странного форматирования не происходит, но как выбрать / заменить текст закладки?

Ответы [ 11 ]

0 голосов
/ 22 июля 2010

Вот как я это делаю в VB.NET:

For Each curBookMark In contractBookMarkStarts

      ''# Get the "Run" immediately following the bookmark and then
      ''# get the Run's "Text" field
      runAfterBookmark = curBookMark.NextSibling(Of Wordprocessing.Run)()
      textInRun = runAfterBookmark.LastChild

      ''# Decode the bookmark to a contract attribute
      lines = DecodeContractDataToContractDocFields(curBookMark.Name, curContract).Split(vbCrLf)

      ''# If there are multiple lines returned then some work needs to be done to create
      ''# the necessary Run/Text fields to hold lines 2 thru n.  If just one line then set the
      ''# Text field to the attribute from the contract
      For ptr = 0 To lines.Count - 1
          line = lines(ptr)
          If ptr = 0 Then
              textInRun.Text = line.Trim()
          Else
              ''# Add a <br> run/text component then add next line
              newRunForLf = New Run(runAfterBookmark.OuterXml)
              newRunForLf.LastChild.Remove()
              newBreak = New Break()
              newRunForLf.Append(newBreak)

              newRunForText = New Run(runAfterBookmark.OuterXml)
              DirectCast(newRunForText.LastChild, Text).Text = line.Trim

              curBookMark.Parent.Append(newRunForLf)
              curBookMark.Parent.Append(newRunForText)
          End If
      Next
Next
...