2017-09-14 58 views
1

我想使用python-docx在表格中間插入幾行。有什麼辦法可以做到嗎?我試過使用similar to inserting pictures approach,但它不起作用。可能使用python-docx插入特定位置的行?

如果不是,我會很感激任何提示哪個模塊更適合這項任務。謝謝。

這裏是我嘗試模仿插入圖片的想法。這是不對的。 '運行'對象沒有屬性'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

顯示什麼沒有工作的_code_。 – dotancohen

+0

@dotancohen好的結果'運行'對象沒有屬性'add_row'。我在代碼中添加了代碼,但這顯然是錯誤的。 – T0f

回答

0

簡短的回答是沒有。API中沒有Table.insert_row()方法。

一種可能的方法是編寫一個所謂的「解決方法函數」,它直接操作底層的XML。您可以獲取任何給定的XML元素(例如<w:tbl>在這種情況下或者可能<w:tr>)從它的python-docx代理對象。例如:

tbl = table._tbl 

這給你一個XML層次結構的起點。從那裏,您可以從頭創建一個新元素,或通過複製並使用API​​調用將它放在XML中的正確位置。

這是一種先進的方法,但可能是最簡單的選擇。據我所知,沒有其他的Python軟件包可以提供更廣泛的API。另一種方法是在Windows中用COM API或VBA中的任何東西(可能是IronPython)來做一些事情。這隻適用於運行Windows操作系統的小規模(臺式機,而不是服務器)。

python-docx workaround functionpython-pptx workaround function上搜索會找到一些例子。

+0

非常感謝您的詳細解釋! – T0f