python-docxでtableを結合する

以下では書類の向きを横向きにして2行2列の表を作成し、2行目を結合してそれぞれに画像を貼り付けています。

from docx import Document
from docx.shared import Cm
from docx.enum.text import WD_ALIGN_PARAGRAPH
from docx.enum.table import WD_TABLE_ALIGNMENT
from docx.enum.section import WD_ORIENT

doc = Document()

section = doc.sections[-1]
new_width, new_height = section.page_height, section.page_width
section.orientation = WD_ORIENT.LANDSCAPE
section.page_width = new_width
section.page_height = new_height

tables = doc.add_table(2, 2)
tables.alignment = WD_TABLE_ALIGNMENT.CENTER

a = tables.cell(1, 0)
b = tables.cell(1, 1)
A = a.merge(b)

p = doc.tables[0].rows[0].cells[0].paragraphs[0]
p.alignment=WD_ALIGN_PARAGRAPH.CENTER
r = p.add_run()
r.add_picture('1.jpg',width=Cm(8.0), height=Cm(6.0))
r.add_break()
r.add_text('風景1')

p = doc.tables[0].rows[0].cells[1].paragraphs[0]
p.alignment=WD_ALIGN_PARAGRAPH.CENTER
r = p.add_run()
r.add_picture('2.jpg',width=Cm(8.0), height=Cm(6.0))
r.add_break()
r.add_text('風景2')

p = doc.tables[0].rows[1].cells[1].paragraphs[0]
p.alignment=WD_ALIGN_PARAGRAPH.CENTER
r = p.add_run()
r.add_picture('3.jpg',width=Cm(8.0), height=Cm(6.0))
r.add_break()
r.add_text('風景3')

doc.add_page_break()

doc.save('test.docx')
結合された表を含むWord文章
結合された表を含むWord文章

結合したセルにアクセスするには、

p = doc.tables[0].rows[1].cells[0].paragraphs[0]

としても良いし、

p = doc.tables[0].rows[1].cells[1].paragraphs[0]

としても良いようです。

また、書類を横向きにするためには

section.orientation = WD_ORIENT.LANDSCAPE

とするだけではダメで、

section.page_width
section.page_height

を書き換えてサイズを変更する必要があります。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA