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

PowerPoint là phần mềm trình chiếu phổ biến thường được sử dụng cho trình chiếu văn phòng và giáo dục. Tạo bài thuyết trình thủ công tốn thời gian. Dự án dựa trên python này có thể tự động tạo bản trình bày PowerPoint trong vòng vài phút. Bạn sẽ học cách tạo dự án Python bằng Pycharm và Python phiên bản 3 và triển khai nó cho Microsoft Windows bằng Pyinstaller.  

Trong dự án này, tự động hóa đạt được bằng cách tìm nạp văn bản từ Wikipedia và hình ảnh từ mô-đun công cụ tìm kiếm Microsoft Bing. Tạo các loại trang trình bày khác nhau bằng các chức năng tùy chỉnh, sau đó hợp nhất chúng lại với nhau để tạo. tập tin pptx. Sau này bạn có thể sửa đổi chúng và sử dụng chúng theo yêu cầu của bạn

Các chức năng tùy chỉnh sẽ tạo các trang chiếu có dấu đầu dòng, trang chiếu hình ảnh, trang chiếu tiêu đề, trang chiếu kết thúc, v.v.

Chúng tôi sẽ tạo dự án này từ đầu và xây dựng nó từng bước

Bàn thắng

  • Bằng cách tham gia khóa học này, bạn sẽ học được nhiều kỹ năng quản lý thời gian và logic toán học đằng sau tự động hóa. Bạn có thể sử dụng những kỹ năng này để tự động hóa những thứ khác bằng cách viết vài dòng mã. Tất cả các chức năng và chương trình là mô-đun và có thể được sử dụng trong các dự án mới. Sau khi mua khóa học này, bạn sẽ có quyền truy cập vào mã nguồn hoàn chỉnh. Cập nhật trọn đời cho khóa học này được bao gồm để thuận tiện cho bạn

điều kiện tiên quyết

  • Bạn phải có một máy tính có kết nối internet
  • Bạn phải có hiểu biết cơ bản về ngôn ngữ lập trình Python

Cách sử dụng điển hình sẽ là tạo 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 liên kết trong ứng dụng web. Một số nhà phát triển đã sử dụng nó để tự động sản xuất các báo cáo trạng thái kỹ thuật sẵn sàng trình bày dựa trên thông tin có trong hệ thống quản lý công việc của họ. Nó cũng có thể được sử dụng để thực hiện cập nhật hàng loạt cho thư viện bản trình bày hoặc đơn giản là để tự động hóa việc sản xuất một hoặc hai trang trình bày sẽ rất tẻ nhạt nếu thực hiện ngay bằng tay

Thông tin thêm có sẵn trong tài liệu python-pptx

Duyệt qua các ví dụ có ảnh chụp màn hình để biết nhanh những gì bạn có thể làm với python-pptx

Hỗ trợ tính năng

python-pptx có các khả năng sau, với nhiều khả năng khác trên lộ trình

  • Chuyến đi khứ hồi bất kỳ bản trình bày Open XML nào (. pptx) bao gồm tất cả các thành phần của nó
  • Thêm trang trình bày
  • Điền vào chỗ dành sẵn cho văn bản, ví dụ để tạo trang trình bày dấu đầu dòng
  • Thêm hình ảnh vào slide ở vị trí và kích thước tùy ý
  • Thêm hộp văn bản vào trang chiếu;
  • Thêm bảng vào trang chiếu
  • Thêm hình dạng tự động (e. g. đa giác, hình dạng lưu đồ, v.v. ) vào trang chiếu
  • Thêm và thao tác biểu đồ cột, thanh, đường và hình tròn
  • Truy cập và thay đổi các thuộc tính tài liệu cốt lõi như tiêu đề và chủ đề

Các khả năng bổ sung đang được tích cực phát triển và thêm vào với tần suất phát hành khoảng một lần mỗi tháng. Nếu bạn tìm thấy một tính năng bạn cần mà python-pptx chưa có, hãy liên hệ qua danh sách gửi thư hoặc trình theo dõi vấn đề và chúng tôi sẽ xem liệu chúng tôi có thể chuyển hàng đợi để bạn đưa tính năng đó vào đó không. )

Người làm dữ liệu và người kinh doanh luôn làm việc cùng nhau. Một trong những hoạt động phổ biến giữa người dùng dữ liệu và người dùng doanh nghiệp là tạo bản trình bày báo cáo PowerPoint bao gồm tất cả các thông báo quan trọng

