的-黑科技-办公神器-Python-Python-PPT-批量制作 (学霸的黑科技)
本文将介绍如何使用openpyxl和python-pptx库来批量制作PPT奖状。本文假设你已经安装了 Python 和这两个库。
本文的场景是:一名基层人员,要给一次比赛活动获奖的500名选手制作奖状,并且奖状需要做成PPT在颁奖大会上电子展示,手上有一份名单list.xlsx和PPT奖状模板temp.pptx。
准备工作
我们需要导入openpyxl和python-pptx库,以及其他一些辅助库,如下:
import openpyxl
from pptx import Presentation
from pptx.util importInches, Pt
import os
我们需要定义一些常量,如文件名,字体,颜色等,如下:
文件名
EXCEL_FILE = 'list.xlsx'
PPT_FILE = 'temp.pptx'
OUTPUT_DIR = 'output'
字体
FONT_NAME = '微软雅黑'
FONT_SIZE = 36
FONT_COLOR = 'FFFFFF'
占位符索引
NAME_INDEX = 0
AWARD_INDEX = 1
DATE_INDEX = 2
读取Excel文件
wb = openpyxl.load_workbook(EXCEL_FILE)
ws = wb.active
获取获奖者列表
awardees = []
for row in ws.iter_rows(min_row=2, values_only=True):
name, award, date = row
awardees.append((name, award, date))
最后,我们需要创建一个输出目录,用来存放生成的PPT文件,如下:
创建输出目录
if not os.path.exists(OUTPUT_DIR):
os.mkdir(OUTPUT_DIR)
生成PPT奖状
我们需要加载PPT模板文件,获取幻灯片母版,以及占位符对象,如下:
加载PPT模板文件
prs = Presentation(PPT_FILE)
获取幻灯片母版
slide_layout = prs.slide_layouts[0]
获取占位符对象
placeholders = slide_layout.placeholders
我们需要遍历获奖者列表,为每个获奖者生成一个PPT奖状,如下:
for i, awardee in enumerate(awardees):
name, award, date = awardee
创建新幻灯片
slide = prs.slides.add_slide(slide_layout)
填充占位符内容
for placeholder in placeholders:
if placeholder.type == PLACEHOLDER_TYPE.TEXT:
if placeholder.idx == NAME_INDEX:
placeholder.text = name
elif placeholder.idx == AWARD_INDEX:
placeholder.text = award
elif placeholder.idx == DATE_INDEX:
placeholder.text = date
设置字体
for shape in slide.shapes:
if shape.has_text_frame:
text_frame = shape.text_frame
for paragraph in text_frame.paragraphs:
for run in paragraph.runs:
run.font.name = FONT_NAME
run.font.size = Pt(FONT_SIZE)
run.font.color.rgb = FONT_COLOR
保存幻灯片
output_file = os.path.join(OUTPUT_DIR, f'{i+1}.pptx')
slide.save(output_file)
最后,我们需要保存生成的PPT文件,如下:
保存生成的PPT文件
output_file = os.path.join(OUTPUT_DIR, 'awards.pptx')
prs.save(output_file)
总结
本文介绍了如何使用openpyxl和python-pptx库来批量制作PPT奖状。本文通过一个实际的场景,展示了如何读取Excel文件,写入PPT文件,以及使用PPT占位符来填充内容。
python可以实现哪些办公自动化?
Python办公自动化主要是批量化、自动化、定制化解决数据问题,目前主要分为三大块:自动化office、自动化机器人、自动化数据服务。
1、自动化office,包括对excel、word、ppt、email、pdf等常用办公场景的操作,
python都有对应的工具库,可以很方便的调用。
提供一些常见的核心库供大家参考使用。
excel:xlwings、xlrd、xlwt、openpyxl
word:Python-docx
email:smtplib(SMTP服务)、email(解析处理)、yagmail(全能)
pdf:pypdf2、pdfminer、pdfplumber
picture:PIL
学这些会撸python是前提,对于小白来说自学也不是件容易的事,需要花相当的时间去适应python的语法逻辑,而且要坚持亲手敲代码,不断练习。
2、自动化机器人,用来提高常规且高频的服务,比如微信客服、自动交易系统、实时信息抓取、QQ聊天机器人等。
例如
web自动化测试:selenium
模拟鼠标键盘:pymouse、pywinauto、pyautogui
微信自动化:wechatby
Python自动化办公其实并不难,但也需要有Python基础,起码得会写脚本,不然尽管有自动化接口也用不了。
很多人入了很长时间门,还是在门外徘徊,我觉得这是学习方法的问题。学习编程一定要多练习,基础+实战同步走,这样才能最快掌握Python。
可能你会问,看书看不进去怎么办,那就换条路子,你可以去看视频、看网络教程、逛github,都是很不错的方法.
3、自动化数据服务,主要是提供流式数据服务,从数据获取、数据处理、数据建模、数据可视化,到最终生成数据报告,通过python搭建起完整数据链条。
数据抓取:requests、scrapy
数据处理:pandas、numpy
数据建模:scipy、scikit-learn、statesmodel、keras
数据可视化:matplotlib、seaborn、bokeh、pyecharts
数据报表:dash
以python操作excel为例,使用xlwings生成自动化图表。
1、简单介绍xlwings
接下来实操演练:
1、准备一个表格
2、对表格进行各种操作
导入xlwings库,命名为xw
importxlwingsasxw
建立与活动工作簿的连接
#这里使用books方法,引用工作簿
wb=[商品清单]
查看工作簿的名字
商品清单
实例化工作表对象
sht=[表一]
查看表一中A1单元格的内容
#标准用法
品类
#简洁用法
品类
#索引用法
品类
查看表一中A1-D8所有单元格的内容
输出:
[[品类,数量(件),单价(元),总价(元)],
[坚果,5.0,30.0,150.0],
[罐头,9.0,10.0,90.0],
[牛肉,3.0,60.0,180.0],
[果汁,10.0,9.0,90.0],
[蜂蜜,2.0,80.0,160.0],
[进口零食,4.0,70.0,280.0],
[合计,33.0,43.6664,950.0]]
sht[:8,:4]
输出:
[[品类,数量(件),单价(元),总价(元)],
[坚果,5.0,30.0,150.0],
[罐头,9.0,10.0,90.0],
[牛肉,3.0,60.0,180.0],
[果汁,10.0,9.0,90.0],
[蜂蜜,2.0,80.0,160.0],
[进口零食,4.0,70.0,280.0],
[合计,33.0,43.6664,950.0]]
将表一B2单元格5改为7
向表二中导入dataframe类型数据
第一步:连接表二
第二步:生成一个dataframe类型数据集
第三步:导入表二
sht_2=[表二]
importpandasaspd
df=({姓名:[小王,小张,小李],年龄:[23,26,19]})
导入:
sht_(B1)=df
向表二中导入numpy数组
importnumpyasnp
obj=([[1,2,3],[4,5,6]])
输出:
array([[1,2,3],
导入:
sht_(F1)=obj
将excel中数据导出为DataFrame格式
sht_(B1)(,expand=table)
用matplotlib绘图并将图片贴到excel上
fig=(figsize=(4,4))
([1,2,3,4,5])
sht_(fig,name=MyPlot,update=True)
输出:
<PictureMyPlotin<Sheet[商品清单]表二>>
修改表三中A1单元格的宽和高
连接表三
sht_3=[表三]
查看A1单元格的宽和高
#查看列宽
sht_(A1)_width
#查看行高
sht_(A1)_height
A1单元格高改为15.6,宽改为2.2
sht_(A1)_width=2.2
sht_(A1)_height=15.6
修改表三B1单元格颜色
#查看B1单元格颜色
#修改B1单元格颜色为黑色
sht_(B1)=(0,0,0)
写一个自动化的小脚本
sht_(A1:AZ48)_width=1.1
sht_(A1:AZ48)_height=7.8
list_1=_csv()
fori,jinlist_1:
sht_3[int(i),int(j)]=(255,25,0)
foriinrange(30):
forjinrange(40):
c=sht_3[i,j]
ifc==(255,0,0):
list_((i,j))
这些小例子都能跑,你可以放自己电脑上运行下,或者手敲每个代码,这样绝对能高效率掌握。
如果对python语法还不熟悉,最好先把框架熟悉一遍,多做些练习。
python 怎么设置ppt图表区的颜色以及给图表区加上边框
Python Code:
免责声明:本文转载或采集自网络,版权归原作者所有。本网站刊发此文旨在传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及版权、内容等问题,请联系本网,我们将在第一时间删除。同时,本网站不对所刊发内容的准确性、真实性、完整性、及时性、原创性等进行保证,请读者仅作参考,并请自行核实相关内容。对于因使用或依赖本文内容所产生的任何直接或间接损失,本网站不承担任何责任。