整理博客不易,如需转载请注明出处 !
手动反爬:【Python办公自动化】文件管理
https://blog.csdn.net/Lyun911/article/details/114440541
安装:pip install -i https://pypi.tuna.tsinghua.edu.cn/simple python-docx
文档:https://python-docx.readthedocs.io/en/latest/
功能:可以创建、修改Word(.docx)文件
Word 的结构:
Document:文档
Paragraph:段落
Run:文字块:在每一个段落中,具有相同字体格式的连续内容 为一个Run
作业1:词频计数
from docx import Document
# 读取 .docx 文件
doc = Document('doc_test.docx')
print(doc.paragraphs)
# [, ]
# 可以看出里面有两个段落
for p in doc.paragraphs:
print(p.text)
p = doc.paragraphs[1]
runs = p.runs
for run in runs:
print(run.text)
作业2:请假条
创建文档
添加:标题/ 文字块/ 分页/ 图片/ 表格
保存文档
from docx import Document
from docx.shared import Cm
doc = Document()
doc.add_heading('Title level 1', level = 1)
para1 = doc.add_paragraph('added paragraph 1')# 赋值可以方便之后修改段落内容
doc.add_paragraph('added paragraph 2')# 也可以不赋值 直接添加段落内容
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
doc.add_page_break()
doc.add_picture('图片.png')
doc.add_picture('图片.png', width = Cm(5))
doc.add_picture('图片.png', height = Cm(5))# 宽/高 比例自动调整
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])
doc.save('./2.3 test docx.docx')
样式/ 颜色/ 字体
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')
对齐方式/ 行间距/ 段前段后间距
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磅
作业:
编写一个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")} 次')
作业:
编写一个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')
作业:
编写一个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. 休会
主持人姓名在时间宣布休会。
纪要提交者:姓名
纪要审批者:
待补