Docx - 替换元素并设置字体样式?
Docx - Replace element and set font-style?
我想替换此 docx 文件中的一些段落文本:
使用此代码通常可以正常工作:
from docx import Document
from docx.shared import Pt
file = "template.docx"
doc = Document(file)
for idxPara, elemPara in enumerate(doc.paragraphs):
if "«Kunde»" in elemPara.text:
doc.paragraphs[idxPara].text = "Anderer Text für Kunde"
doc.save('TEST.docx')
输出现在看起来像这样:
(一切正常,但我想更改字体样式)
所以我尝试了这个代码:
from docx import Document
from docx.shared import Pt
file = "template.docx"
doc = Document(file)
style = doc.styles['Normal']
font = style.font
font.name = 'Corbel'
font.size = Pt(10)
for idxPara, elemPara in enumerate(doc.paragraphs):
if "«Kunde»" in elemPara.text:
doc.paragraphs[idxPara].style = doc.styles['Normal']
doc.paragraphs[idxPara].text = "Anderer Text für Kunde"
doc.save('TEST.docx')
但不幸的是,这种风格现在似乎可以使用 - 但该段中的文本出于某种原因位于另一个位置
如何更改段落并设置该段落的样式?
我想我找到了一个解决方案 - 迭代段落中的运行,似乎在替换后样式保持不变:
from docx import Document
for idxPara, elemPara in enumerate(doc.paragraphs):
for run in elemPara.runs:
if "«Kunde»" in run.text:
run.text = "Anderer Text"
我想替换此 docx 文件中的一些段落文本:
使用此代码通常可以正常工作:
from docx import Document
from docx.shared import Pt
file = "template.docx"
doc = Document(file)
for idxPara, elemPara in enumerate(doc.paragraphs):
if "«Kunde»" in elemPara.text:
doc.paragraphs[idxPara].text = "Anderer Text für Kunde"
doc.save('TEST.docx')
输出现在看起来像这样: (一切正常,但我想更改字体样式)
所以我尝试了这个代码:
from docx import Document
from docx.shared import Pt
file = "template.docx"
doc = Document(file)
style = doc.styles['Normal']
font = style.font
font.name = 'Corbel'
font.size = Pt(10)
for idxPara, elemPara in enumerate(doc.paragraphs):
if "«Kunde»" in elemPara.text:
doc.paragraphs[idxPara].style = doc.styles['Normal']
doc.paragraphs[idxPara].text = "Anderer Text für Kunde"
doc.save('TEST.docx')
但不幸的是,这种风格现在似乎可以使用 - 但该段中的文本出于某种原因位于另一个位置
如何更改段落并设置该段落的样式?
我想我找到了一个解决方案 - 迭代段落中的运行,似乎在替换后样式保持不变:
from docx import Document
for idxPara, elemPara in enumerate(doc.paragraphs):
for run in elemPara.runs:
if "«Kunde»" in run.text:
run.text = "Anderer Text"