Python办公自动化【Word设置文字样式、Word设置段落样式、Word生成通知书、Word读取内容】(五)-全面详解(学习总结---从入门到深化)

目录

Word设置文字样式

Word设置段落样式

Word生成通知书

Word读取内容


Word设置文字样式

常用方法与属性 

函数名&属性含义
docx.shared.Inches() 创建大小(英寸)
docx.shared.Pt() 创建大小(像素)
docx.shared.RGBColor() 创建颜色
docx.text.run.Run.font.bold文字加粗
docx.text.run.Run.font.italic文字斜体
docx.text.run.Run.font.strike文字删除线
docx.text.run.Run.font.shadow文字阴影
docx.text.run.Run.font.size文字大小
docx.text.run.Run.font.color.rgb 文字颜色
docx.text.run.Run._element.rPr.rFonts.set(qn('w:eastAsia'), '字体') 文字字体

 注意

我们在写word的时候,一般英文采用Arial和新罗马字体,中文是宋体和黑体
w:eastAsia是东亚的意思。应该是规定使用中文字体时确认“微软雅黑”是哪个地方的微软雅黑

记住即可

代码 

def use_style():from docx import Documentfrom docx.shared import Pt,Inches,RGBColor# 创建文档doc1 = Document()# 设置加粗p1 = doc1.add_paragraph('这是段落1:\n')p1.runs[0].font.bold=True# 加粗p1.add_run('这是内容1.1_加粗\n').font.bold=True# 斜体p1.add_run('这是内容1.2_斜体\n').font.italic = True# 删除线p1.add_run('这是内容1.3_删除线\n').font.strike = True# 阴影p1.add_run('这是内容1.4_阴影\n').font.shadow = True# 字体大小p1.add_run('这是内容1.5_字体大小\n').font.size = Pt(30)# 颜色 rgb三原色 0-255p1.add_run('这是内容1.6_颜色\n').font.color.rgb = RGBColor(255,100,76)# 字体# p1.add_run('这是内容1.7_字体\n').font.name='微软雅黑' # 只写这个设置不成功的run = p1.add_run('这是内容1.7_字体\n')from docx.oxml.ns import qn'''AttributeError: 'NoneType' object has no attribute 'rFonts'直接设置字体,会报错,需要先声明字体名称'''run.font.name=''run._element.rPr.rFonts.set(qn('w:eastAsia'),'微软雅黑')doc1.save('./create_data/05_设置字体样式.docx')if __name__ == "__main__":use_style()

Word设置段落样式

常用方法与属性 

函数名&属性 含义
paragraph.paragraph_format.alignment 段落内容位置
paragraph.paragraph_format.space_before 段落前距离
paragraph.paragraph_format.space_after 段落后距离
paragraph.paragraph_format.left_indent 段落左边距离
paragraph.paragraph_format.first_line_indent 段落首行左边距离
paragraph.paragraph_format.line_spacing段落间行间距代码

 代码

def use_style():from docx import Documentfrom docx.enum.text import WD_ALIGN_PARAGRAPHfrom docx.shared import Pt# 创建文档doc1 = Document()# 段落居中doc1.add_paragraph('这是段落1:').paragraph_format.alignment = WD_ALIGN_PARAGRAPH.CENTER# 设置整段离左侧距离doc1.add_paragraph('Python是一种面向对象的解释型计算机程序设计语言,由荷兰人Guido van Rossum于1989年发明,Python的定位是“优雅”、“明确”、“简单”,所以Python程序看上去总是...').paragraph_format.left_indent =Pt(50)# 设置首行左侧距离doc1.add_paragraph('Python是一种面向对象的解释型计算机程序设计语言,由荷兰人Guido van Rossum于1989年发明,Python的定位是“优雅”、“明确”、“简单”,所以Python程序看上去总是...').paragraph_format.first_line_indent = Pt(50)# 段落离上面的距离doc1.add_paragraph('这是段落2:').paragraph_format.space_before=Pt(30)# 段落离下面的距离doc1.add_paragraph('这是段落3:').paragraph_format.space_after=Pt(30)# 设置行间距doc1.add_paragraph('这是段落4:')doc1.add_paragraph('Python是一种面向对象的解释型计算机程序设计语言,由荷兰人Guido van Rossum于1989年发明,Python的定位是“优雅”、“明确”、“简单”,所以Python程序看上去总是...').paragraph_format.line_spacing = Pt(50)doc1.save('./create_data/06_设置段落样式.docx')if __name__ =='__main__':use_style()

