python-docx講解styles(樣式)的用法

在用Python對(duì)word進(jìn)行操作的過(guò)程中,增加的一個(gè)段落可以自己設(shè)置該段落的字體大小、顏色、行間距等參數(shù),如下所示:

doc=Document()#創(chuàng)建一個(gè)空白文檔
p=doc.add_paragraph()#給文檔增加一個(gè)段落
p.paragraph_format.space_before=Pt(0)#設(shè)置段落 段前 0 磅
p.paragraph_format.space_after=Pt(0) #設(shè)置段落   段后 0 磅
p.paragraph_format.line_spacing=1.5  #設(shè)置該段落 行間距為 1.5倍
#p.paragraph_format.first_line_indent=Inches(0.5) #段落首行縮進(jìn)為 0.5英寸
p.paragraph_format.first_line_indent=Inches(0.3346457)#相當(dāng)于小四兩個(gè)字符的縮進(jìn)
p.paragraph_format.left_indent=Inches(0)#設(shè)置左縮進(jìn) 1英寸
p.paragraph_format.right_indent=Inches(0)#設(shè)置右縮進(jìn) 0.5 英寸

#給段落增加一段文字
r=p.add_run("違反接收到了附近雙龍奪鳳塑料袋積分上島咖啡山東礦機(jī)發(fā)雙龍奪鳳"\
            +"水電費(fèi)水電費(fèi)水電費(fèi)電飯鍋電飯鍋?zhàn)尨蟾绱缶V很多個(gè)人盯人電飯鍋"\
            +"如果電飯鍋電飯鍋?zhàn)尨蟾绲姆阑缶V而二哥電飯鍋仍大綱二個(gè)電飯鍋"\
            +"爾特人二柔荑花任天野兒童問(wèn)題5人員柔荑花土樣任天野兒童兒童而已")
r.font.name=u'宋體'    #設(shè)置為宋體
r._element.rPr.rFonts.set(qn('w:eastAsia'), u'宋體')#設(shè)置為宋體,和上邊的一起使用
r.font.size=Pt(12)  #設(shè)置字體大小為12磅 相當(dāng)于 小四
r.font.color.rgb=RGBColor(0,0,0)#設(shè)置顏色為黑色

此種方法雖然可以完成對(duì)段落樣式的設(shè)置,但是沒(méi)增加一個(gè)段落都要重新設(shè)置樣式,因此可以設(shè)置一個(gè)統(tǒng)一的樣式,各個(gè)段落都可以采用,也可以設(shè)置統(tǒng)一的標(biāo)題,各個(gè)標(biāo)題都可以采用,具體代碼如下所示:代碼中 "Normal"表示正文的樣式,["Heading 2"]表示2級(jí)標(biāo)題的樣式,當(dāng)然一級(jí)標(biāo)題的樣式關(guān)鍵字為["Heading 1"]

import docx
from docx import Document   #用來(lái)建立一個(gè)word對(duì)象
from docx.shared import Pt  #用來(lái)設(shè)置字體的大小
from docx.shared import Inches
from docx.oxml.ns import qn  #設(shè)置字體
from docx.shared import RGBColor  #設(shè)置字體的顏色
from docx.enum.text import WD_ALIGN_PARAGRAPH  #設(shè)置對(duì)其方式

#創(chuàng)建一個(gè)空白的word文檔
doc=Document()
doc.styles["Normal"].font.name=u"宋體"  #設(shè)置全局字體
doc.styles["Normal"]._element.rPr.rFonts.set(qn('w:eastAsia'), u'宋體')
doc.styles["Normal"].font.color.rgb=RGBColor(255,0,0)#設(shè)置正文全局顏色為紅色
doc.styles["Normal"].font.size=Pt(29)#設(shè)置正文全局大小為29
doc.styles["Heading 2"].font.size=Pt(29)#設(shè)置全局2級(jí)標(biāo)題的字體大小為29

p=doc.add_paragraph()
r=p.add_run("違反接收")#這個(gè)段落使用的是Normal的樣式

para_heading=doc.add_heading('',level=2)#返回1級(jí)標(biāo)題段落對(duì)象,標(biāo)題也相當(dāng)于一個(gè)段落
run=para_heading.add_run(u"前言")#這個(gè)使用的是"Heading 2" 的樣式

doc.save("特殊字體.docx")
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容