通过Python-docx.oxml直接操作XML来设置单元格的背景颜色:
from docx import Document
from docx.oxml import OxmlElement
from docx.oxml.ns import qn
# 打开现有的Word文档
doc = Document(r"D:\word_test\1.docx")
# 遍历文档中的所有表格
for table in doc.tables:
# 加个判断,表格行数大于1
if len(table.rows)>1:
# 遍历表格中的所有行
for i, row in enumerate(table.rows):
# 检查是否是第一行
if i == 0:
# 设置第一行单元格的背景色为蓝色
for cell in row.cells:
# 获取单元格的XML元素
tc = cell._tc
tcPr = tc.get_or_add_tcPr()
# 设置单元格背景颜色为蓝色
shd = OxmlElement('w:shd')
shd.set(qn('w:val'), 'pct100') # 设置填充类型为100%填充
shd.set(qn('w:fill'), '0000FF') # 设置填充颜色为蓝色(RGB)
# 移除现有的shd元素(如果有的话)
existing_shds = tcPr.xpath('.//w:shd')
for existing_shd in existing_shds:
tcPr.remove(existing_shd)
# 添加新的背景色元素到单元格属性中
tcPr.append(shd)
# 如果不是第一行,则不改变背景色(可以添加其他逻辑如果需要)
# 保存修改后的文档到新的文件
doc.save(r"D:\word_test\1_modified.docx")