内容正文:
情景四 Python与办公自动化
任务
mission
1
2
3
word自动化
ppt自动化
excel自动化
2
任务一 word自动化
一.新建和写入word文档
1.新建word文档
在python-docx中,一个word文档用一个Document对象来表示,所以我们要新建一个word文档,只需要实例化一个Document对象即可,参考代码如下。
from docx import Document
#第一步:创建一个文档对象doc1
doc1 = Document()
#第二步:对象调用save()保存文档
doc1.save('cqcvc.docx')
print('创建文档成功!')
4
一.新建和写入word文档
2.写入word文档
在编辑word文档前,首先需要选中操作对象,所以把文档标题、段落信息等对象先写入到文档中,写入文档参考代码如右侧所示。
from docx import Document
#读取现有的文档
doc1 =Document('cqcvc.docx')
#添加文档总标题和段落
doc1.add_heading('重庆城市职业学院简介',level=0)
doc1.add_paragraph('重庆城市职业学院是教育部备案,\
重庆市人民政府举办,重庆市教委主管的全日制公办高等院校。')
#添加一级标题和段落
doc1.add_heading('办学理念',level=1)
doc1.add_paragraph('行大道 启大智 铸大匠 通大悟')
doc1.add_heading('校训',level=1)
doc1.add_paragraph('求德 求知 求技 求悟')
doc1.add_heading('校风',level=1)
doc1.add_paragraph('坚卓勤勉 自强奋进')
doc1.add_heading('教风',level=1)
doc1.add_paragraph('德润匠心 善导业精')
doc1.add_heading('学风',level=1)
doc1.add_paragraph('红色匠心 精益求精')
#保存文档
doc1.save('cqcvc.docx')
print('写入文档成功!')
5
二. 插入图片和表格
1.插入图片
如果只是插入几幅图片、几个表格当然可以直接用应用软件来完成;但是如果要处理的图片和表格数据巨大,有成长上万张图片和表格需要处理,此时首选编写程序来快速、批量完成重复操作。
from docx import Document
from docx.shared import Pt
doc1 = Document()
doc1.add_heading('文档中插入图片和表格',level=0)
#插入图片cqcvc.jpg
doc1.add_picture('D:\\yd\\cqcvc.jpg',Pt(435),Pt(230))
print('文档插入图片成功!')
……
6
二. 插入图片和表格
1.插入表格
#插入3行3列的表格,'Table Grid'是表格边框常用的样式
table = doc1.add_table(rows=3,cols=3,style='Table Grid')
#定位第一个表格
table = doc1.tables[0]
table.add_row() #在表格最底部添加一行
# 标题行单元格添加关键字
hc= table.rows[0].cells
hc[0].text='学号'
hc[1].text='姓名'
hc[2].text='年龄'
row1 = table.rows[1]
row1.cells[0].text = '2022001'
row1.cells[1].text = '张三'
row1.cells[2].text ='18'
row2 = table.rows[2]
row2.cells[0].text = '2022002'
row2.cells[1].text = '李四'
row2.cells[2].text ='19'
row3= table.rows[3]
row3.cells[0].text = '2022003'
row3.cells[1].text = '王五'
row3.cells[2].text ='20'
print('文档插入表格成功!')
doc1.save('insert_pic_table.docx')
print('文档保存成功!')
from docx import Document
from docx.shared import Pt
doc1 = Document()
doc1.add_heading('文档中插入图片和表格',level=0)
#插入图片cqcvc.jpg
doc1.add_picture('D:\\yd\\cqcvc.jpg',Pt(435),Pt(230))
print('文档插入图片成功!')
7
三. 读取word文档
如果需要读取word文档中的内容,参考代码如下,运行后输出的结果如下所示。
from docx import Document
# 打开文档
document = Document('style.docx')
# 读取标题、段落、列表内容
ps = [ paragraph.text for paragraph in document.paragraphs]
for p in ps:
print(p)
# 读取表格内容
ts = [table for table in document.tables]
for t in ts:
for row in t.rows:
for cell in row.cells:
print(cell.text, end=' ')
print()
8
三. 任务一 小结
通过本次任务的学习和实践,使我们了解了python-docx第三方库的作用,掌握了文档的基本结构,并且通过综合实训的引导,能够熟练完成文档的创建和修改、在文档中插入图片和表格、样式的创建和应用以及编写程序读取指定的word文档。建议同学们将有针对性的部分功能尽量使用函数来完成,需要的时候直接调用该函数即可,不需要再进行重复编码。
9
任务二 excel自动化
一.创建和写入excel
1. 使用xlwt创建和写入excel
xlwt模块只支持不超过65535条数据的excel 97-2003版本,保存的扩展名为*.xls,一旦数据量过大就无法使用了,所以在此只进行简单的介绍。使用xlwt模块创建和写入excel的步骤一共有四步分别是:
(1)创建工作簿;
(2)创建工作表、;
(3)在工作表中填充数据;
(4)保存文件。
11
一.创建和写入excel
2. 使用openpyxl创建和写入excel
openpyxl主要针对excel 2007年之后的版本(.xlsx),可以读写xlsx、xlsm、xltx、xltm等目前常见的Excel文档,可以进行文件的读写、单元格操作、公式、绘图、数据透视表等功能,它对文件大小没有限制,可以轻松实现Excel自动化办公,参考代码如下,运行后的效果如下所示。
from openpyxl import Workbook
wb = Workbook() #创建一个工作簿
ws = wb.active #获取第一个工作表
ws.title='城职七大特色专业群' #设置工作表名称
ws['A1'] = '序号' # 设置第1列第1行单元格内容
ws['B1'] = '专业群'
data={ 1:'工业机器人技术', 2:'市场营销', 3:'市场营销', 4:'大数据技术',
5:'航空技术', 6:'智能建造', 7:'文旅康养和创意设计' }
row=2 # 从第2行开始
for key, value in data.items():
ws.append([key, value]) #一次添加一行数据(必须是可迭代对象)
wb.save("openpyxl.xlsx") # 保存 Excel 文件
print("创建和写入excel成功")
12
二. 读取excel文件
1.使用xlrd读取excel文件
在成功安装xlrd库后,使用xlrd读取xlsx文件时,通常会出现如下的错误提示:
xlrd.biffh.XLRDError: Excel xlsx file; not supported
这是因为新版的xlrd(2.0.1版本) 已删除了对 xls 文件以外的任何内容的支持,不支持xlsx文件; 如果想要使用xlrd读取xlsx文件,则需要卸载新版后再安装旧版xlrd(1.2.0版本),安装命令如下:
pip uninstall xlrd
pip install xlrd==1.2.0
13
二. 读取excel文件
1.使用xlrd读取excel文件
import xlrd
data=xlrd.open_workbook('openpyxl.xlsx')
print('工作表数量:',data.nsheets) #获取工作表数量
print('工作表名称:',data.sheet_names()) #以列表返回所有工作表名称
table=data.sheet_by_index(0) #返回第1个工作表
rowcount=table.nrows #当前工作表行数
colcount=table.ncols #当前工作表列数
cellinfor1 = table.cell_value(0, 1) #获取指定行列中单元格的值
cellinfor2 = table.cell_value(7, 1)
print('第1个工作表行数:',table.nrows)
print('第1个工作表列数:',table.ncols)
print('第1个工作表1行2列的值为:',cellinfor1)
print('第1个工作表8行2列的值为:',cellinfor2)
print('文件读取成功')
14
二. 读取excel文件
2.使用openpyxl读取excel文件
openpyxl中列和行的起始标识不再是从0开始,而是1开始的;从excel中读取出来的数据只有两种类型:即数值类型和字符串类型,参考代码和运行后的效果如下图所示。
15
三. 读取excel文件批量生成word试卷
完成本次任务的操作步骤:
(1)导入xlrd、python-docx,打开题库文件、获取第一个工作表;
(2)使用xlrd读取准备好的“data.xlsx”题库文件,将试题信息全部保存到列表中;
(3)使用for循环语句控制批量生成试卷的数量;
(4)通过python-docx创建文档对象,并将读取到的题库内容按样式写入word文档后保存。
word文档试卷打开效果如图所示,以上功能请同学们以小组为单位协同完成。
16
四. 任务二 小结
通过本次任务的学习和实践,使我们了解了常用的excel第三方库,掌握了xlwt、xlrd、openpyxl的使用方法,并且通过综合实训的引导,能够熟练完成excel文档的创建、写入和读取。同时将excel和word结合应用起来,完成读取excel数据批量生成word试卷的强化训练,很好地起到了巩固提高、融会贯通的目的。
17
任务三 ppt自动化
一. python-pptx简介
python中ppt的基本结构分别用:Slide(幻灯片):就是演示文稿中每一页的页面;Shape(方框、形状、文本框;Run(文字块):一般为较少字符和Paragraph(段落)来表示。在幻灯片中添加文本框、图形、图片、表格和图表的方法如下图所示。
19
添加文本框 add_textbox( )
添加图形 add_shape( )
添加图片add_picture( )
添加表格 add_table( )
添加图表 add_chart( )
二. 创建pptx
通过add_slide( )插入自定义版式的幻灯片,创建pptx参考代码和创建后的演示文稿效果如下所示。
import pptx
#得到演示文稿的对象obj
obj=pptx.Presentation()
#插入幻灯片add_slide()
obj.slides.add_slide(obj.slide_layouts[0])#版式1
obj.slides.add_slide(obj.slide_layouts[1])#版式2
obj.slides.add_slide(obj.slide_layouts[2])#版式3
#保存pptx文稿
obj.save('ppt1.pptx')
print('任务完成')
20
二. 写入pptx
import pptx
#读取(创建)一个演示文稿对象
obj=pptx.Presentation('ppt1.pptx')
#访问第一张幻灯片
slide=obj.slides[0]
#修改占位符里的内容(slide.placeholders)
center_title1 = slide.placeholders[0] # 主标题
sub_title1 = slide.placeholders[1] # 副标题
center_title1.text = '重庆城市职业学院'
sub_title1.text = '重庆市永川区兴龙大道1099号'
#访问第二张幻灯片
slide=obj.slides[1]
center_title2 = slide.placeholders[0] # 主标题
sub_title2 = slide.placeholders[1] # 副标题
center_title2.text = '学院简介'
sub_title2.text = '重庆城市职业学院是教育部备案,重庆市人民政府举办,\
重庆市教委主管的全日制公办高等院校。'
obj.save('ppt1.pptx')
1.写入标题和副标题
在指定幻灯片中写入标题和副标题的参考代码如下右侧,创建后的演示文稿效果如下图所示。
21
二. 写入pptx
import pptx
from pptx.util import Cm,Pt
#读取(创建)一个演示文稿对象
obj=pptx.Presentation('ppt1.pptx')
#访问第二张幻灯片
slide=obj.slides[1]
# 设置文本框和左边、顶端的距离及宽度和高度
left=Cm(8);top=Cm(13); width=Cm(15); height=Cm(3)
# 添加文本框并写入内容
text_box = slide.shapes.add_textbox(left, top, width, height)
tf = text_box.text_frame
tf.text = '地址:重庆市永川区兴龙大道1099号'
p1 = tf.add_paragraph()
p1.text = '招生热线:023-49578000 49579000'
p1.line_spacing = 1.5 # 1.5倍行距
p1.font.name = '仿宋' #字体
p1.font.bold = True #加粗
p1.font.size = Pt(20) #字号16
p2 = tf.add_paragraph()
p2.text = '电子信箱:info@cqcvc.edu.cn'
p2.font.name = '仿宋'
p2.font.bold = True
p2.font.size = Pt(20)
obj.save('ppt1.pptx')
print('任务完成')
2.添加文本框并写入内容
在幻灯片指定位置通过add_textbox( )插入文本框,参数依次为left, top, width, height ( 文本框和左边、顶端的距离以及文本框的宽度和高度值)。
22
二. 写入pptx
import pptx
from pptx.enum.shapes import MSO_SHAPE
from pptx.dml.color import RGBColor
from pptx.util import Cm,Pt
#读取(创建)一个演示文稿对象
obj=pptx.Presentation('ppt1.pptx')
slide=obj.slides[2]#访问第三张幻灯片
#1.添加自选图形
left=Cm(6);top=Cm(2); width=Cm(12); height=Cm(3)
shape=slide.shapes.add_shape(MSO_SHAPE.ROUNDED_RECTANGLE, left, top, width, height)
#设置填充色(纯色)
fill=shape.fill
fill.solid()
fill.fore_color.rgb=RGBColor(102,102,255)
#设置边线框颜色和宽度, left, top
line=shape.line
line.color.rgb=RGBColor(255,255,255)
line.color.brightness = 0.5
line.width=Pt(2)
#2.添加图片并设置距离左边、顶端距离以及图片宽度、高度
left = top = Cm(6)
width = height=Cm(5)
#省略width, height则是图片原始大小
pic = slide.shapes.add_picture('d:\\yd\\cqcvc.jpg', left, top)
obj.save('ppt1.pptx')
print('任务完成')
3.添加图形和图片
在幻灯片指定位置通过add_shape( ) 添加自选图形,第一个参数为自选图形类型,后续参数依次对应距离左边,距离顶端,图形宽度,图形高度;在幻灯片指定位置通过add_picture( ) 添加图片,后续参数依次对应图片路径,距离左边,距离顶端,图片宽度,图片高度。
23
二. 写入pptx
4.写入表格和图表
使用add_table( ) 写入指定行数、列数的表格,后续参数依次对应距离左边,距离顶端,表格宽度,表格高度,表格创建完成后,合并单元格通过 merge 方法,通过 cell 方法获取到指定单元格,设置 text 属性为单元格设置文本内容。
使用add_chart( ) 添加图表,第一个参数为图标类型,后续参数依次为 left,top,width,height。
24
三. 读取pptx
读取pptx参考代码如下,读取后输出结果如图所示。
import pptx
#读取演示文稿对象
obj=pptx.Presentation('ppt1.pptx')
slides=len(obj.slides)
print('当前文件一共有',str(slides),'页幻灯片')
for slide in obj.slides: #获取幻灯片
for shape in slide.shapes: #获取形状
if shape.has_text_frame: #是否有文字
text_frame=shape.text_frame
#获取形状中的段落
for paragraph in text_frame.paragraphs:
print(paragraph.text)
print('读取任务完成')
25
四. 任务三 小结
通过本次任务的学习和实践,使我们了解了python-pptx第三方库和pptx的基本结构,掌握了创建pptx的方法,并且通过综合实训的引导,能够熟练的向指定幻灯片写入标题和副标题、添加文本框并写入内容、添加图形和图片、写入表格和图表。同时还抛出了读取excel数据按模板批量生成多张幻灯片的强化训练,很好地起到了学以致用、学用相长的目的。
26
$$