bg_color = OxmlElement('w:shd') bg_color.set(qn('w:fill'), 'FF0000') bg_color.set(qn('w:val'), 'clear') style._element.append(bg_color)设置背景色无效
时间: 2023-12-30 19:05:04 浏览: 206
对于 `python-docx` 中的表格,设置背景色可以使用 `TableStyle` 对象,示例代码如下:
```python
from docx import Document
from docx.shared import RGBColor
from docx.oxml.ns import qn
from docx.oxml import OxmlElement
from docx.enum.table import WD_TABLE_ALIGNMENT
from docx.enum.text import WD_ALIGN_PARAGRAPH
document = Document()
table = document.add_table(rows=3, cols=3)
# 设置表格样式
style = table.style
style.font.size = 12
style.font.name = '微软雅黑'
style.paragraph_format.alignment = WD_ALIGN_PARAGRAPH.CENTER
style.alignment = WD_TABLE_ALIGNMENT.CENTER
# 设置表格背景色
bg_color = OxmlElement('w:shd')
bg_color.set(qn('w:fill'), 'FF0000')
bg_color.set(qn('w:val'), 'clear')
style.element.rPr.append(bg_color)
# 设置单元格内容
for i in range(3):
for j in range(3):
cell = table.cell(i, j)
cell.text = f'({i}, {j})'
# 保存文档
document.save('table.docx')
```
在上述代码中,我们使用 `OxmlElement` 创建了一个 `w:shd` 元素,并设置了其属性 `w:fill` 为 `'FF0000'`,表示背景色为红色。然后将该元素添加到表格样式对象的 `element.rPr` 中,即可设置表格的背景色。
请注意,设置表格背景色时,必须使用 `TableStyle` 对象的 `element.rPr` 属性,而不能使用 `TableStyle` 对象的 `_element` 属性。此外,如果在设置表格背景色时,单元格中已经有数据,需要将单元格的原有数据清空,否则设置背景色不会生效。
阅读全文