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

news2025/1/21 2:49:36

目录

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 Document
  from 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-255
  p1.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 Document
  from docx.enum.text import WD_ALIGN_PARAGRAPH
  from 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_ALIGNMENT

from 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.coloradmin.cn/o/1280084.html

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

相关文章

Tensorflow的日志log记录

if OUTPUT_GRAPH:tf.summary.FileWriter("logs/", sess.graph)自动创建文件夹log

半导体封装之倒装封装 (Flip Chip)

倒装封装 (Flipchip)是相对于引线键合(Wire Bonding)来说的,之所以叫做倒装,是因为flip chip是正面朝下放置。倒装芯片技术是通过芯片上的凸点直接将元器件朝下互连到基板、载体或者电路板上。引线键合的连接方式是将芯片的正面朝…

AtCoder Beginner Contest 331 题解 A-E

目录 A - TomorrowB - Buy One Carton of MilkC - Sum of Numbers Greater Than MeD - Tile PatternE - Set Meal A - Tomorrow 原题链接 题目描述 已知一年有M个月D天,求出第y年m月d天的后一天是哪一天。 思路:分类讨论 分别讨论m和d的是否是最后一个月…

SpringSecurity工作原理

实现功能就是继承这几个对应功能的类。 大概工作流程 Spring Security 的过滤器(Filters)和拦截器(Interceptors)是 Spring Security 框架中用于保护 web 应用安全的重要组件。它们在处理 HTTP 请求时扮演不同的角色&#xff0c…

Wireshark抓包分析RTMP协议时,出现Unknown问题

进行rtmp推流时,使用wireshark抓包,发现部分包显示Unknown 解决方法: 编辑 -> 首选项 -> Protocols -> RTMPT,这里Maximum packet size默认是32768 将该值调大,比如调成1048576,即可解决该问题。…

GitHub Actions 之自动化发布 Maven 项目

开发开源数据中台项目 datacap 时,之前发布版本都是通过在本地编译并部署到 maven 中央仓库中,这样就导致是非自动化工程,于是通过搜索发现 samuelmeuli/action-maven-publish 这个 github 自动化工具可以帮助我们来做这些事情,本…

第 374 场 LeetCode 周赛题解

A 找出峰值 枚举 class Solution { public:vector<int> findPeaks(vector<int> &mountain) {int n mountain.size();vector<int> res;for (int i 1; i < n - 1; i)if (mountain[i] > mountain[i - 1] && mountain[i] > mountain[i 1…

基于搜索协议实现工业设备升级

目录 1、背景引入 2、技术分析 3、过程概述 4、服务器端流程 5、客户端流程 6、效果展示 7、源码 7.1 master&#xff08;主控&#xff09; 7.2 device&#xff08;设备&#xff09; 8、注意事项 1、背景引入 在工业生产中&#xff0c;设备的升级和维护是非常重要的…

JavaScript学习-1

01 基础用法 //index.html <body><!-- 行内JS --><button type"button" onclick"alert(hello)">按钮</button><!--内部JS--><script type"text/javascript">alert("你好");</script><…

Unity C++交互

一、设置Dll输出。 两种方式&#xff1a; 第一&#xff1a;直接创建动态链接库工程第二&#xff1a;创建的是可执行程序&#xff0c;在visual studio&#xff0c;右键项目->属性(由exe改成dll) 二、生成Dll 根据选项Release或Debug&#xff0c;运行完上面的生成解决方案后…

计网Lesson6 - IP 地址分类管理

文章目录 1. I P IP IP 地址定义2. I P v 4 IPv4 IPv4 的表示方法2.1 I P v 4 IPv4 IPv4 的分类编址法2.2 I P v 4 IPv4 IPv4 的划分子网法2.2.1 如何划分子网2.2.2 如何确定子网的借位数2.2.3 总结2.2.4 题目练习 2.3 I P v 4 IPv4 IPv4 的无分类编址法 1. I P IP IP 地…

kafka3.6.0部署

部署zk https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/zookeeper-3.9.1/apache-zookeeper-3.9.1.tar.gz tar -xf apache-zookeeper-3.9.1.tar.gz -C /apps cd /apps/ && ln -s apache-zookeeper-3.9.1 zookeeper 修改配置bash grep -vE ^$|^# conf/zo…

代码随想录算法训练营第四十一天 _ 动态规划_343. 整数拆分、96.不同的二叉搜索树、01背包问题。

学习目标&#xff1a; 动态规划五部曲&#xff1a; ① 确定dp[i]的含义 ② 求递推公式 ③ dp数组如何初始化 ④ 确定遍历顺序 ⑤ 打印递归数组 ---- 调试 引用自代码随想录&#xff01; 60天训练营打卡计划&#xff01; 学习内容&#xff1a; 343. 整数拆分 动态规划五步曲&…

【接口测试】Apifox实用技巧干货分享

前言 不知道有多少人和我有着这样相似的经历&#xff1a;从写程序只要不报错就不测试&#x1f60a;&#xff0c;到写了程序若是有bug就debug甚至写单元测试&#xff0c;然后到了真实开发场景&#xff0c;大哥和你说&#xff0c;你负责的功能模块的所有接口写完要测试一遍无误在…

python——进程常用功能

Python的multiprocessing模块提供了强大的并行处理能力&#xff0c;以下是几个功能的详细解释&#xff1a; join(): 在multiprocessing中&#xff0c;join方法用于阻塞主进程直到指定的进程终止。这对于确保所有子进程在程序结束前完成其工作是很有用的。deamon(): 在multipro…

16.字符串处理函数——字符串长度函数

文章目录 前言一、题目描述 二、解题 程序运行代码 总结 前言 本系列为字符串处理函数编程题&#xff0c;点滴成长&#xff0c;一起逆袭。 一、题目描述 二、解题 程序运行代码 #include<stdio.h> #include<string.h> int main() {char str[ ]"0123\0456…

根据关键词写作文章的软件,根据标题写作文章的工具

在当今信息化时代&#xff0c;人工智能技术的飞速发展&#xff0c;智能AI写作工具逐渐成为文案创作者的得力助手。这些工具不仅能够根据标题迅速生成文章&#xff0c;而且在提高创作效率的同时&#xff0c;也为我们节省了大量时间和精力。 人工智能的基本原理&#xff1a;人工智…

如何查看Microsoft Office 使用期限

1.进入到 Office 软件的安装目录&#xff08;******\Microsoft Office\Office&#xff09; ## 以管理员身份打开 Windows PowerShell输入以下命令&#xff0c;回车 cscript ospp.vbs /dstatusREMAINING GRACE 一行表示激活剩余天数&#xff08;括号内是换算成的剩余分钟数…

15.字符串处理函数——字符串连接函数

文章目录 前言一、题目描述 二、解题 程序运行代码 总结 前言 本系列为字符串处理函数编程题&#xff0c;点滴成长&#xff0c;一起逆袭。 一、题目描述 二、解题 程序运行代码 #include<stdio.h> #include<string.h> int main() {char dest[20] "12345…

【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.如何理解…