用Python实现给Word文档盖章
作者:mez_Blog 发布时间:2021-07-08 21:18:00
目标文件夹内有多份 Word 文件 ——【xxx涨薪通告.docx】,我们需要在这些文档的末尾处添加公司的电子章与公司名称。
这次的任务困难吗?手动操作起来其实很简单,无非就是先打开一个文档,接着在结尾处添加文字盖章:并且插入电子章图片,然后另起一行,添加公司名称闪光科技金融公司(Shining Fintech Company),将公司名称的字号设置为四号,字体加粗,右对齐;完成这些操作后,复制这些文字和图片,最后保存文档。
实现代码:
import os
from docx import Document
from docx.enum.text import WD_ALIGN_PARAGRAPH
from docx.shared import Pt
# 设置目标文件夹路径
path = "../工作/涨薪通告-练习/"
# 获取目标文件夹下的所有文件名
file_list = os.listdir(path)
for file in file_list:
# 拼接文件路径
file_path = path + file
# 打开 Word 文件
doc = Document(file_path)
# 添加 Paragraph 对象 para_1
para_1 = doc.add_paragraph('盖章: ')
# 添加 Run 对象 run_stamp
run_stamp = para_1.add_run()
run_stamp.add_picture("./Shining.png")
# 添加 Paragraph 对象 para_2
para_2 = doc.add_paragraph()
# 设置对齐方式
para_2.paragraph_format.alignment = WD_ALIGN_PARAGRAPH.RIGHT
# 添加 Run 对象 run_comp
run_comp = para_2.add_run('闪光科技金融公司(Shining Fintech Company)')
# 设置字体
run_comp.font.size = Pt(14) # 字体大小
run_comp.font.bold = True # 字体加粗
# 保存文件
doc.save(file_path)
本次代码的详细流程图如下所示:
值得一提的是,流程图中添加文字的逻辑对应了简化版的代码。
你也可以使用常规版的流程(添加 Paragraph 对象 -> 添加 Run 对象 -> 添加文字)来添加文字。
本次项目需要使用到的新语法如下图所示:
模块分解
接着就可以打开下一个文档,在文档的最后粘贴刚才的文字和图片,然后保存并关闭文档。一直重复此操作,直到处理完所有的文档。
然后再让属性 font 调用 size,根据上面的表格,将导入的 Pt 设置好后赋值给 size 就可以设置字体的大小了。
具体写法如下所示:
from docx.shared import Pt
# 设置字体大小
Run 对象.font.size = Pt(14) # 字体大小
设置加粗
设置字体加粗的方式特别简单,一行代码就可以解决。
我们可以通过属性 font 调用 bold,然后将值设置为 True 即可。
具体写法如下所示:
# 设置字体加粗
Run 对象.font.bold = True # 字体加粗
font 属性还有很多其他功能,常用的还有给字体加下划线、删除线、斜体、颜色、指定字体等,只是他们与本项目无关,这里就用图片简单介绍一下,感兴趣的自己去操作。
功能块练习
这个功能块都是些记忆性的知识,写代码的时候记得参考上面的那些示例代码,照猫画虎就可以实现添加带样式的文字
这个功能块了。
from docx import Document
# 导入控制对齐方式所需
from docx.enum.text import WD_ALIGN_PARAGRAPH
# 导入控制字体大小所需
from docx.shared import Pt
# 设置文件路径
file_path = './马邦德涨薪通告.docx'
# 打开文档
doc = Document(file_path)
# 添加段落2
para = doc.add_paragraph()
# 设置对齐方式
para.paragraph_format.alignment=WD_ALIGN_PARAGRAPH.RIGHT
# 添加 run_comp
run_comp = para.add_run("闪光金融公司(Shining Finance Company)")
# 设置字体大小为 14pt
run_comp.font.size=Pt(14)
# 设置字体加粗
run_comp.font.bold=True
# 保存文件
doc.save('./添加带样式的文字.docx')
运行效果:
一定要记住,设置字体要在 Run 对象中进行,不要越俎代庖。Paragraph 对象的属性管段落在文档中的位置,Run 对象的属性负责文字在段落中的样式。分工明确,各司其职。
知识归纳与总结
本节是对使用 python-docx 处理 Word 文件的知识讲解。
首先是 python-docx 会将 Word 文件分为三个层级:Document 对象、Paragraph 对象和 Run 对象。
然后是添加文字的两种方法:
添加图片可以使用Run 对象.add_picture(path)。
另外需要铭记的是:
设置段落的排版与布局,需要使用 Paragraph 对象的属性:paragraph_format。
设置文字的字体样式,需要使用 Run 对象的属性:font。
最后来看看本节的知识点思维导图。
来源:https://blog.csdn.net/mez_Blog/article/details/122877075


猜你喜欢
- Python关于mySQL的连接插件众多,Bottle下也有人专门开发的插件:bottle-mysql具体使用方法见官方,总共感觉其用法限制
- 在计算机普及的现代设计领域,文字的设计的工作很大一部分由计算机代替人脑完成了(很多平面设计软件中都有制作艺术汉字的引导,以及提供了数十上百种
- 目录一、索引基础1. 索引的类型1.1 B-Tree 索引1.2 哈希索引1.3 空间数据索引(R-Tree)1.4 全文索引二、索引的优缺
- <title>无标题文档</title> <script language="javascript&
- Microsoft SQL server2000由一系列相互协作的组件构成。能满足最大的WEB站点和企业数据处理系统存储
- python2和python3对于字符串的处理有很大的区别熟悉了python2的写法用python3时真的会遇到很多问题啊……区别pytho
- 1、split()含义:split() 通过指定分隔符对字符串进行切片,如果参数 num 有指定值,则分隔 num+1 个子字符串
- 引言阿刁是一个自动化测试用例,从一出生他就被赋予终生使命,去测试一个叫登录的过程是否合理。他一直就被关在一个小黑屋里面,从来也没有出去过,小
- 首先让我们来看看有关 Perl 面向对象编程的三个基本定义:1. 一个“对象”是指一个“有办法知道它是属于哪个类”的简单引用。(
- ORACLE的数据字典是数据库的重要组成部分之一,它随着数据库的产生而产生, 随着数据库的变化而变化, 体现为sys用户下的一些表和视图。数
- 测试环境Python 3.6Win10代码实现#!/usr/bin/env python 3.4.0#-*- encoding:utf-8
- 方法一:mylist = [1,2,2,2,2,3,3,3,4,4,4,4]myset = set(mylist)for item in m
- 背景今天在工作中,同事遇到一个上传图片的问题:系统要求的图片大小不能超过512KB。但是同事又有很多照片。这要是每一个照片都用ps压缩的话,
- 语言更新时每一个新增的特性都是从千百万开发者需求里提取过来的,规范采用后能减少程序员的痛苦,带来便捷。我们经常会这么写function ca
- 1,不用第三方库# coding: utf-8import loggingBLACK, RED, GREEN, YELLOW, BLUE,
- 运算符优先级来确定条件的表达式中的分组。这会影响一个表达式如何计算。某些运算符的优先级高于其他;例如,乘法运算符的优先级比加法运
- 最近看ECShop到网上找资料,发现好多说明ECShop的文件结构不全面,于是想自己弄个出来。但这是个无聊耗时的工作,自己就写了个Pytho
- asp获取application对象代码如下: <%application("new&qu
- 1. 资料1) Protobuf 开发文档https://protobuf.dev/2) protobuf安装指南https://grpc.
- 在定向爬虫的制作过程中,使用分布式爬取技术可以显著提高爬取效率。而 Redis 配合 Scrapy 是实现分布式爬取的基础。Redis 是一