Đôi khi, mọi người cảm thấy quá nhiều dữ liệu phải làm việc với báo cáo PowerPoint hàng ngày và chúng tôi muốn tập trung vào những điều quan trọng hơn

Bài viết này thảo luận về cách chúng tôi có thể phát triển bản trình bày PowerPoint bằng Python và tự động hóa quy trình báo cáo. Hãy đi sâu vào nó

Sử dụng python-pptx

Để giúp chúng tôi tự động hóa báo cáo bản trình bày PowerPoint, chúng tôi sẽ sử dụng gói Python có tên python-pptx. Đây là gói Python được phát triển để tạo và cập nhật các tệp PowerPoint

Để bắt đầu sử dụng gói, trước tiên chúng ta cần cài đặt gói với đoạn mã sau

pip install python-pptx

Sau đó, hãy hiểu những điều cơ bản về gói được sử dụng để tạo bản trình bày PowerPoint của chúng tôi

Điều đầu tiên chúng ta cần làm là thiết lập lớp

from pptx import Presentation

prs = Presentation()
title_slide_layout = prs.slide_layouts[0]
slide1 = prs.slides.add_slide(title_slide_layout)

bullet_slide_layout = prs.slide_layouts[1]
slide2 =prs.slides.add_slide(bullet_slide_layout)


prs.save('test.pptx')
1 dưới dạng biểu đồ chứa tất cả các đối tượng cần thiết (slide, hình ảnh, bảng, v.v. ). Chúng tôi có thể mở một tệp PowerPoint hiện có hoặc bắt đầu một tệp mới. Đối với ví dụ này, chúng tôi sẽ tạo một bản trình bày mới hiện có mà chúng tôi sẽ tự điền vào

Trước khi tạo bài thuyết trình, chúng ta cần hiểu khái niệm đối tượng

from pptx import Presentation

prs = Presentation()
title_slide_layout = prs.slide_layouts[0]
slide1 = prs.slides.add_slide(title_slide_layout)

bullet_slide_layout = prs.slide_layouts[1]
slide2 =prs.slides.add_slide(bullet_slide_layout)


prs.save('test.pptx')
2. Bản trình bày của chúng tôi sẽ cần một trang chiếu và mọi trang chiếu đều dựa trên bố cục trang chiếu chủ đề

Chủ đề thuyết trình cơ bản từ PowerPoint chứa chín bố cục khác nhau như Tiêu đề, Tiêu đề, Nội dung, Trống, v.v. Trong mỗi bố cục, có các mẫu khu vực được xác định trước mà chúng ta có thể lấp đầy bằng nhiều nội dung khác nhau như văn bản, hình ảnh, dấu đầu dòng, v.v.

Trong

from pptx import Presentation

prs = Presentation()
title_slide_layout = prs.slide_layouts[0]
slide1 = prs.slides.add_slide(title_slide_layout)

bullet_slide_layout = prs.slide_layouts[1]
slide2 =prs.slides.add_slide(bullet_slide_layout)


prs.save('test.pptx')
3, các bố cục trang chiếu này bao gồm từ____1_______4 đến
from pptx import Presentation

prs = Presentation()
title_slide_layout = prs.slide_layouts[0]
slide1 = prs.slides.add_slide(title_slide_layout)

bullet_slide_layout = prs.slide_layouts[1]
slide2 =prs.slides.add_slide(bullet_slide_layout)


prs.save('test.pptx')
5. Bạn có thể đọc tất cả thứ tự của bố cục tại đây. Hãy thử tạo hai trang trình bày trống với các bố cục khác nhau

from pptx import Presentation

prs = Presentation()
title_slide_layout = prs.slide_layouts[0]
slide1 = prs.slides.add_slide(title_slide_layout)

bullet_slide_layout = prs.slide_layouts[1]
slide2 =prs.slides.add_slide(bullet_slide_layout)


prs.save('test.pptx')

Hình ảnh của tác giả

Kết quả sẽ là một tệp PowerPoint với hai trang trình bày khác nhau. Chúng tôi muốn lấp đầy slide bằng nội dung vì nó quan trọng. Để làm được điều đó, chúng ta cần hiểu khái niệm

from pptx import Presentation

prs = Presentation()
title_slide_layout = prs.slide_layouts[0]
slide1 = prs.slides.add_slide(title_slide_layout)

bullet_slide_layout = prs.slide_layouts[1]
slide2 =prs.slides.add_slide(bullet_slide_layout)


prs.save('test.pptx')
6

from pptx import Presentation

