python-docx笔记心得

最近考试系统项目来了一个需求,需要根据给出的模板,直接在后台批量输出试卷的word docx文档
于是看了看网上的包 找到了:python-docx
官方文档那叫一个难读啊··(英语废)
所以把重要的功能总结一下
安装:python3 :pip install python-docx

text的font,size,大小,颜色的设置

先说一下这个api中对于一个docx的组织情况
一个word文档,分为标题heading和paragraph等块级元素
paragraph 内部根据不同的文字格式,不同的字体,甚至不同的字体大小,粗体,斜体 划分为一个个的内联块(也就是后面说的 run
这句话非常重要,这决定了之后想要编辑段落文字的所有格式,每一个不同格式都要添加一次run
可以说,不论你想要在docx中添加什么东西,这个东西都是封装在 run 这个最小单位内部的,它的格式,必须通过操作 run 来改变
举个栗子:以下为一个段落paragraph:

这是一个run,这是一个run这也是一个run

这还是一个run

和我们使用word不同,我们必须先添加一个run,并且赋给它一小段文字,然后再通过run的api来改变它的格式
实例:我们想要添加一个段落,并且把这段文字的字体的一部分设置为宋体 另外一部分设置为微软雅黑并且将文字设置为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() #添加标题
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) #设置大小为11磅
run.font.color.rgb = RGBColor(0,0,0)#设置颜色为黑色
document.save('demo.docx')#保存到demo.docx,默认为工程目录下

效果:


image.png

添加图片

实际上,图片在docx中也被认为是一个run,和一段文字是一样看待的
所以插入图片也要先插入一个run,再设置run的内容为 picture

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

另外,python-docx目前只能支持插入内联图片,没有办法插入https://exam-test.cecctm.com/media/images/detect/1111111.png
链接,关于内联图片,是指的存在本机的图片吗,而不是存在互联网上的图片,有懂得dalao求解答一下——

设置页面段落排版等

和上面不同,页面段落的排版,是在块级元素上进行操作的,
也就是需要对paragraph,heading等对象进行修改,但是如果牵扯到块级元素内部文字的大小,颜色等等,则仍然需要add_run(阴魂不散啊)
上面这段话听不懂没关系,看下例子
如果你想添加一个字体大小为24磅的标题,并且居中
假如你这样的话

from docx.enum.text import WD_ALIGN_PARAGRAPH,WD_LINE_SPACING
head = document.add_heading('这是标题',level=1)#添加一级标题
head.alignment = WD_ALIGN_PARAGRAPH.CENTER#居中

你会发现,你没法把heading的文字"这是标题"四个字变为24磅了!因为你没有在heading里面添加run,如果你希望把它变为24磅,你必须这样:

from docx.enum.text import WD_ALIGN_PARAGRAPH,WD_LINE_SPACING
head = document.add_heading('level=1')#添加一级标题
run = head.add_run('这是标题')
run.font.size = Pt(24)
head.alignment = WD_ALIGN_PARAGRAPH.CENTER#居中

总之,是不能把文字直接放在高级块中的···不然是没有办法编辑的!

用户下载docx

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

响应为下载

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,911评论 5 460
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 82,014评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 142,129评论 0 320
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,283评论 1 264
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,159评论 4 357
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,161评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,565评论 3 382
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,251评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,531评论 1 292
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,619评论 2 310
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,383评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,255评论 3 313
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,624评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,916评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,199评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,553评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,756评论 2 335

推荐阅读更多精彩内容

  • 转载:https://www.cnblogs.com/rencm/p/6285304.html参考:https:/...
    SkTj阅读 1,725评论 0 1
  • 背景:工作中需要将文件夹下的若干word文件docx转换为对应txt文本格式 因此需要将docx中文本读取出来,然...
    凌烟阁主5221阅读 12,138评论 4 4
  • 更多内容,请访问我的 个人博客。 前言 全网找了一番,用python创建和更新word(.docx)文档,还是 p...
    潘高PG阅读 3,073评论 3 15
  • 1.昨天一早醒来,窗外望去,雾霾消散,心情瞬间明朗,把南瓜切成块,放于电饭煲。然后打开衣柜,夏秋天的衣服需要洗的放...
    拾光小世界阅读 335评论 0 1
  • 大概因为在文字里描绘过海南,所以康轶总感觉是第二次来这里。 为了第三天的品牌发布会,康轶就像被Boss关在了酒店一...
    惊蛰小白阅读 285评论 0 1