我在Word模板中使用內容控件,並在其中以編程方式添加文本(使用java)。這工作正常。現在我想在文本中的每個新句子中插入一個新行。有沒有辦法配置內容控件,以便它自動執行此操作?在Word中配置內容控件以添加新行
回答
恐怕你不能配置內容控件來自動執行此操作。但是,如果通過Word對象模型填充內容控件,則可以簡單地使用富文本內容控件或純文本內容控件,後者可以選擇「允許回車(多段)」(對象模型中的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」(或任何指示你喜歡),並且你讓你的文件啓用宏。
謝謝,你能告訴我你是如何將VBA代碼添加到內容控制的? – 2015-03-12 12:09:25
我沒有將VBA代碼添加到內容控件,而是僅將文檔添加到測試中。將代碼添加到Content Control是不可能的。如果您確實希望在您的文檔中發生換行而不是Java代碼,則可以爲Document.Open事件編寫處理程序,並處理所有ContentControl以添加換行符。我會更新我的答案,向您展示必要的步驟。 – 2015-03-12 12:15:08
感謝您的幫助,您贏得了賞金! – 2015-03-13 07:37:30
可以使用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
謝謝,我希望配置內容控制本身,而不是使用Java,但如果沒有其他選項將嘗試此操作。 – 2015-03-03 08:41:34
- 1. Word 2010內容控件新行
- 2. Word中的VBA:以編程方式添加具有樣式的內容控件
- 3. 添加內容控件的代碼Word 2007 C#
- 4. Word文檔2010中的內容控件
- 5. 在word中使用office js word api插入內容控件
- 6. 如何使用OpenXML在Word 2007文檔中添加內容控件
- 7. 添加新控件後添加新行
- 8. 添加ASP控件以編程方式添加的內容
- 9. 如何在新行中添加.txt文件中的內容
- 10. 檢索word文檔內的內容控件的位置
- 11. 在Visual Studio中添加一個新配置的配置文件
- 12. VBA MS Word內容控件亂序
- 13. VSTO Word插件:內容控制嵌套
- 14. Word 2007-2013內容控制
- 15. 向內容控件添加表格
- 16. 將內容添加到site.master控件
- 17. 在Gridview行內添加多行內容
- 18. 添加在內容文件夾中的新文件中的NuGet
- 19. 在web配置變換中添加靜態內容
- 20. 以編程方式在.NET中的Word文檔(OpenXML)中填充內容控件
- 21. Docx4j以編程方式添加w:sdt內容控件
- 22. 在Word文檔中使用VBScript選擇內容控件
- 23. 在循環中創建MS Word內容控件
- 24. 在基於標記名的Word中查找內容控件
- 25. Microsoft Word 2012內容控件:多個表格組上的行
- 26. 添加新的控件並調整容器大小以適應
- 27. 如何在用戶控件中添加任意內容
- 28. 在Git中添加文件夾內容
- 29. 在Drupal中添加新內容時添加字段
- 30. 添加動態行到郵件內容
當你說「新行」時,你是指新段落還是軟回報?你是否滿足控制塊級別(即包含段落)或內聯? – JasonPlutext 2015-03-02 22:19:12
內容控件不包含段落。每個句子都應該出現在新的一行中(每句話之後都會有一個硬性的回覆)。 – 2015-03-03 07:51:50