python-docx筆記心得

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

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

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

這是一個run,這是一個run枫笛,這也是一個run吨灭,

這還是一個run

和我們使用word不同,我們必須先添加一個run刑巧,并且賦給它一小段文字喧兄,然后再通過run的api來改變它的格式
實例:我們想要添加一個段落,并且把這段文字的字體的一部分設(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()  #生成一個空的docx對象
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

添加圖片

實際上特幔,圖片在docx中也被認(rèn)為是一個run咨演,和一段文字是一樣看待的
所以插入圖片也要先插入一個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)圖片薄风,沒有辦法插入https://exam-test.cecctm.com/media/images/detect/1111111.png
鏈接,關(guān)于內(nèi)聯(lián)圖片拍嵌,是指的存在本機的圖片嗎遭赂,而不是存在互聯(lián)網(wǎng)上的圖片,有懂得dalao求解答一下——

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

和上面不同横辆,頁面段落的排版撇他,是在塊級元素上進行操作的,
也就是需要對paragraph,heading等對象進行修改困肩,但是如果牽扯到塊級元素內(nèi)部文字的大小划纽,顏色等等,則仍然需要add_run(陰魂不散靶炕)
上面這段話聽不懂沒關(guān)系勇劣,看下例子
如果你想添加一個字體大小為24磅的標(biāo)題,并且居中
假如你這樣的話

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

你會發(fā)現(xiàn)比默,你沒法把heading的文字"這是標(biāo)題"四個字變?yōu)?4磅了!因為你沒有在heading里面添加run盆犁,如果你希望把它變?yōu)?4磅命咐,你必須這樣:

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

總之,是不能把文字直接放在高級塊中的···不然是沒有辦法編輯的谐岁!

用戶下載docx

output = '/main/media/paper_docx.docx'
resp = make_response(send_file(output))

響應(yīng)為下載

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末醋奠,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子翰铡,更是在濱河造成了極大的恐慌钝域,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,858評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件锭魔,死亡現(xiàn)場離奇詭異例证,居然都是意外死亡,警方通過查閱死者的電腦和手機迷捧,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,372評論 3 395
  • 文/潘曉璐 我一進店門织咧,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人漠秋,你說我怎么就攤上這事笙蒙。” “怎么了庆锦?”我有些...
    開封第一講書人閱讀 165,282評論 0 356
  • 文/不壞的土叔 我叫張陵捅位,是天一觀的道長。 經(jīng)常有香客問我搂抒,道長艇搀,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,842評論 1 295
  • 正文 為了忘掉前任求晶,我火速辦了婚禮焰雕,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘芳杏。我一直安慰自己矩屁,他們只是感情好辟宗,可當(dāng)我...
    茶點故事閱讀 67,857評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著吝秕,像睡著了一般泊脐。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上烁峭,一...
    開封第一講書人閱讀 51,679評論 1 305
  • 那天晨抡,我揣著相機與錄音,去河邊找鬼则剃。 笑死,一個胖子當(dāng)著我的面吹牛如捅,可吹牛的內(nèi)容都是我干的棍现。 我是一名探鬼主播,決...
    沈念sama閱讀 40,406評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼镜遣,長吁一口氣:“原來是場噩夢啊……” “哼己肮!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起悲关,我...
    開封第一講書人閱讀 39,311評論 0 276
  • 序言:老撾萬榮一對情侶失蹤谎僻,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后寓辱,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體艘绍,經(jīng)...
    沈念sama閱讀 45,767評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年秫筏,在試婚紗的時候發(fā)現(xiàn)自己被綠了诱鞠。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,090評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡这敬,死狀恐怖航夺,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情崔涂,我是刑警寧澤阳掐,帶...
    沈念sama閱讀 35,785評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站冷蚂,受9級特大地震影響缭保,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜帝雇,卻給世界環(huán)境...
    茶點故事閱讀 41,420評論 3 331
  • 文/蒙蒙 一涮俄、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧尸闸,春花似錦彻亲、人聲如沸孕锄。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,988評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽畸肆。三九已至,卻和暖如春宙址,著一層夾襖步出監(jiān)牢的瞬間轴脐,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,101評論 1 271
  • 我被黑心中介騙來泰國打工抡砂, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留大咱,地道東北人。 一個月前我還...
    沈念sama閱讀 48,298評論 3 372
  • 正文 我出身青樓注益,卻偏偏與公主長得像碴巾,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子丑搔,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,033評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 轉(zhuǎn)載:https://www.cnblogs.com/rencm/p/6285304.html參考:https:/...
    SkTj閱讀 1,759評論 0 1
  • 背景:工作中需要將文件夾下的若干word文件docx轉(zhuǎn)換為對應(yīng)txt文本格式 因此需要將docx中文本讀取出來厦瓢,然...
    凌煙閣主5221閱讀 12,282評論 4 4
  • 更多內(nèi)容,請訪問我的 個人博客啤月。 前言 全網(wǎng)找了一番煮仇,用python創(chuàng)建和更新word(.docx)文檔,還是 p...
    潘高PG閱讀 3,096評論 3 15
  • 1.昨天一早醒來谎仲,窗外望去浙垫,霧霾消散,心情瞬間明朗强重,把南瓜切成塊绞呈,放于電飯煲。然后打開衣柜间景,夏秋天的衣服需要洗的放...
    拾光小世界閱讀 344評論 0 1
  • 大概因為在文字里描繪過海南佃声,所以康軼總感覺是第二次來這里。 為了第三天的品牌發(fā)布會倘要,康軼就像被Boss關(guān)在了酒店一...
    驚蟄小白閱讀 295評論 0 1