关闭
当前位置:首页 - 西甲联赛 - 正文

冒险岛2,5分钟让你用Python作出最精巧的Powerpoint-在线汽车维修疑问支持网站,为您的新车保驾护航

admin 2019-05-22 402°c

介绍

PowerPoint在大多数商业环境中被广泛运用。本文向您展现怎么运用python经过运用python主动创立PowerPoint幻灯片。

5分钟让你用Python作出最精巧的Powerpoint

在前面的文章里,咱们解说了很棒的python库,用于创立和更新PowerPoint文件:。该API对错常有据可查所以它是很简略运用。仅有扎手的部分是了解PowerPoint文档结构,包括各种主布局和元素。一旦了解了基础知识,主动创立自己的PowerPoint幻灯片就相对简略了。本文将介绍运用pandas读取和剖析某些Excel数据,创立表格以及构建可嵌入PowerPoint文件的图形的示例。

先夹乳来看看霍尼韦尔制造的精巧PPT作用吧:

精巧PPT作用1

精巧PPT作用2

精巧PPT作用3

目不暇接了吧,让咱们赶忙向下学习。

PowerPoint文件基础知识

Python-pptx能够创立空白的PowerPoimessageint文件,但大多数人更乐意运用能够运用您自己的内容自界说的预界说模板。Python-pptx的API十分简略地支撑这个进程,只需您了解模板的一些内容即可。

在深杨受成入研讨一些代码示例之前,您需求了解两个要害组件:幻灯片布局占位符。鄙人面的比如中,有两个不同布局的示例以及模板的占位符,能够在其间填充内容。

鄙人图中,能够看到咱们正在运用布局0,而且幻灯片上的索引1处有一个占位符。

在此图画中,咱们运用布局1来取得彻底不同的外观。

模板让作业更轻松,创立了一个简略的独立脚本,该脚本选用模板并运用各种元素对其进行符号。冒险岛2,5分钟让你用Python作出最精巧的Powerpoint-在线轿车修理疑问支撑网站,为您的新车保驾护航

这里是程序源码,不要着急,看起来许多,可是咱们下面会逐个解说。

analyze_ppt.py

首要模块功用

开端解说程序首要的功用:

def analyze_ppt(input, output):
""" Take the input file and analyze the structure.
The 冒险岛2,5分钟让你用Python作出最精巧的Powerpoint-在线轿车修理疑问支撑网站,为您的新车保驾护航output file contains marked up information to make it easier
for generating future powerpoint templates.
"""
prs = Presentation(input)
# Each powerpoint 中国证监会file has multiple layouts
# Loop through them all and see where the various elements are
for index, _ in enumerate(prs.slide_layouts):
slide = prs.slides.add_slide(prs.slide_layouts[index])
# Not every slide has to have a title
try:
title = slide.shapes.title
title.text = 'Title佐野千寻 for Layout {}'.format(index)
except AttributeError:
print("No Title for Layout {}".format(index))
# Go through all the placeholders and identi坂田银时的火影生计fy them by index and type
for shape in slide.placeholders:
if s冒险岛2,5分钟让你用Python作出最精巧的Powerpoint-在线轿车修理疑问支撑网站,为您的新车保驾护航hape.is_placeholder:
phf = shape.placeholder_format
# Do not overwrite the title which is just a special placeholder
try:
if 'Title' not in shape.text:
shape.text = 'Placeholder index:{} type:{}'.format(phf.idx, shape.name)
except AttributeError:
print("{} has no text attribute".format(phf.type))
print('{} {}'.format(phf.idx, shape.name))
prs.save(output)

此函数的根本流程是循环并创立源PowerPoint文件中包括的每个布局的示例。然后在每张幻灯片上,它将填充标题(假如存在)。最终,它将遍历模板中包括的一切占位符,并显现占位符的索引以及类型。

假如你想自己尝亲吻视频大全床试一下:

python analyze_ppt.py simple-template.ppt simple-template-markup.ppt

创立自己的PowerPoint

下面不详细触及pandas详细数据操作,因而在深化研讨代码之前保证您对它有了解是有协助的。让咱们从程序的输入和根本shell开端:

