You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何用Python docx库实现表格整体缩进(对齐2cm制表位)

如何用python-docx将表格对齐到2cm制表位?

我懂你现在的困扰:你已经给段落设置了2cm的制表位,文本能正常缩进,但表格就是没法跟着对齐,修改表格样式的段落缩进还会把单元格里的内容也缩进了,完全不是想要的效果。

其实解决方法很简单,直接给表格对象设置left_indent属性就行,不用去改样式里的段落缩进。python-docx的表格对象本身支持这个属性,和你在Word里手动设置「表格属性」里的左缩进是同一个效果。

修改你的脚本,在创建表格之后加上这一行:

table.left_indent = Cm(2)

完整的修改后代码如下:

import docx
from docx.shared import Cm

doc = docx.Document()
style = doc.styles['Normal']
style.paragraph_format.tab_stops.add_tab_stop(Cm(2))

doc.add_paragraph('My header', style='Heading 1')
doc.add_paragraph('\tText is tabbed')

table = doc.add_table(rows=0, cols=2, style="Table Grid")
# 给表格设置整体左缩进2cm
table.left_indent = Cm(2)

for rowy in range(1, 5):
    row_cells = table.add_row().cells
    row_cells[0].text = 'Row {}'.format(rowy)
    row_cells[0].width = Cm(5)
    row_cells[1].text = ''
    row_cells[1].width = Cm(1.2)

doc.save('output.docx')

为什么之前的方法不行?因为你修改Table Grid样式的paragraph_format.left_indent,是把缩进应用到表格内的每一个段落(也就是每个单元格里的文本),而不是整个表格的位置。而直接设置table.left_indent是调整整个表格相对于页面左边距的偏移,这才是你想要的效果。

这样生成的表格就会像你预期的那样,整体左缩进2cm,和文本的制表位对齐啦。

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

火山引擎 最新活动