Hướng dẫn how do you make a powerpoint using python? - Làm thế nào để bạn tạo một powerpoint bằng python?

Giới thiệu

Yêu nó hoặc ghê tởm nó, PowerPoint được sử dụng rộng rãi trong hầu hết các cài đặt kinh doanh. Bài viết này sẽ không tranh luận về giá trị của PowerPoint nhưng sẽ chỉ cho bạn cách sử dụng Python để loại bỏ một số sự quyết liệt của PowerPoint bằng cách tự động tạo ra các slide PowerPoint bằng cách sử dụng & nbsp; Python.

May mắn cho chúng tôi, có một thư viện Python tuyệt vời để tạo và cập nhật các tệp PowerPoint: Python-PPTX. API được ghi chép rất tốt nên nó khá dễ sử dụng. Phần khó khăn duy nhất là hiểu cấu trúc tài liệu PowerPoint bao gồm các bố cục và yếu tố chính khác nhau. Một khi bạn hiểu những điều cơ bản, việc tự động hóa việc tạo ra các slide PowerPoint của riêng bạn là tương đối đơn giản. Bài viết này sẽ đi qua một ví dụ về việc đọc và phân tích một số dữ liệu excel với gấu trúc, tạo bảng và xây dựng một biểu đồ có thể được nhúng trong tệp PowerPoint & NBSP;API is very well documented so it is pretty easy to use. The only tricky part is understanding the PowerPoint document structure including the various master layouts and elements. Once you understand the basics, it is relatively simple to automate the creation of your own PowerPoint slides. This article will walk through an example of reading in and analyzing some Excel data with pandas, creating tables and building a graph that can be embedded in a PowerPoint file.

Tệp PowerPoint & nbsp; cơ bản

Python-PPTX có thể tạo các tệp PowerPoint trống nhưng hầu hết mọi người sẽ thích làm việc với một mẫu được xác định trước mà bạn có thể tùy chỉnh với nội dung của riêng mình. API Python-PPTX, hỗ trợ quá trình này khá đơn giản miễn là bạn biết một vài điều về mẫu & NBSP của bạn.API supports this process quite simply as long as you know a few things about your template.

Trước khi lặn vào một số mẫu mã, có hai thành phần chính bạn cần hiểu: bố cục trượt và giữ chỗ. Trong các hình ảnh dưới đây, bạn có thể thấy một ví dụ về hai bố cục khác nhau cũng như các trình giữ chỗ mẫu, nơi bạn có thể điền vào nội dung & NBSP của mình.Slide Layouts and Placeholders. In the images below you can see an example of two different layouts as well as the template’s placeholders where you can populate your content.

Trong hình ảnh bên dưới, bạn có thể thấy rằng chúng tôi đang sử dụng Bố cục 0 và có một trình giữ chỗ trên slide tại Index & NBSP; 1.

Hướng dẫn how do you make a powerpoint using python? - Làm thế nào để bạn tạo một powerpoint bằng python?

Trong hình ảnh này, chúng tôi sử dụng bố cục 1 cho một hoàn toàn khác & nbsp; nhìn.

Hướng dẫn how do you make a powerpoint using python? - Làm thế nào để bạn tạo một powerpoint bằng python?

Để làm cho cuộc sống của bạn dễ dàng hơn với các mẫu của riêng bạn, tôi đã tạo ra một tập lệnh độc lập đơn giản lấy một mẫu và đánh dấu nó với các yếu tố khác nhau & nbsp;

Tôi đã giành chiến thắng giải thích tất cả các dòng mã theo từng dòng nhưng bạn có thể thấy Analyze_ppt.py trên GitHub. Đây là chức năng làm phần lớn & nbsp; công việc:

