日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

python-docx筆記心得

 閑讀古書(shū) 2019-10-23

最近考試系統(tǒng)項(xiàng)目來(lái)了一個(gè)需求,需要根據(jù)給出的模板,直接在后臺(tái)批量輸出試卷的word docx文檔
于是看了看網(wǎng)上的包 找到了:python-docx
官方文檔那叫一個(gè)難讀啊··(英語(yǔ)廢)
所以把重要的功能總結(jié)一下
安裝:python3 :pip install python-docx

text的font,size,大小,顏色的設(shè)置

先說(shuō)一下這個(gè)api中對(duì)于一個(gè)docx的組織情況
一個(gè)word文檔,分為標(biāo)題heading和paragraph等塊級(jí)元素
paragraph 內(nèi)部根據(jù)不同的文字格式,不同的字體,甚至不同的字體大小,粗體,斜體 劃分為一個(gè)個(gè)的內(nèi)聯(lián)塊(也就是后面說(shuō)的 run
這句話非常重要,這決定了之后想要編輯段落文字的所有格式,每一個(gè)不同格式都要添加一次run
可以說(shuō),不論你想要在docx中添加什么東西,這個(gè)東西都是封裝在 run 這個(gè)最小單位內(nèi)部的,它的格式,必須通過(guò)操作 run 來(lái)改變
舉個(gè)栗子:以下為一個(gè)段落paragraph:

這是一個(gè)run,這是一個(gè)run,這也是一個(gè)run,

這還是一個(gè)run

和我們使用word不同,我們必須先添加一個(gè)run,并且賦給它一小段文字,然后再通過(guò)run的api來(lái)改變它的格式
實(shí)例:我們想要添加一個(gè)段落,并且把這段文字的字體的一部分設(shè)置為宋體 另外一部分設(shè)置為微軟雅黑并且將文字設(shè)置為11磅,黑色

from docx import Document
from docx.enum.text import WD_ALIGN_PARAGRAPH,WD_LINE_SPACING
from docx.shared import Pt
from docx.shared import RGBColor
from docx.shared import Inches
doc = Document()  #生成一個(gè)空的docx對(duì)象
doc.add_heading() #添加標(biāo)題
p = doc.add_paragragh() #添加段落
run=p.add_run('這段文字是宋體,') 
run.font.name = u'宋體'
run._element.rPr.rFonts.set(qn('w:eastAsia'), u'宋體')
run=p.add_run('這段文字是微軟雅黑') 
run._element.rPr.rFonts.set(qn('w:eastAsia'), u'微軟雅黑')
run.font.size = Pt(11) #設(shè)置大小為11磅
run.font.color.rgb = RGBColor(0,0,0)#設(shè)置顏色為黑色
document.save('demo.docx')#保存到demo.docx,默認(rèn)為工程目錄下

效果:


image.png

添加圖片

實(shí)際上,圖片在docx中也被認(rèn)為是一個(gè)run,和一段文字是一樣看待的
所以插入圖片也要先插入一個(gè)run,再設(shè)置run的內(nèi)容為 picture

p = document.add_paragraph()
run = p.add_run()
run.add_picture(img.jpg)

另外,python-docx目前只能支持插入內(nèi)聯(lián)圖片,沒(méi)有辦法插入https://exam-test./media/images/detect/1111111.png
鏈接,關(guān)于內(nèi)聯(lián)圖片,是指的存在本機(jī)的圖片嗎,而不是存在互聯(lián)網(wǎng)上的圖片,有懂得dalao求解答一下——

設(shè)置頁(yè)面段落排版等

和上面不同,頁(yè)面段落的排版,是在塊級(jí)元素上進(jìn)行操作的,
也就是需要對(duì)paragraph,heading等對(duì)象進(jìn)行修改,但是如果牽扯到塊級(jí)元素內(nèi)部文字的大小,顏色等等,則仍然需要add_run(陰魂不散?。?br>上面這段話聽(tīng)不懂沒(méi)關(guān)系,看下例子
如果你想添加一個(gè)字體大小為24磅的標(biāo)題,并且居中
假如你這樣的話

from docx.enum.text import WD_ALIGN_PARAGRAPH,WD_LINE_SPACING
head = document.add_heading('這是標(biāo)題',level=1)#添加一級(jí)標(biāo)題
head.alignment = WD_ALIGN_PARAGRAPH.CENTER#居中

你會(huì)發(fā)現(xiàn),你沒(méi)法把heading的文字"這是標(biāo)題"四個(gè)字變?yōu)?4磅了!因?yàn)槟銢](méi)有在heading里面添加run,如果你希望把它變?yōu)?4磅,你必須這樣:

from docx.enum.text import WD_ALIGN_PARAGRAPH,WD_LINE_SPACING
head = document.add_heading('level=1')#添加一級(jí)標(biāo)題
run = head.add_run('這是標(biāo)題')
run.font.size = Pt(24)
head.alignment = WD_ALIGN_PARAGRAPH.CENTER#居中

總之,是不能把文字直接放在高級(jí)塊中的···不然是沒(méi)有辦法編輯的!

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多