python-docx模块表格部分单元格格式调整

仅修改文字,保留原来的格式

from docx import Document
file = '测试.docx'
document = Document(file)
document.tables[0].cell(0, 2).paragraphs[0].runs[0].text \
    = '仅修改文字,保留原来的格式'

使用以上操作可以将第一个table的第一行第二列的单元格的内容修改为仅修改文字,保留原来的格式,需要注意的是要看看原来有几个run,只有一个的话这种方法就可以,否则的话需要一个个修改。

其他

发现这个模块有个坑,只有add_run的元素才有font属性
所有必须要找到table中含有font属性的那一项,使用调试模式跟进table中发现有paragraphs,于是尝试对paragraphs进行add_run操作,之后对其font.color进行自定义即可。
表格整体居中:table.alignment = WD_TABLE_ALIGNMENT.CENTER
表格整体改颜色:table.style.font.color.rgb = RGBColor(255, 0, 0)

# -*- coding: utf-8 -*-
from docx import Document
from docx.shared import RGBColor
from docx.enum.table import WD_TABLE_ALIGNMENT
document = Document()

records = (
    (3, '101', '人们'),
    (7, '422', 'Eggs'),
    (4, '631', 'Spam, spam, eggs, and spam')
)

table = document.add_table(rows=1, cols=3, style="Table Grid")
table.alignment = WD_TABLE_ALIGNMENT.CENTER  # 表格整体居中
hdr_cells = table.rows[0].cells
hdr_cells[0].text = 'Qty'
hdr_cells[1].text = 'Id'
hdr_cells[2].text = 'Desc'
for qty, id, desc in records:
    row_cells = table.add_row().cells
    row_cells[0].text = str(qty)
    row_cells[1].text = id
    run = row_cells[2].paragraphs[0].add_run(desc)
    if desc == '人们':  # 有选择性地改变部分单元格的颜色
        run.font.color.rgb = RGBColor(255, 0, 0)
document.save('demo.docx')

运行结果:
可以看到表格整体居中

你可能感兴趣的:(python)