Python Docx是一個相當不錯的庫,用於爲不直接處理所有COM內容的東西生成Microsoft Word文檔 - 但是,我遇到了一些限制。有沒有人有任何想法如何將一個文本字符串中回車?我想要一個段落有多行而沒有額外的空間。但是,寫出一個字符串與通常的'\ n'分隔的行不起作用。也不使用&#10或&#13。還有其他想法,還是這個框架對於類似的東西來說太有限了?Python Docx回車
6
A
回答
6
我不確定這是否可能。它看起來好像Word實際上是在處理輸入鍵的按下(我把這個操作當作一種程序化的等同於「\ r \ n」和「\ n」的操作)來創建一個新的段落。
如果我在Word中錄製一個宏,包括:
- 鍵入文字 「一」
- 按enter鍵
我得到的VBA:
Selection.TypeText Text:="One"
Selection.TypeParagraph
如果我創建一個看起來像這樣一個Word文檔(按壓每個字後面輸入):
One
Two
Three
該文件的身體看起來像這樣在documents.xml
文件:
<w:body>
<w:p w:rsidR="00BE37B0" w:rsidRDefault="00CF2350">
<w:r>
<w:t>One</w:t>
</w:r>
</w:p>
<w:p w:rsidR="00CF2350" w:rsidRDefault="00CF2350">
<w:r>
<w:t>Two</w:t>
</w:r>
</w:p>
<w:p w:rsidR="00CF2350" w:rsidRDefault="00CF2350">
<w:r>
<w:t>Three</w:t>
</w:r>
</w:p>
<w:sectPr w:rsidR="00CF2350" w:rsidSect="001077CC">
<w:pgSz w:w="11906" w:h="16838"/>
<w:pgMar w:top="1440" w:right="1440" w:bottom="1440" w:left="1440" w:header="708" w:footer="708" w:gutter="0"/>
<w:cols w:space="708"/>
<w:docGrid w:linePitch="360"/>
</w:sectPr>
</w:body>
從MSDN我們可以看到<w:p>
元素代表了一個段落。
我認爲解決這將是按照Python Docx的例子:
body.append(paragraph("Hi."))
body.append(paragraph("My name is Alice."))
body.append(paragraph("Let's code"))
或者:
for paragraph_text in "Hi. \nMy name is Alice.\n Let's code".split("\n"):
body.append(paragraph(paragraph_text.strip()))
編輯:
展望這一些更多,如果你在Word中按Shift + Enter它通過追加Chr(11)
添加手動換行符(不是段落)。在Open XML中,這轉換爲Break。
望着docx.py
文件的Python DOCX的,這樣的事情可能是要走的路(免責聲明:未測試):
for text in "Hi. \nMy name is Alice.\n Let's code".split("\n"):
run = makeelement('r')
run.append(makeelement('t', tagtext=text))
run.append(makeelement('br'))
body.append(run)
0
由於v0.7.2的,蟒蛇,DOCX轉換 '\ n'和'\ r'字符組成<w:br/>
元素,它提供了您描述的行爲。它還將'\ t'字符轉換爲<w:tab/>
元素。
此行爲是可提供的字符串:
Document.add_paragraph()
Paragraph.add_run()
,並分配給字符串:
Paragraph.text
Run.text
2
您可以在運行時使用python-docx通過調用add_break()
來實現回車。例如:
doc = Document()
p = doc.add_paragraph()
run = p.add_run()
run.add_break()
相關問題
- 1. 使用python保存回docx xml文件
- 2. Python 2.7回車倒計時
- 3. Python回車和線程
- 4. Python回車不起作用
- 5. 頁碼python-docx
- 6. 使用python-docx修改docx頁邊距
- 7. python -docx從word docx中提取表格
- 8. DocuSign Connect - 已上傳DOCX,已退回DOCX
- 9. python-docx:'package not found'
- 10. docx到python列表
- 11. 原始Python字符串中的回車
- 12. Python file.write創建額外的回車
- 13. 回車
- 14. 回車
- 15. Word文檔到python-docx
- 16. 無法安裝python-docx
- 17. 試圖使用python的docx
- 18. 在python中解析.docx 3
- 19. python-docx - 刪除第一段
- 20. 安裝python-docx時出錯
- 21. 導入python-docx時出錯?
- 22. 將標題放入Python - docx
- 23. 用python讀取docx文件
- 24. 方向改變python-docx
- 25. Python-docx樣式格式
- 26. Python Docx Lib - 打開Word
- 27. python-docx添加水平線
- 28. Asp.net Webservice返回docx文件
- 29. 的Python:彩車
- 30. 用Python使用docx模塊檢查.docx格式的複選框
你如何創建的段落分析看起來正確,但body.append(段)不似乎是一個解決方案。這只是重現了上面用「一個」,「兩個」和「三個」段落展示的問題。我想要的是以某種方式擺脫段落之間的額外空間,可能通過某種方式使段落元素識別單個換行符。 – user1427661
@ user1427661請參閱我的編輯。 –