「小Mi的MindSpore学习」python在手,word不愁

时隔好久,这不小Mi的python办公系列又更新啦!这次我们学习如何用python处理word文件!

1. 安装库

说实话,库的安装其实相比excel来说真的就再简单不过啦,这次小Mi全程就只更新安装了一个库,代码如下:

pip install python-docx

欧凯,那么这部分就已经完成啦!(是不是超简单)

2. 简单炫技

这个时候小Mi很执拗,并不想走寻常路,只想用python编写一个word文件怎么办!小Mi告诉你,依旧很简单!

代码参考如下:

from docx import Document   # 导入相关库

from docx.shared import Inches,Cm,Pt

from docx.document import Document as Doc  

document = Document()  # type: Doc

# 添加大标题(上面一行的注释也非常重要,否则无法获得提示)

document.add_heading('快来MindSpore昇思论坛~', 0)

# 添加段落

p = document.add_paragraph('MindSpore是由华为于2019年8月推出的新一代全场景AI计算框架,它')

run = p.add_run('开发友好、运行高效、部署灵活!')

run.bold = True  # 对run函数的内容进行加粗

run.font.size = Pt(26)  # 设置字体的大小

# 添加图片

document.add_picture('banner.png', width=Cm(10.4))

# 添加分页符

document.add_page_break()

# 保存文档

运行效果:

 

3.高级炫技

太简单了!真的是没有任何难度,所以这不小Mi需要给大家表演一个魔术!

假设场景:

我们经常是不是需要处理很多文件,这些文件是不是都很类似,那么是不是可以设计一个模板出来,在需要大量编写这些word文件的时候,几行代码轻松搞定!比如公司入职人员的信息统计。

首先设定一个简单的word模板:

然后非常高傲地附上代码:

from docx import Document

from docx.document import Document as Doc

 

contracts = [

    {

        'company': 'A',

        'number': '000451',

        'start': '2020.1.6',

    },

    {

        'company': 'B',

        'number': '000452',

        'start': '2021.6.4',

    },

    {

        'company': 'C',

        'number': '000453',

        'start': '2021.10.9',

    },

]

 

for emp_dict in contracts:

    doc = Document('信息统计.docx')  # type: Doc

    for p in doc.paragraphs:

        if '{' not in p.text:

            continue

        for run in p.runs:

            if '{' not in run.text:

                continue

            # 将占位符换成实际内容

            start, end = run.text.find('{'), run.text.find('}')

            key, place_holder = run.text[start + 1:end], run.text[start:end + 1]

            run.text = run.text.replace(place_holder, emp_dict[key])


    doc.save(f'{emp_dict["company"]}信息统计.docx')

那么运行之后便可以见证奇迹啦!

文件夹中多出了三个员工信息的word文件,真的是快捷而又高级!

4 附赠技能

当然啦,小Mi的word都只是简单的内容而已,大家可以在这个基础上不断地提升!

比如如何添加各种标题:

Doc = Document()

Doc.add_heading("这是一级标题",level=1)

Doc.add_heading("这是二级标题",level=2)

Doc.add_heading("这是三级标题",level=3)

Doc.add_heading("这是四级标题",level=4)

Doc.save("标题.docx")

比如字体设置:

#英文字体

run = doc1.add_paragraph('设置英文字体:').add_run('This Font is Times New Roman ')

run.font.name = 'Times New Roman'

#中文字体

run = doc1.add_paragraph('设置中文字体:').add_run('字体为黑体')

run.font.name='黑体'

r = run._element

r.rPr.rFonts.set(qn('w:eastAsia'), '黑体')

#设置字体颜色

run = doc1.add_paragraph('这段为红色:').add_run('这里为红色')

run.font.color.rgb = RGBColor(0xFF, 0x00, 0x00)

好啦,今天的炫技到底结束,这个系列下期给大家推出PDF相关内容!

不过需要提醒大家的是,代码里面有陷阱哦,第一个找出来的兄弟姐们直接送上我们的纪念品!另外其他复现的盆友们留言抽20-30送!!!(留言形式“复现截图+邮箱+华为云ID”),参加的人越多我们抽奖的人数就越多哦,dddd(懂得都懂!)

截止日期:2021.11.28

更多全面用法可以参考:https://docxtpl.readthedocs.io/en/latest/

posted @ 2022-01-29 09:32  Skytier  阅读(39)  评论(0编辑  收藏  举报