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-pptxSau đó, 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
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
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.titlesubtitle = 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 Inchestitle2 = 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 CategoryChartDatafrom 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 pdimport 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 Presentationprs = 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