2016-06-28 34 views
1

のは、私は、たとえば、特定のテキストの書式と私のdocx文書の特定の段落を持っているとしましょう:「 Fooのバー」
は私がしたい
このパラグラフのテンプレートのようなものを、同じ文書に複数回コピーするようにしてください。
例のようにテキストをコピーすると、テキストの書式設定が失われることを意味します。
コピーし、同じ文書に段落(のpython 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テンプレートをアップロードするとき(私はテンプレートが何であるか知る必要はない)、その結果、データベースからの情報(名前、姓など)。 1つのドキュメントを入力するだけですばらしいことができますが、私はクエリーセットの解決策を探しています:)ありがとうございました! – Insolence357

+0

私は例を見る必要があります。あなたが何をどこに置くべきか、そして「テンプレート」文書が遵守する必要がある制限を知っているかのように、あなたが言及していない多くの事柄があります。テキストの中に '{{name}}'のような置換文字列を入れて置き換えたり、一般的なドキュメントテンプレートを探している場合は、別の(そして非常に挑戦的な)問題を話しています。これについては、 'python-docx template substitution'で検索するともっとわかります。 – scanny

+0

それはまさに私が話していることです、アドバイスありがとう - 私はそれを探してみます。しかし、これまでのところ問題は置き換えているわけではなく、正規表現は簡単な置換えには効果的です。クエリセット内の複数のオブジェクトに対してコンテンツを掛けることができません。 – Insolence357

関連する問題