我有一个简单的 word 文档,其中包含一个包含一行和两列(换句话说,两个单元格)的表格。第一个单元格的背景颜色是红色,另一个是黑色。我想使用 python-docx 将两者都更改为白色。
我尝试了几种方法,但似乎最有希望的一种方法如下。它修改底层的xml。
import docx
from docx.oxml.ns import nsdecls
from docx.oxml import parse_xml
# Set a cell background (shading) color to RGB D9D9D9.
shading_elm = parse_xml(r'<w:shd {} w:fill="FFFFFF"/>'.format(nsdecls('w')))
doc = docx.Document('assets/tabletest.docx')
table = doc.tables[0]
cell = table.cell(0,0)
testchild = cell._tc.getchildren()[0]
testchild.append(shading_elm)
doc.save('assets/tabletest2.docx')
上面的代码将第一个单元格修改为白色,并将第二个单元格保留为黑色。我尝试通过在以下代码之前添加以下代码来修改第二个单元格doc.save
:
cell2 = table.cell(0,1)
testchild2 = cell2._tc.getchildren()[0]
testchild2.append(shading_elm)
问题是现在,第一个单元格仍然是红色的,而第二个单元格现在是白色的。它似乎只是在修改最后一个单元格。
我肯定遗漏了一些东西,但我不是 xml 专家。有人有想法吗?