python-docx - 使用 python-docx,当我更改表格单元格中的字体属性时,整个文档都会获取该属性
问题描述
我有一个有两列的表。我想在第 0 列中添加下划线,并在第 1 列中保持正常。
但是,如果我将第 0 列的单元格中的样式更改为.style.font.underline = True
,则整个文档都会加下划线。
现在,如果另外我将第 1 列的单元格中的样式更改为.style.font.underline = False
,第 0 列中的下划线就会消失。
这是一个例子:
import docx
from docx import Document
from docx.text.paragraph import Paragraph
doc = Document()
doc.add_paragraph('Before table')
table = doc.add_table(rows=0, cols=2)
row_cells = table.add_row().cells
row_cells[0].text = "Dog"
row_cells[0].paragraphs[0].style.font.underline = True
row_cells[1].text = "Grey"
# row_cells[1].paragraphs[0].style.font.underline = False
row_cells = table.add_row().cells
row_cells[0].text = "Cat"
row_cells[0].paragraphs[0].style.font.underline = True
row_cells[1].text = "Black"
# row_cells[1].paragraphs[0].style.font.underline = False
doc.add_paragraph('After table')
doc.save(r"table_test.docx")
运行此示例以查看整个文档如何加下划线。
现在取消注释被注释的行,再次运行,你会看到下划线到处都消失了,包括第 0 列。
解决方案
这是因为您正在更改样式的字体,并且该样式(可能是“正常”)应用于表格中的所有段落。
通常,字体特征应用于Run
级别。例如,这就是为什么您可以在句子中间使用粗体字的原因。
row_cells = table.add_row().cells
cell = row_cells[0]
# ---each newly-added cell contains a single empty paragraph---
paragraph = cell.paragraphs[0]
run = paragraph.add_run("Dog")
run.underline = True
推荐阅读
- kubernetes - 获取唯一命名空间的 Pod
- git - Windows 密码已更改,不再能够使用 Git。控制面板中没有凭据管理器
- node.js - 使用nodejs / selenium按时间顺序输出Webelements列表?
- python - 为什么我不需要导入支持模块?
- sql - 为什么我不能在 SQL Server 存储过程中使用 LIMIT 和 OFFSET
- git - 在不换行的情况下添加 git commit 消息
- node.js - 我无法使用 plesk 启动我的 NextJS js 应用程序
- python - While循环和条件
- javascript - 使用 Simplebar 自定义 Select2 下拉菜单的滚动条?
- javascript - 在 React Hooks 中,当 render 时直接调用 setState 时,是否保证 re-render 运行在 children 的 render 之前?