prs = Presentation()
title_slide_layout = prs.slide_layouts[0]
slide1 = prs.slides.add_slide(title_slide_layout)

bullet_slide_layout = prs.slide_layouts[1]
slide2 =prs.slides.add_slide(bullet_slide_layout)


prs.save('test.pptx')
6 là mọi thứ có thể được hiển thị trên trang trình bày. Từ văn bản, hình ảnh, bảng, v.v. , là nội dung xuất hiện trên trang trình bày. Tất cả các đối tượng Shape có sẵn đều có sẵn trong

Ngoài ra, chúng ta cần hiểu khái niệm

from pptx import Presentation

prs = Presentation()
title_slide_layout = prs.slide_layouts[0]
slide1 = prs.slides.add_slide(title_slide_layout)

bullet_slide_layout = prs.slide_layouts[1]
slide2 =prs.slides.add_slide(bullet_slide_layout)


prs.save('test.pptx')
8 về việc thêm nội dung vào tệp PowerPoint của mình. Bản thân
from pptx import Presentation

prs = Presentation()
title_slide_layout = prs.slide_layouts[0]
slide1 = prs.slides.add_slide(title_slide_layout)

bullet_slide_layout = prs.slide_layouts[1]
slide2 =prs.slides.add_slide(bullet_slide_layout)


prs.save('test.pptx')
9 là một đối tượng
from pptx import Presentation

prs = Presentation()
title_slide_layout = prs.slide_layouts[0]
slide1 = prs.slides.add_slide(title_slide_layout)

bullet_slide_layout = prs.slide_layouts[1]
slide2 =prs.slides.add_slide(bullet_slide_layout)


prs.save('test.pptx')
6 và có thể được truy cập bằng đoạn mã sau

for shape in slide1.placeholders:
print('{} {}'.format(shape.placeholder_format.idx, shape.name))

Hình ảnh của tác giả

Đầu ra ở trên cho thấy slide đầu tiên của chúng tôi có hai trình giữ chỗ. tiêu đề và phụ đề. Trong trường hợp này, chúng ta có thể nhập đối tượng bên trong trình giữ chỗ này

title = slide1.shapes.title
subtitle = slide1.placeholders[1]

title.text = "This is an example text"
subtitle.text = "Amazing!"

prs.save('test.pptx')

Hình ảnh của tác giả

Các trang trình bày của chúng tôi hiện được cập nhật với văn bản mới trong Tiêu đề và Phụ đề. Giờ đây, bạn cũng có thể thêm một đối tượng khác vào trình giữ chỗ nội dung của mình, chẳng hạn như Hộp văn bản. Để làm điều đó, chúng ta có thể sử dụng đoạn mã sau

from pptx.util import Inches

title2 = slide2.shapes.title
title2.text = 'This is Textbook example'

left = top = width = height = Inches(3)
txBox = slide2.shapes.add_textbox(left, top, width, height)
tf = txBox.text_frame

tf.text = "This is text inside a textbox as a sample"

prs.save('test.pptx')

Hình ảnh của tác giả

