当前位置: 首页> 财经> 金融 > 汉中门户网官网_网络建设与运维技能大赛中职组_百度联盟怎么加入赚钱_关键词排名优化技巧

汉中门户网官网_网络建设与运维技能大赛中职组_百度联盟怎么加入赚钱_关键词排名优化技巧

时间:2025/7/11 18:30:43来源:https://blog.csdn.net/m0_61388098/article/details/142520357 浏览次数:1次
汉中门户网官网_网络建设与运维技能大赛中职组_百度联盟怎么加入赚钱_关键词排名优化技巧

一、操作Word

1.简介

​ 在日常工作中,有很多简单重复的劳动其实完全可以交给Python程序,比如根据样板文件(模板文件)批量的生成很多个Word文件或PowerPoint文件。Word是微软公司开发的文字处理程序,相信大家都不陌生,日常办公中很多正式的文档都是用Word进行撰写和编辑的,目前使用的Word文件后缀名一般为.docx。PowerPoint是微软公司开发的演示文稿程序,是微软的Office系列软件中的一员,被商业人士、教师、学生等群体广泛使用,通常也将其称之为“幻灯片”。在Python中,可以使用名为python-docx 的三方库来操作Word

我们可以先通过下面的命令来安装python-docx三方库。

# 一般情况下
pip install python-docx
# 注意:我们在安装此模块使用的是pip install python-docx,但是在导入的时候是 docx
# 说明:只需要执行pip install python-docx,会自动安装lxml
​
# 可能出现问题:
高版本lxml没有etree模块。有网友确定lxml4.2.5版本带有etree模块,且该版本lxml支持python3.7.4版本。安装命令:
pip install lxml==4.2.5  (若python-docx 使用有问题,需要查看lxml版本)
2.向Word写入内容
# 注意1:我们在安装此模块使用的是pip install python-docx,但是在导入的时候是 docx
# 注意2:一般情况下,如果安装了A库,同时自动安装了依赖B库,如果A库更新了,如果使用过程中报错,则可以更新依赖库
​
# C:\Users\19621>pip install python-docx
# Collecting python-docx
#   Downloading python_docx-1.1.0-py3-none-any.whl (239 kB)
#      |████████████████████████████████| 239 kB 930 kB/s
# Requirement already satisfied: lxml>=3.1.0 in d:\software\anaconda\lib\site-packages (from python-docx) (4.6.3)
# Requirement already satisfied: typing-extensions in d:\software\anaconda\lib\site-packages (from python-docx) (4.9.0)
# Installing collected packages: python-docx
# Successfully installed python-docx-1.1.0
​
# 比如:安装python-docx的过程中,自动安装了依赖库lxml和typing-extensions
​
from docx import  Document
from docx.shared import Cm
​
# 1.创建doc文档对象
doc = Document()
# 2.添加标题
doc.add_heading('今天星期二~~~~')
# 3.添加段落
p = doc.add_paragraph('第一个段落~~~~')
# 注意:一个段落可以由很多个run组成
run1 = p.add_run('this is a test')
run2 = p.add_run('Python是一门面向对象的语言')
run3 = p.add_run('Python是跨平台的')
​
# 给每个run可以单独设置样式
run1.bold = True
run2.underline = True
​
# 4.添加图片
doc.add_picture(r'data/3.png',width=Cm(10))
​
# 5.添加列表
# a.有序列表
doc.add_paragraph('教学部',style='List Number')
doc.add_paragraph('运营部',style='List Number')
doc.add_paragraph('财务部',style='List Number')
doc.add_paragraph('行政部',style='List Number')
doc.add_paragraph('市场部',style='List Number')
​
# b.无序列表
doc.add_paragraph('教学部',style='List Bullet')
doc.add_paragraph('运营部',style='List Bullet')
doc.add_paragraph('财务部',style='List Bullet')
doc.add_paragraph('行政部',style='List Bullet')
doc.add_paragraph('市场部',style='List Bullet')
​
# 保存文件
doc.save(r'data/Python操作word.docx')
3.读取Word内容
from docx import  Document
​
# 1.打开doc
doc = Document(r'data/占勇辉的离职证明.docx')
​
# 2.获取doc中的所有内容,返回一个列表,其中的元素是段落对象
print(doc.paragraphs)
​
# 3.遍历列表,获取每个段落对象
for para in doc.paragraphs:# 获取每个段落的文本# print(para.text)# 获取组成每个段落的run,返回一个列表print(para.runs)for run in para.runs:# 获取每个run的文本print(run.text)
​
4.批量生成Word文件【掌握】