Word生成通知书

代码 

from docx import Document
from docx.shared import Pt,RGBColor
from docx.enum.text import WD_PARAGRAPH_ALIGNMENTfrom docx.oxml.ns import qn
def create_book():# 生成一个文档doc1 = Document()# 增加标题title = doc1.add_paragraph()run = title.add_run('录取通知书')# 设置标题的样式run.font.size = Pt(30)run.font.color.rgb = RGBColor(255,0,0)run.font.name = ''run._element.rPr.rFonts.set(qn('w:eastAsia'),'黑体')title.paragraph_format.alignment = WD_PARAGRAPH_ALIGNMENT.CENTER# 增加内容doc1.add_paragraph('张三 同学:')content1 = doc1.add_paragraph('兹录取你入我校 人工智能技术 专业类学习。请凭本通知书来报道。具体时间、地点见《新生入学须知》。')# 设置内容样式content1.paragraph_format.first_line_indent = Pt(30)# 落款footer = doc1.add_paragraph('清华大学\n')footer.add_run('二0三0年八月十号')footer.paragraph_format.alignment = WD_PARAGRAPH_ALIGNMENT.RIGHT# 保存文档doc1.save('./create_data/07_录取通知书.docx')def create_book2(name,major,school,_time):# 生成一个文档doc1 = Document()# 增加标题title = doc1.add_paragraph()run = title.add_run('录取通知书')# 设置标题的样式run.font.size = Pt(30)run.font.color.rgb = RGBColor(255,0,0)run.font.name = ''run._element.rPr.rFonts.set(qn('w:eastAsia'),'黑体')title.paragraph_format.alignment = WD_PARAGRAPH_ALIGNMENT.CENTER# 增加内容doc1.add_paragraph(f'__{name}__ 同学:')content1 = doc1.add_paragraph(f'兹录取你入我校 __{major}__ 专业类学习。请凭本通知书来报道。具体时间、地点见《新生入学须知》。')# 设置内容样式content1.paragraph_format.first_line_indent = Pt(30)# 落款footer = doc1.add_paragraph(f'{school}\n')footer.add_run(f'{_time}')footer.paragraph_format.alignment = WD_PARAGRAPH_ALIGNMENT.RIGHT# 保存文档doc1.save(f'./create_data/07_录取通知书_{name}.docx')if __name__ == '__main__':# create_book()create_book2('吕布','人工智能技术','清华大学','二0三0年八月十号')

Word读取内容

常用方法与属性 

函数名&属性含义
doc.paragraphs 获取段落
doc.tables 获取表格
paragraph.text 获取段落内容
table.rows 获取行对象
row.cells 获取表格对象
cell.text 获取表格数据

代码

from docx import Document
def read_word():# 打开文档doc1 = Document('./base_data/原数据.docx')# 读取数据-段落for p in doc1.paragraphs:print(p.text)# 读取表格for t in doc1.tables:for row in t.rows:for c in row.cells:print(c.text,end=' ')print()if __name__ == '__main__':read_word()

Word通过模板生成文档

代码 

from docx import Document
def create_word(_data):# 打开文档doc1 = Document('./base_data/word_模板.docx')# 读取里面的数据for p in doc1.paragraphs:# 替换新数据 如果直接级paragraph的text替换内容,会丢失样式# p.text = p.text.replace('{0}','000001')# p.text = p.text.replace('{1}','2030')# p.text = p.text.replace('{2}','01')# p.text = p.text.replace('{3}','01')# p.text = p.text.replace('{4}','01')# p.text = p.text.replace('{5}','01')# p.text = p.text.replace('{6}','闯红灯')# p.text =p.text.replace('{7}','600')for run in p.runs:run.text = run.text.replace('{0}',_data[0])run.text = run.text.replace('{1}',_data[1])run.text = run.text.replace('{2}',_data[2])run.text = run.text.replace('{3}',_data[3])run.text = run.text.replace('{4}',_data[4])run.text = run.text.replace('{5}',_data[5])run.text = run.text.replace('{6}',_data[6])run.text = run.text.replace('{7}',_data[7])# 保存新文件doc1.save(f'./create_data/09_模板生成文档_{_data[0]}.docx')
if __name__ == '__main__':data = [('00001','2030','01','01','01','01','闯红灯','600'),('00002','2030','02','01','01','01','违反禁令','300'),('00003','2030','03','01','01','01','违章停车','300'),('00004','2030','04','01','01','01','挑线','100'), ('00005','2030','05','01','01','01','没礼让行人','300'),]for d in data:create_word(d)# print(d)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/193251.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

压缩docker在主机的虚拟磁盘容量

我们在windows里使用docker时会发现,即使我们已经删除了无用的镜像和容器,主机里挂在docker虚拟磁盘的那个盘,可用空间也没有增加,这是因为虚拟磁盘不会自动缩小,这里我分享一个可用的解决方案。 1.先通过docker回收空…

[多线程]线程安全问题再讨论 - volatile

目录 1.引言 2.volatil关键字 2.1内存可见性 2.2指令重排序 1.引言 大家好,我是老cu,今天我们来继续聊聊线程安全问题 线程安全是我们在编程开发中遇到的非常常见,棘手 的问题.同时也是多线程部分很复杂的问题.为了线程安全我们要做很多努力.也要对线程安全部分的代码进行慎…

使用python streamlit库快速创建一个购物网站

streamlit Streamlit 是一个基于 Python 的 Web 应用程序框架,致力于以更高效、更灵活的方式可视化数据,并分析结果。 Streamlit是一个开源库,可以帮助数据科学家和学者在短时间内开发机器学习 (ML) 可视化仪表板。只需几行代码&#xff0c…

[GPT-1]论文实现:Improving Language Understanding by Generative Pre-Training

Efficient Graph-Based Image Segmentation 一、完整代码二、论文解读2.1 GPT架构2.2 GPT的训练方式Unsupervised pre_trainingSupervised fine_training 三、过程实现3.1 导包3.2 数据处理3.3 模型构建3.4 模型配置 四、整体总结 论文:Improving Language Understa…

Gossip 协议

Gossip 协议 背景 在分布式系统中,不同的节点进行数据/信息共享是一个基本的需求。 一种比较简单粗暴的方法就是 集中式发散消息,简单来说就是一个主节点同时共享最新信息给其他所有节点,比较适合中心化系统。这种方法的缺陷也很明显&…

Hdoop学习笔记(HDP)-Part.20 安装Flume

目录 Part.01 关于HDP Part.02 核心组件原理 Part.03 资源规划 Part.04 基础环境配置 Part.05 Yum源配置 Part.06 安装OracleJDK Part.07 安装MySQL Part.08 部署Ambari集群 Part.09 安装OpenLDAP Part.10 创建集群 Part.11 安装Kerberos Part.12 安装HDFS Part.13 安装Ranger …

ubuntu下快速搭建docker环境训练yolov5数据集

参考文档 yolov5-github yolov5-github-训练文档 csdn训练博客 一、配置环境 1.1 安装依赖包 前往清华源官方地址 选择适合自己的版本替换自己的源 # 备份源文件 sudo cp /etc/apt/sources.list /etc/apt/sources.list_bak # 修改源文件 # 更新 sudo apt update &&a…

LinuxBasicsForHackers笔记 --常用Linux命令

在终端中修改用户密码命令:passwd Linux的文件系统是逻辑文件系统。 Linux基本命令 pwd – print working directory. 返回你当前所在目录结构中的位置。 whoami – 查看您当前登录的用户身份。 cd – change directory. 从终端更改目录。 cd / – 移动到根目录…