Từ đoạn mã trên, chúng tôi tạo một hộp văn bản bên trong trang chiếu thứ hai của PowerPoint và đặt nó ở giữa (3 'từ mỗi hướng)

Vẫn còn nhiều thứ mà chúng tôi có thể thêm vào trang trình bày của mình, bao gồm

Bàn

title_only_slide_layout = prs.slide_layouts[5]
slide3 = prs.slides.add_slide(title_only_slide_layout)

shapes3 = slide3.shapes

shapes3.title.text = 'Creating Table With Python'

rows = cols = 3
left = Inches(1)
top = Inches(2)
width = Inches(4.0)
height = Inches(1)

table = shapes3.add_table(rows, cols, left, top, width, height).table

# set column widths
table.columns[0].width = Inches(2.0)
table.columns[1].width = Inches(4.0)
table.columns[2].width = Inches(2.0)

# write column headings
table.cell(0, 0).text = 'Column 1'
table.cell(0, 1).text = 'Column 2'
table.cell(0, 2).text = 'Column 3'

# write body cells
table.cell(1, 0).text = 'Text 1 Example'
table.cell(1, 1).text = 'Text 2 Example'
table.cell(1, 2).text = 'Text 3 Example'

prs.save('test.pptx')

Hình ảnh của tác giả

Đồ thị

from pptx.chart.data import CategoryChartData
from pptx.enum.chart import XL_CHART_TYPE

slide4 = prs.slides.add_slide(title_only_slide_layout)

slide4.shapes.title.text = 'Creating Chart with Python'

chart_data = CategoryChartData()
mean_group = list(df['origin'].unique())
mean_group_res = tuple(df.groupby('origin')['mpg'].mean()[mean_group].values)
chart_data.categories = mean_group
chart_data.add_series('Mean by Origin', mean_group_res)

# add chart to slide --------------------
x, y, cx, cy = Inches(2), Inches(2), Inches(6), Inches(4.5)
slide4.shapes.add_chart(
XL_CHART_TYPE.COLUMN_CLUSTERED, x, y, cx, cy, chart_data
)

Hình ảnh của tác giả

Hình ảnh

slide5 = prs.slides.add_slide(title_only_slide_layout)

slide5.shapes.title.text = 'Add Image with Python'

img = sns.heatmap(df.corr(), annot = True).get_figure()
img.savefig('heatmap1.png')

left = top = Inches(3)
height = Inches(4)
pic = slide5.shapes.add_picture('heatmap1.png', left, top, height=height)

prs.save('test.pptx')

Hình ảnh của tác giả

Vẫn còn nhiều khả năng chúng ta có thể thực hiện với python-pptx, bạn có thể tham khảo tài liệu để tìm hiểu thêm về

Tự động báo cáo PowerPoint

Với python-pptx, chúng tôi có thể biến báo cáo thủ công thành trải nghiệm báo cáo tự động. Chúng ta cần phát triển hệ thống đường ống để kích hoạt tự động hóa báo cáo

Dưới đây là một ví dụ về tự động hóa báo cáo với GitHub Action

Trước tiên, chúng ta phải thiết lập kho lưu trữ cho tất cả các tệp của mình trong GitHub

Hình ảnh của tác giả

Sau khi khởi tạo kho lưu trữ của chúng tôi, chúng tôi có thể kéo nó vào môi trường cục bộ hoặc ưa thích của bạn. Hãy chuẩn bị một số tệp cần thiết trong môi trường của chúng tôi

Tệp văn bản yêu cầu

Chúng tôi sẽ sử dụng môi trường Python, vì vậy chúng tôi cần nêu rõ gói nào chúng tôi sẽ sử dụng cho quy trình. Tạo một tệp txt có tên là

for shape in slide1.placeholders:
print('{} {}'.format(shape.placeholder_format.idx, shape.name))
1 và đặt gói sau vào bên trong tệp

Hình ảnh của tác giả

Tập lệnh Python

Chúng tôi cần một tập lệnh Python để tạo báo cáo của mình mỗi khi có dữ liệu mới

Đầu tiên, chúng ta cần chuẩn bị dữ liệu. Ví dụ của chúng tôi, tôi sẽ lưu dữ liệu mẫu mpg trong thư mục dữ liệu. Bạn luôn có thể thay đổi tập dữ liệu thành dữ liệu khác

df = sns.load_dataset('mpg')
df.to_csv('mpg.csv', index = False)

Tiếp theo, chúng ta cần chuẩn bị kịch bản. Tôi sẽ sử dụng đoạn mã sau để tạo báo cáo PowerPoint

import pandas as pd
import seaborn as sns
from pptx import Presentation
from pptx.util import Inches

df = pd.read_csv('data/mpg.csv')
prs = Presentation()
title_slide_layout = prs.slide_layouts[0]
title_only_slide_layout = prs.slide_layouts[5]

slide1 = prs.slides.add_slide(title_slide_layout)

title = slide1.shapes.title
subtitle = slide1.placeholders[1]

title.text = "Trying out PowerPoint Automation"
subtitle.text = "With python-pptx and GitHub action!"

slide2 = prs.slides.add_slide(title_only_slide_layout)
slide2.shapes.title.text = 'Add Image with Python'

img = sns.heatmap(df.corr(), annot = True).get_figure()
img.savefig('graph/heatmap1.png')

left = Inches(3)
top = Inches(3)
height = Inches(4)
pic = slide2.shapes.add_picture('graph/heatmap1.png', left, top, height=height)

prs.save('report.pptx')

Trong đoạn mã trên, tôi sẽ đọc tệp mpg từ thư mục dữ liệu và tạo tệp bản đồ nhiệt mà tôi lưu trong thư mục biểu đồ. Đầu ra của tập lệnh sẽ là tệp

for shape in slide1.placeholders:
print('{} {}'.format(shape.placeholder_format.idx, shape.name))
2 mà chúng tôi muốn

Hành động GitHub

Chúng tôi muốn có một trình kích hoạt cụ thể sẽ chạy tập lệnh của chúng tôi ở trên. Sử dụng hành động GitHub, chúng tôi có thể kích hoạt thực thi tập lệnh khi có thay đổi trong kho lưu trữ của chúng tôi

Trước tiên, chúng ta cần tạo một thư mục có tên là

for shape in slide1.placeholders:
print('{} {}'.format(shape.placeholder_format.idx, shape.name))
3 trong môi trường của mình. Trong môi trường đó, chúng ta cần tạo một tệp YAML. Bạn có thể gọi nó là gì cũng được, nhưng tôi đặt nó là
for shape in slide1.placeholders:
print('{} {}'.format(shape.placeholder_format.idx, shape.name))
4

Bên trong tệp YAML, chúng ta có thể nhập đoạn mã sau

from pptx import Presentation

prs = Presentation()
title_slide_layout = prs.slide_layouts[0]
slide1 = prs.slides.add_slide(title_slide_layout)

bullet_slide_layout = prs.slide_layouts[1]
slide2 =prs.slides.add_slide(bullet_slide_layout)


prs.save('test.pptx')
0

Đoạn mã trên sẽ thực thi tập lệnh Python bất cứ khi nào có thay đổi mới trong kho lưu trữ của chúng tôi. Sau đó, đầu ra tập lệnh (tệp báo cáo) sẽ được cam kết vào kho lưu trữ của chúng tôi

Ngoài ra, đừng quên thay đổi cài đặt kho lưu trữ cho hành động GitHub để có sự cho phép bằng văn bản

Đặt nó lại với nhau

Cuối cùng, chúng tôi sẽ kết thúc với cấu trúc sau cho kho lưu trữ GitHub của chúng tôi

Hình ảnh của tác giả

Hãy thử đẩy Git vào kho lưu trữ mới của bạn và xem hành động có chạy thành công không

Hình ảnh của tác giả

Bạn sẽ thấy tệp báo cáo mới trong kho lưu trữ của mình khi chạy mã thành công. Bạn có thể kéo nó về địa phương của mình để lấy báo cáo. Các bạn muốn xem full code có thể truy cập tại đây

Bạn vẫn có thể thực hiện nhiều biến thể tự động hóa, chẳng hạn như gửi báo cáo qua email, chạy trình kích hoạt bằng AWS Lambda, lên lịch trình bằng Airflow, v.v.

Hãy sáng tạo và phát triển tự động hóa theo cách bạn cần

Phần kết luận

Báo cáo PowerPoint là một tệp phổ biến được sử dụng để trình bày báo cáo. Tuy nhiên, chỉ một số thích điền báo cáo theo cách thủ công. Đôi khi mất quá nhiều thời gian và bạn muốn tự động hóa nó

Chúng tôi có thể tạo báo cáo PowerPoint bằng gói Python có tên python-pptx. Với gói này, chúng tôi có thể phát triển một báo cáo gọn gàng với nhiều dòng mã

Vì chúng tôi sử dụng Python để tạo tệp PowerPoint, chúng tôi có thể tự động hóa nó với nhiều hệ thống. Trong ví dụ này, chúng tôi sử dụng hành động GitHub để tự động hóa quy trình tạo báo cáo

Python có thể tương tác với PowerPoint không?

Thật 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 lại rất tốt 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 thành phần và bố cục chính khác nhau.

Có thể tự động hóa PowerPoint không?

Nếu bạn muốn trình chiếu tự động chạy tại ki-ốt, bạn có thể kiểm soát thời điểm và cách trình chiếu tiến lên . Để thực hiện điều này, bạn có thể áp dụng cùng một hiệu ứng chuyển tiếp cho tất cả các trang chiếu trong bản trình bày và đặt hiệu ứng chuyển đổi tự động tiến lên sau một khoảng thời gian nhất định.

Làm cách nào để trích xuất dữ liệu từ ppt bằng python?

Nếu bạn muốn trích xuất văn bản. .
nhập Bản trình bày từ pptx (pip cài đặt python-pptx)
cho mỗi tệp trong thư mục (sử dụng mô-đun toàn cầu)
nhìn vào mọi trang chiếu và mọi hình dạng trong mỗi trang chiếu
nếu có một hình dạng với thuộc tính văn bản, hãy in hình dạng đó. chữ

Con trăn PowerPoint là gì?

python-pptx là thư viện Python để tạo và cập nhật PowerPoint (. pptx) tệp . Cách sử dụng điển hình sẽ là tạo 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 liên kết trong ứng dụng web.