2017-01-27 101 views
0

私はPythonとPandasでたくさんのコードを作りました。しかし、今では、単語の文書にテーブルの束を入れなければなりません。理想的には、Mergefieldsの束をテーブルに書いて、Pandasによって追い出されたcsvと単語をマージしたいと思います。PythonでMS WordにWordの差し込みフィールドを書き込む

私はpython-docxを使い始めましたが、私が間違っていない限り、マージフィールドの作成についてはドキュメントには何もありません。このような何かが蜂の膝のようになります。

document = Document() 

document.add_heading('Does this merge thing work', 0) 

table = document.add_table(rows=1, cols=3) 
hdr_cells = table.rows[0].cells 
hdr_cells[0].text = 'Qty' 
hdr_cells[1].text = 'Id' 
hdr_cells[2].text = 'Desc' 
row_cells = table.add_row().cells 
row_cells[0].text = "MERGEFIELD yo " #doesn't work, just string. 
row_cells[1].MERGEFIELD = "Funky" #MERGEFIELD not a table object 
row_cells[2].mailMerge = "Nice"  #This type of thing would be dreamy 

私もwin32com精通んだけど、私はどこにマージフィールドを書くのドキュメントを見つけることができません。ただでさえ文書にMERGEFIELDSの大きなリストを書くことが大きな助けになり

Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:= _ 
    "MERGEFIELD obviosulyyournotagolfer", PreserveFormatting:=True 

:MERGEFIELDを挿入するとき、私は言葉でマクロを記録してきたし、VBAは次のようになります。どんな入力も高く評価されます。

私もdocx-mailmergeで遊んでいましたが、私が言うことは、既存のマージフィールドにデータをマージすることしかできないからです。ご協力いただきありがとうございます!

+0

ここで少し混乱しています。プレースホルダを持つテンプレート文書(フィールドをマージ)があり、csvデータにマージする必要がありますか?プレースホルダをオンザフライで構築し、それをcsvデータにバインドしますか?またはMS WordのテーブルにCSVデータを入力しようとしていますか? – Parfait

+0

あまりにも明確ではないことを申し訳ありません。私はその場でプレースホルダを作成し、それをcsvデータにバインドしたいと考えています。基本的にテンプレートを作成します。最終結果はcsvデータのMS Wordテーブルになりますが、レコードが多いので、従来の方法ではmsテーブルにデータを書き込むことはできません。 –

+0

これは[XY問題](http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem)のように感じます。差し込み印刷Wordテーブルは、あなたが尋ねていない最初の問題の試行された解決策です。あなたはこのCSVデータの最終目標は何ですか?レポートを入力しますか?ドキュメントを送信しますか?それにもかかわらず、セル範囲をコピーしてWordとして表として貼り付けることができるように、Excelをメディアとして使用します。 – Parfait

答えて

0

python-docx-templateのようなものをお探しですか? Microsoft Word文書用のjinja2のようなテンプレートを作成することができます。これには、テーブルやその他の自動入力フィールドの作成が含まれます。

{%tr for a in alerts %} 
{{ a.date }} {% cellbg a.bg %}{{ a.type }} {{r a.desc }} 
{%tr endfor %} 

Word文書に表示される場合があります何かそれ:また、ここでは一例です、あなたが望む方法をフォーマットし、ドキュメントのスタイルを可能にするとヘクタール

githubにそのようなテーブルの例があります。

関連する問題