簡體   English   中英

在Word中配置內容控件以添加新行

[英]Configuring a Content Control in Word to add New Lines

我在Word模板中使用內容控件,在其中以編程方式添加文本(使用Java)。 這很好。 現在,我想在文本中的每個新句子處插入一行。 有沒有一種方法可以配置內容控件,使其自動執行此操作?

恐怕您無法將內容控件配置為自動執行此操作。

但是,如果通過Word對象模型填充內容控件,則可以簡單地使用RTF內容控件或純文本內容控件,后者具有“允許回車(多段)”選項(對象中的MultiLine)模型”),並用包含換行符的文本填充。

為了進行快速測試,我將這樣的純文本內容控件添加到了一個空文檔中,並使用了以下VBA代碼:

Sub FillContentControl()
    ContentControls(1).Range.Text = "Sentence One." & vbNewLine & "Sentence Two."""
End Sub 

在我的示例中,這產生了以下輸出:

Sentence One.
Sententce Two.

當然,您應該在Java代碼中添加換行符。 您只需要檢測句子的結尾即可。

如果,正如您對基於docx4j的解決方案的要求所表明的那樣,您沒有通過Word填寫內容控件,而是直接在docx中填寫內容,那么我想到了另一個涉及VBA宏的解決方法(我通常不建議這樣做):為Document.Open事件添加事件處理程序,以更新文檔中所有已標記的內容控件。 它可能看起來像這樣:

Private Sub Document_Open()
    For Each ContentControl In ThisDocument.ContentControls
        If ContentControl.Tag = "TODO_Add_Linebreaks" Then
            ContentControl.Range.Text = Replace(ContentControl.Range.Text, ". ", "." & vbNewLine)
            ContentControl.Tag = ""
        End If
    Next
End Sub

第二種解決方案要求您添加帶有標簽“ TODO_Add_Linebreaks”(或您喜歡的指示)的內容控件,並使您的文檔啟用宏。

您可以使用w:br元素,如下所示:

<w:p>
  <w:sdt>
    <w:sdtPr>
      <w:id w:val="711844519"/>
    </w:sdtPr>
    <w:sdtContent>
      <w:r>
        <w:t>foo</w:t>
        <w:br/>
        <w:t>bar</w:t>
      </w:r>
    </w:sdtContent>
  </w:sdt>
  <w:r>
</w:p>

有關如何使用docx4j添加其中之一,請參見linebreaks-in-strings

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM