You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用python-docx创建不等列宽表格失败,求正确实现方法

解决python-docx表格行内列宽不一致的问题

你当前的代码无法实现需求,核心原因是python-docx中表格的列宽度是全局统一的,单个单元格设置宽度会被列的全局设置覆盖,且同一列的所有单元格宽度必须相同。要实现第一行两列(3cm、12cm),第二行两列(7.5cm、7.5cm)的表格,需要通过单元格合并来实现,具体步骤如下:

实现代码

from docx import Document
from docx.shared import Cm

doc = Document()

# 创建2行10列的表格(每列宽度1.5cm,总宽度15cm,匹配两种行的总宽度)
table = doc.add_table(rows=2, cols=10)
table.style = 'Table Grid'
table.autofit = False  # 关闭自动调整,确保自定义宽度生效

# 设置每列基础宽度为1.5cm
for col in table.columns:
    col.width = Cm(1.5)

# 第一行:合并前2列(2*1.5=3cm),合并后8列(8*1.5=12cm)
table.cell(0, 0).merge(table.cell(0, 1))
table.cell(0, 2).merge(table.cell(0, 9))

# 第二行:合并前5列(5*1.5=7.5cm),合并后5列(5*1.5=7.5cm)
table.cell(1, 0).merge(table.cell(1, 4))
table.cell(1, 5).merge(table.cell(1, 9))

# 测试内容(可选)
table.cell(0, 0).text = "3cm"
table.cell(0, 2).text = "12cm"
table.cell(1, 0).text = "7.5cm"
table.cell(1, 5).text = "7.5cm"

doc.save("custom_table.docx")

关键说明

  • 必须关闭autofit:Word默认会自动调整列宽,设置table.autofit = False才能让自定义宽度生效。
  • 基础列拆分逻辑:用总宽度的公约数拆分列数(15cm的公约数选1.5cm,对应10列),再通过合并单元格实现不同行的列宽比例。
  • 总宽度统一:确保两种行的列宽总和一致(3+12=15、7.5+7.5=15),避免表格宽度混乱。

内容的提问来源于stack exchange,提问作者leo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 00:05:15