如何使用python-docx实现Word文档中两个表格并排摆放
问题原因
直接插入两个独立表格时,Word默认每个表格独占一个段落块,仅设置左右对齐无法实现并排效果,只会让两个表格上下分布。
可行解决方案
优先推荐无框容器表格法,兼容性最好,排版稳定不会出现错位:
核心思路是先创建一个1行2列的隐藏边框表格作为容器,两个单元格分别存放需要并排的tableA和tableB,外层容器的边框设为不可见,最终呈现效果就是两个表格并排。
完整实现代码如下:
from docx import Document from docx.enum.table import WD_TABLE_ALIGNMENT from docx.shared import Cm document = Document() # 1. 创建1行2列的外层容器表格,设置为无边框样式 container_table = document.add_table(rows=1, cols=2, style='No Border') # 可选:设置容器单元格的内边距,控制两个表格的间距 for cell in container_table.rows[0].cells: cell.width = Cm(7) # 按需调整每个单元格宽度,总宽度不要超过页面可用宽度 # 调整单元格内边距,避免子表格贴边 cell.margin_top = Cm(0.1) cell.margin_bottom = Cm(0.1) cell.margin_left = Cm(0.1) cell.margin_right = Cm(0.1) # 2. 在第一个单元格插入tableA cell_a = container_table.rows[0].cells[0] tableA = cell_a.add_table(rows=3, cols=3) tableA.alignment = WD_TABLE_ALIGNMENT.LEFT # 可选:给tableA加边框,用默认网格样式 tableA.style = 'Table Grid' # 3. 在第二个单元格插入tableB cell_b = container_table.rows[0].cells[1] tableB = cell_b.add_table(rows=3, cols=3) tableB.alignment = WD_TABLE_ALIGNMENT.RIGHT tableB.style = 'Table Grid' document.save('test.docx')
注意事项
- 如果不需要显示子表格的边框,去掉
tableA.style = 'Table Grid'相关代码即可 - 两个单元格的总宽度不要超过页面可编辑区域宽度(默认A4纸左右边距各2.54cm,可用宽度约16cm),否则会自动换行
- 如果需要调整两个表格的间距,修改单元格的
margin_right/margin_left参数即可
内容的提问来源于stack exchange,提问作者Z.Edibo
相关产品推荐
相关产品推荐

