2017-09-14 22 views
1

python-docxを使用して、テーブルの中央に2行を挿入したいとします。それを行う方法はありますか? similar to inserting pictures approachを使用しようとしましたが、動作しませんでした。python-docxで特定の位置に行を挿入できますか?

もしそうでなければ、どのモジュールがこのタスクに適しているかのヒントをいただきたいと思います。ありがとう。

ここに、画像を挿入するためのアイデアを模倣しようとしました。それは間違っています。 'Run'オブジェクトには属性 'add_row'がありません。

from docx import Document 
doc = Document('your docx file') 
tables = doc.tables 
p = tables[1].rows[4].cells[0].add_paragraph() 
r = p.add_run() 
r.add_row() 
doc.save('test.docx') 
+0

何がうまくいかなかったのかを表示します。 – dotancohen

+0

@dotancohenまあ、 'Run'オブジェクトには属性 'add_row'がありません。私は質問にコードを追加しましたが、明らかに間違った方法です。 – T0f

答えて

0

短い答えはいいえです。APIにはTable.insert_row()メソッドはありません。

考えられる方法は、基礎となるXMLを直接操作する、いわゆる「回避策機能」を記述することです。任意のXML要素(この場合は<w:tbl>、おそらく<w:tr>)は、python-docxプロキシオブジェクトから取得できます。例:

tbl = table._tbl 

これは、XML階層の開始点を示します。ここから新しい要素を作成したり、lxml._Element API呼び出しをコピーして使用して、XMLの正しい位置に配置することができます。

これは高度なアプローチですが、おそらく最も単純なオプションです。私が知る限り、より広範なAPIを提供する他のPythonパッケージはありません。代わりに、WindowsでCOM APIを使用したり、VBA、おそらくIronPythonのものを使用して何かを行うこともできます。それは、Windows OSを実行する小規模(デスクトップではなく、サーバー)でしか機能しません。

python-docx workaround functionpython-pptx workaround functionで検索すると、いくつかの例が見つかります。

+0

詳細な説明をありがとうございました! – T0f

関連する問題