试想,我们如果把上面的离职证明制作成一个模板文件,把姓名、身份证号、入职和离职日期等信息用占位符代替,这样通过对占位符的替换,就可以根据实际需要写入对应的信息,这样就可以批量的生成Word文档。

实现思路:

  1. 首先编辑一个离职证明的模板文件,如下图所示。

  2. 接下来我们读取该文件,将占位符替换为真实信息,就可以生成一个新的Word文档,如下所示。

  1. # 将真实的员工信息保存在字典中
    person_list = [{"name":"杨天偿","id":"333222199909120987","sdate":"2017年7月1日","edate":"2021年11月1日","department":"技术部","position":"架构师","company":"深圳华为技术有限公司"},{"name":"刘一奇","id":"110120198909120937","sdate":"2016年3月1日","edate":"2020年10月1日","department":"行政部","position":"保镖","company":"黑龙江"},{"name":"张国涛","id":"111222199908120987","sdate":"2015年4月1日","edate":"2019年11月1日","department":"后厨部","position":"试吃员","company":"深圳市金威源餐饮有限公司"},{"name":"欧阳","id":"112221199909120987","sdate":"2016年7月1日","edate":"2020年11月1日","department":"后勤部","position":"主管","company":"深圳市abc有限公司"},
    ]
# 需求:根据已知的员工信息,批量生成每个员工的离职证明文件,每个人的文件以该员工的姓名命名
from docx import  Document
# 将真实的员工信息保存在字典中
person_list = [{"name":"杨天偿","id":"333222199909120987","sdate":"2017年7月1日","edate":"2021年11月1日","department":"技术部","position":"架构师","company":"深圳华为技术有限公司"},{"name":"刘一奇","id":"110120198909120937","sdate":"2016年3月1日","edate":"2020年10月1日","department":"行政部","position":"保镖","company":"黑龙江"},{"name":"张国涛","id":"111222199908120987","sdate":"2015年4月1日","edate":"2019年11月1日","department":"后厨部","position":"试吃员","company":"深圳市金威源餐饮有限公司"},{"name":"欧阳","id":"112221199909120987","sdate":"2016年7月1日","edate":"2020年11月1日","department":"后勤部","position":"主管","company":"深圳市abc有限公司"},{"name":"张三","id":"112221199909120987","sdate":"2016年7月1日","edate":"2020年11月1日","department":"后勤部","position":"主管","company":"深圳市abc有限公司"},{"name":"李四","id":"112221199909120987","sdate":"2016年7月1日","edate":"2020年11月1日","department":"后勤部","position":"主管","company":"深圳市abc有限公司"}
]
​
# 实现思路:读取离职证明的模板文件 ,将其中的占位符替换为已知数据中的值
# 遍历列表,批量读取离职证明的模板文件,批量生成离职证明文件
for person in person_list:# 1.读取离职证明的模板文件doc = Document(r'data/离职证明模板.docx')
​# 2.遍历段落,进行数据的处理【将包含占位符的run筛选出来】for p in doc.paragraphs:if '{' not in p.text:continue# 3.遍历每个段落中的runsfor run in p.runs:if '{' not in run.text:continue# 4.完成替换操作:将离职证明模板中的{xxx}的内容替换为字段中指定key对应的值# '{name}'------>'name'---->对应的就是字典中的key# '{department}'------>'{department}'----->对应的就是字典中的key# print(run.text)# 字符串切片# print(run.text[1:-1],type(run.text[1:-1]))key = run.text[1:-1]print(person[key])# 替换:xxx.repalce():因为字符串是不可变的,所以替换之后会生成一个新的字符串,将新的字符串重新赋值给run.text# {name} ---->张三run.text = run.text.replace(run.text,person[key])
​# 将处理之后的数据进行保存,生成新的doc文件doc.save(rf'data/{person["name"]}的离职证明.docx')print(f'{person["name"]}的离职证明文件已生成~~~~~')  
关键字:汉中门户网官网_网络建设与运维技能大赛中职组_百度联盟怎么加入赚钱_关键词排名优化技巧

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: