pptx-manipulation

安装量: 219
排名: #3988

安装

npx skills add https://github.com/claude-office-skills/skills --skill pptx-manipulation

PPTX Manipulation Skill Overview This skill enables programmatic creation, editing, and manipulation of Microsoft PowerPoint (.pptx) presentations using the python-pptx library. Create professional slides with text, shapes, images, charts, and tables without manual editing. How to Use Describe the presentation you want to create or modify Provide content, data, or images to include I'll generate python-pptx code and execute it Example prompts: "Create a 10-slide pitch deck from this outline" "Add a chart to slide 3 with this data" "Extract all text from this presentation" "Generate slides from this markdown content" Domain Knowledge python-pptx Fundamentals from pptx import Presentation from pptx . util import Inches , Pt from pptx . enum . shapes import MSO_SHAPE from pptx . enum . text import PP_ALIGN

Create new presentation

prs

Presentation ( )

Or open existing

prs

Presentation ( 'existing.pptx' ) Presentation Structure Presentation ├── slide_layouts (predefined layouts) ├── slides (individual slides) │ ├── shapes (text, images, charts) │ │ ├── text_frame (paragraphs) │ │ └── table (rows, cells) │ └── placeholders (title, content) └── slide_masters (templates) Slide Layouts

Common layout indices (may vary by template)

TITLE_SLIDE

0 TITLE_CONTENT = 1 SECTION_HEADER = 2 TWO_CONTENT = 3 COMPARISON = 4 TITLE_ONLY = 5 BLANK = 6

Add slide with layout

slide_layout

prs . slide_layouts [ TITLE_CONTENT ] slide = prs . slides . add_slide ( slide_layout ) Adding Content Title Slide slide_layout = prs . slide_layouts [ 0 ]

Title slide

slide

prs . slides . add_slide ( slide_layout ) title = slide . shapes . title subtitle = slide . placeholders [ 1 ] title . text = "Quarterly Report" subtitle . text = "Q4 2024 Performance Review" Text Content

Using placeholder

body

slide . placeholders [ 1 ] tf = body . text_frame tf . text = "First bullet point"

Add more paragraphs

p

tf . add_paragraph ( ) p . text = "Second bullet point" p . level = 0 p = tf . add_paragraph ( ) p . text = "Sub-bullet" p . level = 1 Text Box from pptx . util import Inches , Pt left = Inches ( 1 ) top = Inches ( 2 ) width = Inches ( 4 ) height = Inches ( 1 ) txBox = slide . shapes . add_textbox ( left , top , width , height ) tf = txBox . text_frame p = tf . paragraphs [ 0 ] p . text = "Custom text box" p . font . bold = True p . font . size = Pt ( 18 ) Shapes from pptx . enum . shapes import MSO_SHAPE

Rectangle

shape

slide . shapes . add_shape ( MSO_SHAPE . RECTANGLE , Inches ( 1 ) , Inches ( 2 ) ,

left, top

Inches ( 3 ) , Inches ( 1.5 )

width, height

) shape . text = "Rectangle with text"

Common shapes:

MSO_SHAPE.RECTANGLE, ROUNDED_RECTANGLE

MSO_SHAPE.OVAL, CHEVRON, ARROW_RIGHT

MSO_SHAPE.CALLOUT_ROUNDED_RECTANGLE

Images

Add image

slide . shapes . add_picture ( 'image.png' , Inches ( 1 ) , Inches ( 2 ) ,

position

width

Inches ( 4 )

auto height

)

Or specify both dimensions

slide . shapes . add_picture ( 'logo.png' , Inches ( 8 ) , Inches ( 0.5 ) , Inches ( 1.5 ) , Inches ( 0.75 ) ) Tables

Create table

rows , cols = 4 , 3 left = Inches ( 1 ) top = Inches ( 2 ) width = Inches ( 8 ) height = Inches ( 2 ) table = slide . shapes . add_table ( rows , cols , left , top , width , height ) . table

Set column widths

table . columns [ 0 ] . width = Inches ( 2 ) table . columns [ 1 ] . width = Inches ( 3 ) table . columns [ 2 ] . width = Inches ( 3 )

Add headers

headers

[ 'Product' , 'Q3 Sales' , 'Q4 Sales' ] for i , header in enumerate ( headers ) : cell = table . cell ( 0 , i ) cell . text = header cell . text_frame . paragraphs [ 0 ] . font . bold = True

Add data

data

[ [ 'Widget A' , '$10,000' , '$12,500' ] , [ 'Widget B' , '$8,000' , '$9,200' ] , [ 'Widget C' , '$15,000' , '$18,000' ] , ] for row_idx , row_data in enumerate ( data , 1 ) : for col_idx , value in enumerate ( row_data ) : table . cell ( row_idx , col_idx ) . text = value Charts from pptx . chart . data import CategoryChartData from pptx . enum . chart import XL_CHART_TYPE

Chart data

chart_data

CategoryChartData ( ) chart_data . categories = [ 'Q1' , 'Q2' , 'Q3' , 'Q4' ] chart_data . add_series ( 'Sales' , ( 19.2 , 21.4 , 16.7 , 23.8 ) ) chart_data . add_series ( 'Expenses' , ( 12.1 , 15.3 , 14.2 , 18.1 ) )

Add chart

x , y , cx , cy = Inches ( 1 ) , Inches ( 2 ) , Inches ( 8 ) , Inches ( 4 ) chart = slide . shapes . add_chart ( XL_CHART_TYPE . COLUMN_CLUSTERED , x , y , cx , cy , chart_data ) . chart

Customize

chart . has_legend = True chart . legend . include_in_layout = False Formatting Text Formatting from pptx . dml . color import RGBColor run = p . runs [ 0 ] run . font . name = 'Arial' run . font . size = Pt ( 24 ) run . font . bold = True run . font . italic = True run . font . color . rgb = RGBColor ( 0x00 , 0x66 , 0xCC ) Shape Fill & Line from pptx . dml . color import RGBColor shape . fill . solid ( ) shape . fill . fore_color . rgb = RGBColor ( 0x00 , 0x80 , 0x00 ) shape . line . color . rgb = RGBColor ( 0x00 , 0x00 , 0x00 ) shape . line . width = Pt ( 2 ) Paragraph Alignment from pptx . enum . text import PP_ALIGN p . alignment = PP_ALIGN . CENTER

LEFT, RIGHT, JUSTIFY

Best Practices
Use Templates
Start with a .pptx template for consistent branding
Layout First
Plan slide structure before coding
Reuse Slide Masters
Maintain consistency across presentations
Optimize Images
Compress images before adding
Test Output
Always verify generated presentations Common Patterns Slide Deck Generator def create_deck ( title , slides_content ) : prs = Presentation ( )

Title slide

slide

prs . slides . add_slide ( prs . slide_layouts [ 0 ] ) slide . shapes . title . text = title

Content slides

for slide_data in slides_content : slide = prs . slides . add_slide ( prs . slide_layouts [ 1 ] ) slide . shapes . title . text = slide_data [ 'title' ] body = slide . placeholders [ 1 ] tf = body . text_frame for i , point in enumerate ( slide_data [ 'points' ] ) : if i == 0 : tf . text = point else : p = tf . add_paragraph ( ) p . text = point return prs Data-Driven Charts def add_bar_chart ( slide , title , categories , values ) : from pptx . chart . data import CategoryChartData from pptx . enum . chart import XL_CHART_TYPE chart_data = CategoryChartData ( ) chart_data . categories = categories chart_data . add_series ( 'Values' , values ) chart = slide . shapes . add_chart ( XL_CHART_TYPE . BAR_CLUSTERED , Inches ( 1 ) , Inches ( 2 ) , Inches ( 8 ) , Inches ( 4 ) , chart_data ) . chart chart . chart_title . text_frame . text = title return chart Examples Example 1: Create a Pitch Deck from pptx import Presentation from pptx . util import Inches , Pt prs = Presentation ( )

Slide 1: Title

slide

prs . slides . add_slide ( prs . slide_layouts [ 0 ] ) slide . shapes . title . text = "StartupX" slide . placeholders [ 1 ] . text = "Revolutionizing Document Processing"

Slide 2: Problem

slide

prs . slides . add_slide ( prs . slide_layouts [ 1 ] ) slide . shapes . title . text = "The Problem" body = slide . placeholders [ 1 ] . text_frame body . text = "Manual document processing costs businesses $1T annually" p = body . add_paragraph ( ) p . text = "Average worker spends 20% of time on document tasks" p . level = 1

Slide 3: Solution

slide

prs . slides . add_slide ( prs . slide_layouts [ 1 ] ) slide . shapes . title . text = "Our Solution" body = slide . placeholders [ 1 ] . text_frame body . text = "AI-powered document automation" body . add_paragraph ( ) . text = "90% faster processing" body . add_paragraph ( ) . text = "99.5% accuracy" body . add_paragraph ( ) . text = "Works with existing tools"

Slide 4: Market

slide

prs . slides . add_slide ( prs . slide_layouts [ 5 ] )

Title only

slide . shapes . title . text = "Market Opportunity: $50B by 2028"

Add chart

from pptx . chart . data import CategoryChartData from pptx . enum . chart import XL_CHART_TYPE data = CategoryChartData ( ) data . categories = [ '2024' , '2025' , '2026' , '2027' , '2028' ] data . add_series ( 'Market Size ($B)' , [ 30 , 35 , 40 , 45 , 50 ] ) slide . shapes . add_chart ( XL_CHART_TYPE . LINE , Inches ( 1 ) , Inches ( 1.5 ) , Inches ( 8 ) , Inches ( 5 ) , data ) prs . save ( 'pitch_deck.pptx' ) Example 2: Report with Data Table from pptx import Presentation from pptx . util import Inches , Pt prs = Presentation ( )

Title slide

slide

prs . slides . add_slide ( prs . slide_layouts [ 0 ] ) slide . shapes . title . text = "Sales Performance Report" slide . placeholders [ 1 ] . text = "Q4 2024"

Data slide

slide

prs . slides . add_slide ( prs . slide_layouts [ 5 ] ) slide . shapes . title . text = "Regional Performance"

Create table

table

slide . shapes . add_table ( 5 , 4 , Inches ( 0.5 ) , Inches ( 1.5 ) , Inches ( 9 ) , Inches ( 4 ) ) . table

Headers

headers

[ 'Region' , 'Revenue' , 'Growth' , 'Target' ] for i , h in enumerate ( headers ) : table . cell ( 0 , i ) . text = h table . cell ( 0 , i ) . text_frame . paragraphs [ 0 ] . font . bold = True

Data

data

[ [ 'North America' , '$5.2M' , '+15%' , 'Met' ] , [ 'Europe' , '$3.8M' , '+12%' , 'Met' ] , [ 'Asia Pacific' , '$2.9M' , '+28%' , 'Exceeded' ] , [ 'Latin America' , '$1.1M' , '+8%' , 'Below' ] , ] for row_idx , row_data in enumerate ( data , 1 ) : for col_idx , value in enumerate ( row_data ) : table . cell ( row_idx , col_idx ) . text = value prs . save ( 'sales_report.pptx' ) Limitations Cannot render complex animations Limited SmartArt support No video embedding via API Master slide editing is complex Chart types limited to standard Office charts Installation pip install python-pptx Resources python-pptx Documentation GitHub Repository Slide Layout Guide

返回排行榜