【Python办公自动化】docx库的使用(读取/编辑/调整 docx文档)

Python办公自动化 - docx库的使用

  • 1 简介
    • 1.1 docx库
    • 1.2 docx文件结构
  • 2 读取
    • 2.1 读取文件 docx.Document()
    • 2.2 读取段落 doc.paragraphs
    • 2.3 读取文字块 doc.runs
  • 3 编辑
    • 3.1 创建文档
    • 3.2 添加标题
    • 3.3 添加段落
    • 3.4 添加文字块
    • 3.5 添加分页
    • 3.6 添加图片
    • 3.7 添加表格
    • 3.8 保存
  • 4 文字/段落 样式调整
    • 4.1 修改文字样式
    • 4.2 修改段落样式
  • HomeWork
    • 作业1:词频计数
    • 作业2:请假条
    • 作业3:会议模板


整理博客不易,如需转载请注明出处 !

手动反爬:【Python办公自动化】文件管理

https://blog.csdn.net/Lyun911/article/details/114440541


1 简介

1.1 docx库

安装:pip install -i https://pypi.tuna.tsinghua.edu.cn/simple python-docx
文档:https://python-docx.readthedocs.io/en/latest/
功能:可以创建、修改Word(.docx)文件

1.2 docx文件结构

Word 的结构:
	Document:文档
	Paragraph:段落
	Run:文字块:在每一个段落中,具有相同字体格式的连续内容 为一个Run

2 读取

作业1:词频计数

2.1 读取文件 docx.Document()

from docx import Document

# 读取 .docx 文件
doc = Document('doc_test.docx')

2.2 读取段落 doc.paragraphs

print(doc.paragraphs)
# [, ]
# 可以看出里面有两个段落
for p in doc.paragraphs:
    print(p.text)

2.3 读取文字块 doc.runs

p = doc.paragraphs[1]
runs = p.runs
for run in runs:
    print(run.text)

3 编辑

作业2:请假条

创建文档
添加:标题/ 文字块/ 分页/ 图片/ 表格
保存文档

3.1 创建文档

from docx import Document
from docx.shared import Cm

doc = Document()

3.2 添加标题

doc.add_heading('Title level 1', level = 1)

3.3 添加段落

para1 = doc.add_paragraph('added paragraph 1')# 赋值可以方便之后修改段落内容
doc.add_paragraph('added paragraph 2')# 也可以不赋值 直接添加段落内容

3.4 添加文字块

para3 = doc.add_paragraph('added paragraph 3')
para3.add_run('added normal run')
para3.add_run('added bold run').bold = True
para3.add_run('added italic run').italic = True

3.5 添加分页

doc.add_page_break()

3.6 添加图片

doc.add_picture('图片.png')
doc.add_picture('图片.png', width = Cm(5))
doc.add_picture('图片.png', height = Cm(5))# 宽/高 比例自动调整

3.7 添加表格

records = [['No.', 'Name'], [1, 'Mike'], [2, 'Jack']]
table = doc.add_table(rows = 3, cols = 2)
for r in range(3):
    cells = table.rows[r].cells
    for c in range(2):
        cells[col].text = str(records[r][c])

3.8 保存

doc.save('./2.3 test docx.docx')

4 文字/段落 样式调整

4.1 修改文字样式

样式/ 颜色/ 字体

from docx import Document
from docx.shared import Pt, RGBColor
# Pt:字体的大小,阿拉伯数字表示
# RGBColor:字体颜色
from docx.oxml.ns import qn
# qn:设置中文字体
# 方法:run.font.样式 = xxx


doc = Document('2.3 test docx.docx')
for paragraph in doc.paragraphs:
	for run in paragraph.runs:
		run.font.bold = True        # 加粗
		run.font.italic = True      # 斜体
		run.font.underline = True   # 下划线
		run.font.strike = True      # 删除线
		run.font.shadow = True      # 阴影
		run.font.size = Pt(20)      # 字号
		run.font.color.rgb = RGBColor(255, 255, 0)  # 颜色

		run.font.name = '微软雅黑'				# 如果是英文,则不需要加下面两行
		r = run._element.rPr.rFonts
		r.set(qn('w:eastAsia'), '微软雅黑')		# 中文时,需要加这两行

doc.save('4.4Word文档批量调整内容样式_改.docx')

4.2 修改段落样式

对齐方式/ 行间距/ 段前段后间距

from docx.enum.text import WD_ALIGN_PARAGRAPH

paragraph.alignment = WD_ALIGN_PARAGRAPH.CENTER
# 方法:paragraph.alignment = 对齐方式
# 可选的对齐方式:LEFT/CENTER/RIGHT/JUSTIFY/DISTRIBUTE/JUSTIFY_MED/JUSTIFY_HI/JUSTIFY_LOW/THAI_JUSTIFY

paragraph.paragraph_format.line_spacing = 2.0
# 注意:要使用浮点数,2.0就表示2倍行间距

paragraph.paragraph_format.space_before = Pt(12)
paragraph.paragraph_format.space_after = Pt(12)
# 设置段前间距为12磅
# 设置段后间距为12磅

HomeWork

作业1:词频计数

作业:
    编写一个Python程序,要求:
    1.打开文件Netease Q2 2019 Earnings Release- Final.docx
    2.计算关键词profit出现的次数
import docx

doc = docx.Document('./Netease Q2 2019 Earnings Release-Final.docx')
container = ''
for p in doc.paragraphs:
    container += p.text.lower()
print(f'文件中 "profit" 出现了 {container.count("profit")} 次')

作业2:请假条

作业:
    编写一个Python程序,要求:
    1.制作一个自动生成请假条Word文档的程序
    2.通过命令行提示用户输入姓名、请假原因
    3.自动生成带标题、正文内容的请假条
    4.日期自动填写今天日期
import docx
import datetime

name = input('请假申请人:')
reason = input('请假事由:')
date_begin = input('请假日起:')
date_end = input('请假日止:')


doc = docx.Document()
title = doc.add_heading('请 假 条', 0).bold = True
para1 = doc.add_paragraph(f'\n\n\t本人由于{reason}的原因,特向领导申请事假,请假日期自{date_begin}至{date_end},望批准!')
para2 = doc.add_paragraph(f'\n申请日:{datetime.datetime.now().date()}')
para3 = doc.add_paragraph(f'\n申请人:{name}')
doc.save('HomeWork 请假条.docx')

作业3:会议模板

作业:
    编写一个Python程序,要求:
    1.读取会议模板.txt文件
    2.根据其中的内容生成一个格式化后的word文档
    3.第一行为标题,要求居中且字体字号为18,加粗,微软雅黑
    4.罗马数字开头的行如I.、II.等, 要求字体字号为14,加粗,微软雅黑
    5.其它内容要求字体字号为12,微软雅黑
    6.可自行设计更丰富的样式
    7.将文档保存为会议模板.docx
会议议程
与会者: 姓名
I.	宣布开会
主持人姓名于日期时间在地点宣布召开组织/会员会名称的例会。
II.	点名
干事姓名进行了点名。与会人员如下:与会者姓名
III.	批准上次会议的纪要
干事姓名宣读了上次会议的纪要。在宣读时批准了纪要。
IV.	未决问题
a)	未决问题/讨论总结
b)	未决问题/讨论总结
V.	新业务
a)	新业务/讨论总结
b)	新业务/讨论总结
VI.	休会
主持人姓名在时间宣布休会。
纪要提交者:姓名
纪要审批者:
待补

你可能感兴趣的:(Python办公自动化,python)