2016-06-28 105 views
1

比方說,我有我的某些文本格式DOCX文檔中的某些段落,例如:
「富酒吧
我想使其像本段的模板一樣將其複製到同一文檔中多次。
複製示例中的文本意味着丟失文本格式。
複製一個段落到同一文件(蟒蛇3.x中,DOCX)

 
from docx import Document 

document = Document('input.docx') 
template = document.paragraphs[0] 
for x in range(100): 
    document.add_paragraph(template.text) 
document.save('output.docx')

是否有任何通用的方法來做到這一點與python-docx庫?
特別感謝python和django的其他解決方案!
在此先感謝。

+0

你的問題有點太抽象,不能提供有用的答案。一般來說,你需要進入下一級(在段落內部運行),因爲這是字符格式化的地方。如果你能讓你的特定目標更具體一點,那麼可能會有更好的答案。我將在這些附帶條件下采取一些措施。 – scanny

回答

0

在您簡單的例子,你可以做這樣的事情:

def clone_run_props(tmpl_run, this_run): 
    this_run.bold = tmpl_run.bold 
    ... maybe other possible run properties ... 

template_paragraph = ... however you get this ... 
new_paragraph = document.add_paragraph() 
for run in template_paragraph: 
    cloned_run = new_paragraph.add_run() 
    clone_run_props(run, cloned_run) 
    cloned_run.text = ... however you get this ... 

這種方法將工作時的字符格式是直接應用,而不是在它的間接應用,例如通過字符樣式。

+0

我正在尋找一個更通用的解決方案,當用戶上傳docx模板時(我甚至不必知道它是什麼模板),並因此接收到一定數量的填充了不同模板的文檔來自數據庫的信息(如姓名,姓氏等)。填寫單個文檔的工作非常快,但我正在尋找queryset的解決方案:)感謝您的迴應! – Insolence357

+0

我需要看一個例子。有很多你沒有提到的細節,比如你如何知道在哪裏放置什麼以及「模板」文檔需要遵守哪些限制。如果您正在尋找一般的文檔模板,比如在文本中放置替代字符串(如{{name}},然後進行替換,那麼您正在討論一個不同的(並且頗具挑戰性的)問題。您可以通過搜索'python-docx模板替換'來找到更多信息。 – scanny

+0

這正是我所說的,謝謝你的建議 - 我會盡力去尋找它。但到目前爲止,問題不在於替換,正則表達式對於簡單替換非常有用,我只是無法將查詢集中多個對象的內容相乘。 – Insolence357