1 つの行と 2 つの列 (つまり、2 つのセル) を含む 1 つのテーブルを含む単純な Word 文書があります。最初のセルの背景色は赤で、もう 1 つのセルは黒です。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')
上記のコードは、最初のセルを白に変更し、2 番目のセルを黒のままにします。の前に以下のコードを追加して、2 番目のセルを変更しようとしていますdoc.save
。
cell2 = table.cell(0,1)
testchild2 = cell2._tc.getchildren()[0]
testchild2.append(shading_elm)
問題は、最初のセルがまだ赤で、2 番目のセルが白になっていることです。最後のセルのみを変更しているようです。
私は間違いなく何かが欠けていますが、私は xml の専門家ではありません。誰にもアイデアはありますか?