2017-03-22 16 views
0

を追加しますadd_paragraphは()私は次のコードを使用しています改行

所有者:名前

PROB私が手に入れようとしているテキストの前に新しい行が追加されているということです。

+0

あなたは余分な行を取得している場所を明確にできますか?あなたは文書で意味しますか? –

+0

はい、Owner:Nameの行の直前に余分な空行(改行)があります – Omar

答えて

2

問題:

私はあなたが(のpython-docxファイルを使用せずに)手動で作成した既存の文書(つまり空である)に追加しているので、それがあると思います。文書を作成したときのように、add_paragraph()を使用して新しい段落を追加すると、最初の段落を空白のままにして別の段落paragraphs[1]が作成されているため、paragraphs[0]が作成されたようです。

ソリューション:

どちらかあなたの代わりに、新しい段落を作成する[0]の段落にテキストを挿入します:

def header_build(self, boldText, dataText): 

    # paragraph[0] 
    p= self.document.paragraphs[0] 

    p.style = document.styles['Body Text'] 
    p.style.font.size = Pt(12) 
    p.style.font.name = 'Times New Roman' 
    p.add_run(boldText).bold = True 
    p.add_run(dataText) 
    print p.text 

2つのソリューションがあります。

それともあなたのpython-docxファイルを使用して新しい文書を作成し、(機能をheader_buildするために何の変更)paragraphs[0]できなくなりますそのadd_paragraph()を使用することができます。

# create a new document 
document = Document() 
0

Mimxは全く正しいです。 Document()で作成された新しい文書には空白の段落が1つ含まれています。

この動作はWordによって指定されます。新しいWordファイルを開くと、段落マーカーが表示されている(表示されている)場合は、挿入ポイントが単一の段落マーカーの直前に表示されます。これは、文書(w:body要素)に有効な段落が1つ以上含まれていなければならないという点で、Word for ISO/IEC 29500仕様に反映されています。残念ながら、これは新しい文書の最初の段落を後で追加する段落とは違って扱う必要があることを意味します。あなたが任意のコンテンツを追加することなく、この呼び出しの後に保存した場合

from docx import Document 

document = Document() 
document._body.clear_content() 

、.docxのファイルが無効であるとしないことがあります:あなたがしたい場合は、このようにコンテンツの追加を開始する前に

、あなたはその最初の段落を削除することができますまたは「修復」ステップが必要な場合があります。しかし、コンテンツを追加する限り、これはうまく動作し、段落の追加は均一です。すなわち、最初の段落を追加することは、後の段落を追加するのと同じ方法で行われます。

そうしないと、最初の段落を取得し、残りの部分とは別に、それを操作する必要があります。

paragraph = document.paragraphs[0] 
paragraph.text = 'foobar' 
paragraph.style = 'Heading 1' 
etc. 

for text in content_blocks: 
    paragraph = document.add_paragraph() 
    paragraph.text = text 
    paragraph.style = 'Body Text' 
関連する問題