使用python-docx跨越表中的多个列的单元格

时间:2013-03-28 17:30:02

标签: python openxml python-docx

我正在尝试使用python-docx模块创建一个看起来像这样的表。

Example of the table I want to create

使用示例代码在example-makedocument.py中创建表并阅读docx.py中的代码,我认为类似的东西可以工作:

tbl_rows = [ ['A1'], 
       ['B1', 'B2' ],
       ['C1', 'C2' ] ]
tbl_colw = [ [100],
       [25, 75],
       [25, 75] ]
tbl_cwunit = 'pct'

body.append(table(tbl_rows, colw=tbl_colw, cwunit=tbl_cwunit))

然而,这会破坏docx文档,当Word恢复文档时,表格显示如下:

Actual table created

如何使用python-docx获得正确跨越多列的行?

1 个答案:

答案 0 :(得分:4)

我将一个merge_cells()函数添加到python-docx的行类中,它可以合并单行上的任何单元格。我希望它能包含在python-docx中。在此期间,您可以从my github "merge_cells_feature" python-docx branch获取它。

我正在复制我在the pull request上写的示例,以供参考:

from docx import Document

doc = Document()
table = doc.add_table(6,6)
header_row = table.rows[0]
header_row.merge_cells()

# args can also be passed to merge_cells(mergeStart, mergeStop) in order to 
# implement any kind of merge on the same row, such as:
table.rows[1].merge_cells(0,3)  # This will merge the cells indexed from 0 to 2.