数据结构与算法(Java) -单调队列单调栈题单

单调队列(灵神笔记) 239 滑动窗口最大值 239. 滑动窗口最大值 - 力扣(LeetCode) 给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗…

Skywalking接入实际应用做日志跟踪

Skywalking客户端挂载 从官网下载skywalking-agent客户端,并挂在到应用服务器指定目录 挂载到应用主机中,好处是解决打包应用镜像的时候,镜像过大,部署成本过高。 docker-compose部署应用,并接入skywalking服务,这里以gateway为例 versio…

Webgis学习总结

前言: 作者跟随视频学习了webgis内容进行如下学习复习总结 参考:新中地学习笔记 WebGIS第一课:测试高德API并通过: 注册申请高德API成为开发者,创建自己的项目和key进行项目初始化,可以使用JS API官方文…

26. 深度学习进阶 - 深度学习的优化方法

Hi, 你好。我是茶桁。 上一节课中我们预告了,本节课是一个难点,同时也是一个重点,大家要理解清楚。 我们在做机器学习的时候,会用不同的优化方法。 SGD 上图中左边就是Batch Gradient Descent,中间是Mini-Batch Gra…

【Linux】第二十五站:深入理解文件系统

文章目录 一、前言二、认识硬件----磁盘1.基本介绍2.磁盘的存储构成3.磁盘的逻辑结构4.回归到硬件 三、文件系统1.划分2.Block group(1)Data blocks(2)inode Table(3)Block Bitmap(4)inode Bitmap(5)Group Descriptor Table(GDT)(6)Super Block 3.总结4.一些其他问题5.如何理解…

untiy webgl常见问题与操作

文章目录 1 untiy和网页相互通信2 打开新页面(同标签页和新标签页)3 获取网页的URL4 解析Url内的参数5 后处理与色彩空间问题 1 untiy和网页相互通信 看这个文章 2 打开新页面(同标签页和新标签页) 先看本文untiy和网页相互通信…

翻译: GPT4等大型语言模型的原理解析和未来预测慢思考和模型自我迭代和LLM安全

YouTube: Intro to Large Language Models - YouTube 1. Large Language Model LLM 大家好,最近我做了一个关于大型语言模型的 30 分钟演讲,有点像介绍性演讲,不幸的是,那个演讲没有被录制下来,但很多人在演讲结束后…

基于JNI实现调用C++ SDK

基于JNI实现调用C SDK 背景分析解决实践 背景 上篇文章总结了几种Java项目调用C/C SDK项目方法,在逐一实践、踩坑后,最终还是敲定采用 JNI 方式进行实现。在文章开始的过程,会先大概讲讲笔者遇到的情况,因为封装方式需要根据实际…

MQTT客户端、代理(broker)和连接建立

在前篇文章(http://t.csdnimg.cn/IamPz)中,介绍了发布/订阅架构和MQTT如何据此交换信息,其中的关键概念是: 发布/订阅架构触耦了负责发布信息的客户端(发布者)和负责接收信息的客户端&#xff…

[c]求逆序数

#include<stdio.h> int main() {int n,i,count;scanf("%d",&n);int arr[n];count0;for(i0;i<n-1;i){scanf("%d",&arr[i]);}for(int j0;j<n-2;j)//注意是小于等于n-2&#xff0c;因为倒数第一个元素后面没有数了&#xff0c;不需要比较…

CSC173 Boolean Logic and Boolean Circuits

We have provided code for a simple Boolean circuit simulator written i n C

韵达速递查询,韵达速递单号查询,对需要的单号进行备注

批量查询韵达速递单号的物流信息&#xff0c;对需要的单号进行备注。 所需工具&#xff1a; 一个【快递批量查询高手】软件 韵达速递单号若干 操作步骤&#xff1a; 步骤1&#xff1a;运行【快递批量查询高手】软件&#xff0c;并登录 步骤2&#xff1a;点击主界面左上角的“…