from __future__ imp风流僵尸的都市生活ort print_function
f冒险岛2,5分钟让你用Python作出最精巧的Powerpoint-在线轿车修理疑问支撑网站,为您的新车保驾护航rom pptx import Presentation
from pptx.util import Inches
import argparse
import pandas as pd
import numpy as np
from datetime import date
import matplotlib.pyplot as plt
import seaborn as sns
# Functions go here
if __name__ == "__main__":
args = parse_args()
df = pd.read_excel(args.report.name)
report_d冒险岛2,5分钟让你用Python作出最精巧的Powerpoint-在线轿车修理疑问支撑网站,为您的新车保驾护航ata = create_pivot(df巴旦木和杏仁的差异)
create_chart(df, "report-imag捕俘拳全套教育视频e.png")
create_ppt(args.infile.name, args.outfile.name, report_data, "report-image.png")
在创立命令行args之后,将源Excel文件读入pandas DataFrame。接下来,咱们运用该DataFrame作为输入来创立数据的Pivot_table摘要:
def create_pivot(df, index_list=["Manager何中华", "Rep", 萍聚冒险岛2,5分钟让你用Python作出最精巧的Powerpoint-在线轿车修理疑问支撑网站,为您的新车保驾护航"Product"],
value_list=["Price", "Quantity"]):
"""
Take a DataFrame and create a pivot table
Return it as a DataFrame pivot table
"""
table = pd.pivot_table(df, index=index_list,
values=value_list,
aggfunc=[np.sum, np.mean], fill_value=0)
return table
下一部分剖析是按帐户创立出售成绩的简略条形八珍汤图:
def create_chart(df, filename):
""" Create a simple bar chart saved to the filename based on the dataframe
passed to the function
"""
df['total'] = df['Quantity'] * df['Price']
final_plot = df.groupby('Name')['total'].sum().order().plot(kind='barh')
fig = final_plot.get_figure()
# Size is the same as the PowerPoint placeholder
fig.set_size_inches(6, 4.5)
fig.savefig(filename, bbox_inches='tight', dpi=600)
这是图画的缩略图:

现已完成了图表和数据透视表。现在,将根据给定的PowerPoint模板文件将该图表嵌入到新的PowerPoint文件中。

在深化下面的叙述前,有几点需求留意。需求知道要运用的布局以及要填充内容的方位。在检查输出时,analyze_ppt.py 咱们知道标题幻灯片是布局0,而且它在占位符1处具有title特点和副标题。

这是咱们用来创立输出PowerP第五元素oint的函数的最初:

def create_ppt(input, output, report_data, chart):
""" Take the input powerpoint file and use it as the template for the output
file.
"""
prs = Presentation(input)
# Use the output from analyze_ppt to understand which layouts and placeholders
# to use
# Create a title slide first
title_slide_layout = prs.slide_layouts[0]
slide = prs.slides.add_slide(title_slide_layout)
title = slide.shapes.title
subtitle = slide.placeholders[1]
title.text = "Quarterly Report"
subtitle.text = "Generated on {:%m-%d-%Y}".format(date.today())
此代码根据咱们的输入文件创立新的演示文稿,增加单个幻灯片并填充幻灯片上的标题和副标题。它看起来像这样:

很帅吧?

下一步是将图片嵌入幻灯片中。

从之前的剖析中,咱们知道想要运用的图形幻灯片是布局索挠脚心作文引8,因而咱们创立一个新幻灯片,增加标题然后将图片增加到占位符1.最终一步在占位符2处增加了一个副标题。

# Create the summary graph
graph_slide_layout = prs.slide_layouts[8]
slide = prs.slides.add_slide(graph_slide_layout)
title = slide.shapes.title
title.text = "Sales by account"
placeholder = slide.placeholders[1]
pic = placeholder.insert_picture(chart)
subtitle = slid转运珠e.placeholders[2]
subtitle.text = "Results consistent with last quarter"
这是咱们的创作:

关于演示文稿的最终部分,咱们将为创立一个出售绩效表。

这是作用截图:

在PowerPoint中创立表是一个好消息,也有一个坏消息。好消息是有一个API能够创立一个。坏消息是您无法运用内置API轻松将pandas DataFrame转换为表格。可是,十分走运,有人现已为咱们完成了一切艰苦的作业并创立了。
这段优异的代码选用DataFrame并将其转换为PowerPoint兼容表。我唐突地将一部分内容包括在我的剧本中。原始版别具有更多我没有运用的功用,因而我主张您检查回购并在自己的代码中运用它。

# Create 皇室迷萌宝物a slide for each manager

for manager in report_data.index.get_level_values(0).unique():

slide = prs.slides.add_slide(prs.slide_layouts[2])

title = slide.shapes.title

title.text = "Report for {}".format(manager)

top = Inches(1.5)

left = Inches(0.25)刷卡舞的舞蹈视频

width = 冒险岛2,5分钟让你用Python作出最精巧的Powerpoint-在线轿车修理疑问支撑网站,为您的新车保驾护航Inches(9.25)

height = Inches(5.0)

# Flatten the pivot table by resetting the index

# Create a table on the slide

df_to_table(slide, report_data.xs(manager, level=0).reset_index(),

left, top, width, height)

prs.save(output)

该代码将每个成绩从pivot表中取出,并构建一个包括摘要数据的简略DataFrame。然后运用 df_to_table 将DataFrame转换为PowerPoint兼容表。

完好的代码看起来像这样:

python create_ppt.py simple-template.pptx sales-funnel.xlsx myreport.pptx

定论

阅览本文后,假如下次需求用PowerPoint中创立一堆陈述时,这是一种让你免于996的好办法!欣赏请谈论或转发,有更好主张请留言,咱们会继续优化这篇文章。

标签: 未定义标签
admin 14文章 0评论 主页

  用户登录