在python-docx中设置段落字体

时间:2015-01-11 06:49:19

标签: python python-docx

我使用的是python-docx 0.7.6。

我似乎无法弄清楚如何为某个段落设置字体系列和大小。

.style属性但style="Times New Roman"无效。

有人能指点我一个例子吗?

感谢。

5 个答案:

答案 0 :(得分:16)

这是将Normal样式设置为字体Arial和尺寸10pt的方法。

from docx.shared import Pt

style = document.styles['Normal']
font = style.font
font.name = 'Arial'
font.size = Pt(10)

这是如何将其应用于paragraph

paragraph.style = document.styles['Normal']

使用当前版本的python-docx(0.8.5)。

答案 1 :(得分:6)

阅读API documentation后,我能够弄清楚如何创建自己的风格并应用它。您可以通过更改此代码以使用WD_STYLE_TYPE.PARAGRAPH以相同的方式创建段落样式对象。花了我一分钟才弄明白的东西是对象以及它们应用的级别,所以只要确保你清楚地理解它。我发现反直觉的东西是你在创建后定义样式属性。

这是我创建角色等级样式对象的方式。

document = Document(path to word document)

#创建一个字符级样式Object(“CommentsStyle”),然后定义其参数

obj_styles = document.styles
obj_charstyle = obj_styles.add_style('CommentsStyle', WD_STYLE_TYPE.CHARACTER)
obj_font = obj_charstyle.font
obj_font.size = Pt(10)
obj_font.name = 'Times New Roman'

这就是我将风格应用于跑步的方式。

paragraph.add_run(any string variable, style = 'CommentsStyle').bold = True

答案 2 :(得分:0)

python-docx的文档在这里: http://python-docx.readthedocs.org/en/latest/

此处列出了默认模板中可用的样式: http://python-docx.readthedocs.org/en/latest/user/styles.html

在上面的示例中,您使用了字体名称(" Times New Roman")而不是样式ID。如果您使用" Heading1"例如,这会改变字体的外观,因为它是段落样式。

目前没有用于直接将字体名称或字体大小应用于python-docx中的文本的API,尽管在下一个版本中可能会在一个月内发布。在此期间,您可以为所需的段落和字符设置定义样式并应用这些样式。使用样式是在Word中应用格式的推荐方法,类似于CSS是如何将格式应用于HTML的推荐方式。

答案 3 :(得分:0)

最新版本的python-docx

中添加了对运行样式的支持

答案 4 :(得分:0)

使用此代码会对您有很大帮助。

import docx
from docx.shared import Pt
from docx.enum.style import WD_STYLE_TYPE

doc = docx.Document()

parag = doc.add_paragraph("Hello!")

font_styles = doc.styles
font_charstyle = font_styles.add_style('CommentsStyle', WD_STYLE_TYPE.CHARACTER)
font_object = font_charstyle.font
font_object.size = Pt(20)
font_object.name = 'Times New Roman'

parag.add_run("this word document, was created using Times New Roman", style='CommentsStyle').bold = True
parag.add_run("Python", style='CommentsStyle').italic = True
doc.save("test.docx")