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

简介: Python办公自动化【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)
目录
相关文章
|
2月前
|
Python 容器
Python学习的自我理解和想法(9)
这是我在B站跟随千锋教育学习Python的第9天,主要学习了赋值、浅拷贝和深拷贝的概念及其底层逻辑。由于开学时间紧张,内容较为简略,但希望能帮助理解这些重要概念。赋值是创建引用,浅拷贝创建新容器但元素仍引用原对象,深拷贝则创建完全独立的新对象。希望对大家有所帮助,欢迎讨论。
|
1月前
|
存储 数据挖掘 数据处理
Python Pandas入门:行与列快速上手与优化技巧
Pandas是Python中强大的数据分析库,广泛应用于数据科学和数据分析领域。本文为初学者介绍Pandas的基本操作,包括安装、创建DataFrame、行与列的操作及优化技巧。通过实例讲解如何选择、添加、删除行与列,并提供链式操作、向量化处理、索引优化等高效使用Pandas的建议,帮助用户在实际工作中更便捷地处理数据。
45 2
|
2月前
|
Python
Python学习的自我理解和想法(10)
这是我在千锋教育B站课程学习Python的第10天笔记,主要学习了函数的相关知识。内容包括函数的定义、组成、命名、参数分类(必须参数、关键字参数、默认参数、不定长参数)及调用注意事项。由于开学时间有限,记录较为简略,望谅解。通过学习,我理解了函数可以封装常用功能,简化代码并便于维护。若有不当之处,欢迎指正。
|
1月前
|
数据可视化 数据挖掘 大数据
1.1 学习Python操作Excel的必要性
学习Python操作Excel在当今数据驱动的商业环境中至关重要。Python能处理大规模数据集,突破Excel行数限制;提供丰富的库实现复杂数据分析和自动化任务,显著提高效率。掌握这项技能不仅能提升个人能力,还能为企业带来价值,减少人为错误,提高决策效率。推荐从基础语法、Excel操作库开始学习,逐步进阶到数据可视化和自动化报表系统。通过实际项目巩固知识,关注新技术,为职业发展奠定坚实基础。
|
1月前
|
人工智能 编译器 Python
python已经安装有其他用途如何用hbuilerx配置环境-附带实例demo-python开发入门之hbuilderx编译器如何配置python环境—hbuilderx配置python环境优雅草央千澈
python已经安装有其他用途如何用hbuilerx配置环境-附带实例demo-python开发入门之hbuilderx编译器如何配置python环境—hbuilderx配置python环境优雅草央千澈
41 0
python已经安装有其他用途如何用hbuilerx配置环境-附带实例demo-python开发入门之hbuilderx编译器如何配置python环境—hbuilderx配置python环境优雅草央千澈
|
4月前
|
机器学习/深度学习 人工智能 运维
构建高效运维体系:从自动化到智能化的演进
本文探讨了如何通过自动化和智能化手段,提升IT运维效率与质量。首先介绍了自动化在简化操作、减少错误中的作用;然后阐述了智能化技术如AI在预测故障、优化资源中的应用;最后讨论了如何构建一个既自动化又智能的运维体系,以实现高效、稳定和安全的IT环境。
112 4
|
4月前
|
运维 Linux Apache
,自动化运维成为现代IT基础设施的关键部分。Puppet是一款强大的自动化运维工具
【10月更文挑战第7天】随着云计算和容器化技术的发展,自动化运维成为现代IT基础设施的关键部分。Puppet是一款强大的自动化运维工具,通过定义资源状态和关系,确保系统始终处于期望配置状态。本文介绍Puppet的基本概念、安装配置及使用示例,帮助读者快速掌握Puppet,实现高效自动化运维。
97 4
|
27天前
|
机器学习/深度学习 人工智能 运维
基于AI的自动化事件响应:智慧运维新时代
基于AI的自动化事件响应:智慧运维新时代
100 11
|
3月前
|
机器学习/深度学习 运维 监控
智能化运维:从自动化到AIOps的演进之路####
本文深入探讨了IT运维领域如何由传统手工操作逐步迈向高度自动化,并进一步向智能化运维(AIOps)转型的过程。不同于常规摘要仅概述内容要点,本摘要将直接引入一个核心观点:随着云计算、大数据及人工智能技术的飞速发展,智能化运维已成为提升企业IT系统稳定性与效率的关键驱动力。文章详细阐述了自动化工具的应用现状、面临的挑战以及AIOps如何通过预测性分析和智能决策支持,实现运维工作的质变,引领读者思考未来运维模式的发展趋势。 ####
|
3月前
|
机器学习/深度学习 数据采集 人工智能
智能化运维:从自动化到AIOps的演进与实践####
本文探讨了智能运维(AIOps)的崛起背景,深入分析了其核心概念、关键技术、应用场景及面临的挑战,并对比了传统IT运维模式,揭示了AIOps如何引领运维管理向更高效、智能的方向迈进。通过实际案例分析,展示了AIOps在不同行业中的应用成效,为读者提供了对未来智能运维趋势的洞察与思考。 ####
151 1

热门文章

最新文章