def analyze_ppt(input, output):
    """ Take the input file and analyze the structure.
    The 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 identify them by index and type
        for shape in slide.placeholders:
            if shape.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)

Luồng cơ bản của hàm này là lặp qua và tạo một ví dụ về mọi bố cục có trong tệp PowerPoint nguồn. Sau đó, trên mỗi slide, nó sẽ điền tiêu đề (nếu nó tồn tại). Cuối cùng, nó sẽ lặp đi lặp lại thông qua tất cả các trình giữ chỗ được bao gồm trong mẫu và hiển thị chỉ số của trình giữ chỗ cũng như & nbsp; loại.

Nếu bạn muốn thử nó & nbsp; chính bạn:

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

Tham khảo các tệp đầu vào và đầu ra để xem những gì bạn & nbsp; nhận được.

Tạo của riêng bạn & NBSP; PowerPoint

Đối với bộ dữ liệu và phân tích, tôi sẽ sao chép phân tích trong việc tạo các báo cáo Excel từ bảng Pivot Pivot. Bài báo giải thích các thao tác dữ liệu của gấu trúc chi tiết hơn, vì vậy sẽ rất hữu ích để đảm bảo bạn cảm thấy thoải mái với nó trước khi đi sâu hơn nhiều vào mã & nbsp;

Hãy để mọi thứ bắt đầu với các đầu vào và vỏ cơ bản của chương trình & nbsp;

from __future__ import print_function
from 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_data = create_pivot(df)
    create_chart(df, "report-image.png")
    create_ppt(args.infile.name, args.outfile.name, report_data, "report-image.png")

Sau khi chúng tôi tạo dòng lệnh ARG của chúng tôi, chúng tôi đọc tệp excel nguồn vào một bản dữ liệu gấu trúc. Tiếp theo, chúng tôi sử dụng DataFrame đó làm đầu vào để tạo bản tóm tắt pivot_table của & nbsp; data:

def create_pivot(df, index_list=["Manager", "Rep", "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

Tham khảo các báo cáo tạo excel từ bảng trục gấu nếu điều này không có ý nghĩa với & nbsp; bạn.

Phần tiếp theo của phân tích là tạo ra một biểu đồ thanh đơn giản về hiệu suất bán hàng bởi & nbsp; tài khoản:

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)

Dưới đây là phiên bản thu nhỏ của & nbsp; hình ảnh:

Hướng dẫn how do you make a powerpoint using python? - Làm thế nào để bạn tạo một powerpoint bằng python?

Chúng tôi có một biểu đồ và một bảng trục hoàn thành. Bây giờ chúng tôi sẽ nhúng thông tin đó vào một tệp PowerPoint mới dựa trên tệp PowerPoint đã cho & NBSP; tệp.

Trước khi tôi đi xa hơn, có một vài điều cần lưu ý. Bạn cần biết bố cục nào bạn muốn sử dụng cũng như nơi bạn muốn điền vào nội dung của mình. Khi nhìn vào đầu ra của analyze_ppt.py, chúng ta biết rằng slide tiêu đề là bố cục 0 và nó có thuộc tính tiêu đề và phụ đề ở trình giữ chỗ & nbsp; 1.

Dưới đây là sự khởi đầu của chức năng mà chúng tôi sử dụng để tạo đầu ra & nbsp; powerpoint:

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())

Mã này tạo ra một bản trình bày mới dựa trên tệp đầu vào của chúng tôi, thêm một slide duy nhất và điền tiêu đề và phụ đề trên slide. Nó trông giống như & nbsp; điều này:

Hướng dẫn how do you make a powerpoint using python? - Làm thế nào để bạn tạo một powerpoint bằng python?

Khá tuyệt vời & nbsp; hả?

Bước tiếp theo là nhúng hình ảnh của chúng tôi vào A & nbsp; slide.

Từ phân tích trước đây của chúng tôi, chúng tôi biết rằng slide đồ thị chúng tôi muốn sử dụng là Layout Index 8, vì vậy chúng tôi tạo một slide mới, thêm một tiêu đề sau đó thêm hình ảnh vào trình giữ chỗ 1. Bước cuối cùng thêm phụ đề ở trình giữ chỗ & NBSP; 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 = slide.placeholders[2]
subtitle.text = "Results consistent with last quarter"

Đây là & NBSP của chúng tôi;

Hướng dẫn how do you make a powerpoint using python? - Làm thế nào để bạn tạo một powerpoint bằng python?

Đối với phần cuối cùng của bài thuyết trình, chúng tôi sẽ tạo một bảng cho mỗi người quản lý với Sales & NBSP; Hiệu suất của họ.

Đây là hình ảnh của những gì chúng tôi sẽ đến & NBSP; đạt được:

Hướng dẫn how do you make a powerpoint using python? - Làm thế nào để bạn tạo một powerpoint bằng python?

Tạo bảng trong PowerPoint là một tin tức tốt / tin tức xấu. Tin tốt là có một API để tạo ra một. Tin xấu là bạn có thể dễ dàng chuyển đổi khung dữ liệu gấu trúc thành bảng bằng cách sử dụng API tích hợp trong API. Tuy nhiên, chúng tôi rất may mắn rằng ai đó đã làm tất cả công việc khó khăn cho chúng tôi và tạo ra Pandastopowerpoint.API to create one. The bad news is that you can’t easily convert a pandas DataFrame to a table using the built in API. However, we are very fortunate that someone has already done all the hard work for us and created PandasToPowerPoint.

Phần mã tuyệt vời này lấy một khung dữ liệu và chuyển đổi nó thành bảng tương thích PowerPoint. Tôi đã tự do bao gồm một phần của nó trong kịch bản của tôi. Bản gốc có nhiều chức năng hơn mà tôi không sử dụng vì vậy tôi khuyến khích bạn kiểm tra repo và sử dụng nó trong mã & nbsp; mã của riêng bạn.

# 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 = 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)

Mã đưa mỗi người quản lý ra khỏi bảng Pivot và xây dựng một khung dữ liệu đơn giản chứa dữ liệu tóm tắt. Sau đó sử dụng

python analyze_ppt.py simple-template.ppt simple-template-markup.ppt
0 để chuyển đổi DataFrame thành bảng tương thích PowerPoint & NBSP;

Nếu bạn muốn tự mình chạy cái này, mã đầy đủ sẽ trông giống như & nbsp; cái này:

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

Tất cả các tệp có liên quan đều có sẵn trong kho GitHub.

Sự kết luận

Một trong những điều tôi thực sự thích về việc sử dụng Python để giải quyết các vấn đề kinh doanh trong thế giới thực là tôi thường xuyên ngạc nhiên về hệ sinh thái phong phú của các công cụ Python được suy nghĩ rất tốt đã có sẵn để giúp đỡ các vấn đề của tôi. Trong trường hợp cụ thể này, PowerPoint hiếm khi là một niềm vui để sử dụng nhưng nó là một điều cần thiết trong nhiều & nbsp; môi trường.

Sau khi đọc bài viết này, bạn nên biết rằng có một số hy vọng cho bạn vào lần tới khi bạn được yêu cầu tạo ra một loạt các báo cáo trong PowerPoint. Hãy ghi nhớ bài viết này và xem liệu bạn có thể tìm cách tự động hóa một số & nbsp; tedium!

Bạn có thể tạo PowerPoint với Python không?

Python-PPTX có thể tạo các tệp PowerPoint trống nhưng hầu hết mọi người sẽ thích làm việc với một mẫu được xác định trước mà bạn có thể tùy chỉnh với nội dung của riêng mình. API của Python-PPTX hỗ trợ quá trình này khá đơn giản miễn là bạn biết một vài điều về mẫu của bạn. but most people are going to prefer working with a predefined template that you can customize with your own content. Python-pptx's API supports this process quite simply as long as you know a few things about your template.

Làm thế nào tôi có thể tạo PowerPoint của riêng tôi?

Tạo một mẫu PowerPoint..
Mở bản trình bày trống: Tệp> Mới> Trình bày trống ..
Trên tab Thiết kế, chọn Kích thước Slide> Kích thước trượt tùy chỉnh và chọn hướng và kích thước trang bạn muốn ..
Trên tab Xem, trong nhóm Chế độ xem chính, chọn Slide Master ..

Bạn có thể tự động hóa tạo PowerPoint không?

Nếu bạn muốn một trình chiếu tự động chạy tại một ki -ốt, bạn có thể kiểm soát khi nào và cách các slide tiến lên.Để làm điều này, bạn có thể áp dụng cùng một quá trình chuyển đổi cho tất cả các slide trong bản trình bày và đặt quá trình chuyển đổi để tự động tiến sau một khoảng thời gian nhất định.you can control when and how the slides advance. To do this, you can apply the same transition to all slides in the presentation and set the transition to automatically advance after a certain time interval.

Python pip ppt là gì?

Python-PPTX là một thư viện Python để tạo và cập nhật các tệp PowerPoint (.pptx).Một cách sử dụng điển hình sẽ tạo ra một bản trình bày PowerPoint tùy chỉnh từ nội dung cơ sở dữ liệu, có thể tải xuống bằng cách nhấp vào một liên kết trong một ứng dụng web.a Python library for creating and updating PowerPoint (. pptx) files. A typical use would be generating a customized PowerPoint presentation from database content, downloadable by clicking a link in a web application.