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')