日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

用Python操作PPT的办公自动化教程

發布時間:2023/12/31 python 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 用Python操作PPT的办公自动化教程 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

PPT通過其精美的可視化技巧以及良好的演示效果,成為了職場人士的必備技能。PPT的設計是一門大學問,無論是設計技巧,還是操作方法,都衍生出了專門的課程。

主要介紹Python操作PPT的技巧,編程的優勢在于處理速度,對于高大上的PPT設計,還是需要"以人為本,所以該模塊的使用場景主要是PPT基本元素的提取和添加,適合大量內容的轉化,比如word轉PPT, 減少大量繁瑣的人工操作,盡管提供了一些基本的樣式設計,但是滿足日常辦公對PPT美觀性的要求上還是差點意思。

安裝模塊

Windows用戶打開命令行輸入:pip install python-pptx

Mac用戶打開終端/Terminal輸入:pip3 install python-pptx

使用windows系統,如果出現無法安裝情況,可以在cmd模式下輸入網址選擇國內清華鏡像。

pip install -i?https://pypi.tuna.tsinghua.edu.cn/simple?python-pptx

導入模塊:import pptx

參考文檔地址:https://python-pptx.readthedocs.io/en/latest/index.html

PPT的基本結構介紹

在該模塊中,將ppt拆分為了以下多個元素

  • presentations, 表示整個ppt文檔

  • sliders. 表示ppt文檔的每一頁

  • shapes 方框,在每頁幻燈片內插入的方框,可以是形狀,也可以是文本框

  • Run 文字塊 一般為較少字符

  • Paragraph 段落,即Shape中的每一段內容,都稱為一個段落

  • 基本使用:

    from?pptx?import?Presentation from?pptx.enum.shapes?import?MSO_SHAPE from?pptx.util?import?Inches,?Pt,?Cmprs?=?Presentation()????#默認模板prs?=?Presentation(mypath)????#使用自己定義的模板

    獲取PPT內容

    from?pptx?import?Presentation from?pptx.util?import?Inches #?1.?得到幻燈片對象 prs?=?Presentation("demo.pptx") #?2.?獲取prs對象中的每一頁PPT for?slide?in?prs.slides:#?3.?遍歷獲取每頁PPT中的內容for?shape?in?slide.shapes:?#?4.?打印具體的Shapeprint(shape)#?5.?我是一條華麗的分割線,劃分不同的slideprint("——————————————————————————")

    輸出結果:

    如果想獲取每個Shape里面的文字也可以:

    shape.has_text_frame ----->是否有文字 shape.text_frame ----->獲取文字框

    from?pptx?import?Presentation from?pptx.util?import?Inches #?1.?得到幻燈片對象 prs?=?Presentation("demo.pptx") #?2.?獲取prs對象中的每一頁PPT for?slide?in?prs.slides:#?3.?遍歷獲取每頁PPT中的內容for?shape?in?slide.shapes:?#?4.?判斷是否存在文本if?shape.has_text_frame:#?5.?如果存在則獲取內容text_frame?=?shape.text_frameprint(text_frame.text)#?6.?我是一條華麗的分割線,劃分不同的slideprint("——————————————————————————")??????

    輸出的結果(對比前面的幻燈片):

    從shape中找paragraph

    from?pptx?import?Presentation from?pptx.util?import?Inches #?1.?得到幻燈片對象 prs?=?Presentation("demo.pptx") #?2.?獲取prs對象中的每一頁PPT for?slide?in?prs.slides:#?3.?遍歷獲取每頁PPT中的內容for?shape?in?slide.shapes:?#?4.?判斷是否存在文本if?shape.has_text_frame:#?5.?獲取shape中的文本text_frame?=?shape.text_frame#?6.?獲取text_frame中的段落內容for?paragraph?in?text_frame.paragraphs:#?7.?打印段落內容print(paragraph.text)print('----------paragraph------------')

    綜合應用

    編寫一個Python程序,要求

    (1)打開demo.pptx

    (2)按照paragraph分段,轉換成為word文檔

    (3)保存為demo.docx

    from?pptx?import?Presentation from?docx?import?Documentdoc?=?Document() prs?=?Presentation("婚禮策劃師的最愛.pptx") ls?=?[] for?slide?in?prs.slides:for?shape?in?slide.shapes:if?shape.has_text_frame:text_frame?=?shape.text_framefor?paragraph?in?text_frame.paragraphs:if?paragraph.text?!=?'':doc.add_paragraph(paragraph.text)doc.save("demo.docx")

    向PPT寫入內容

    首先了解模板和占位符

    Slides_layouts:版式,一個幻燈片母版由多個版式組成,索引從0開始。

    Placeholder:占位符:存在PPT母版里面的幻燈片的某一部件:Placeholder

    在創建一頁ppt時,需要指定對應的布局,在該模塊中, 內置了以下9種布局

  • Title

  • Title and Content

  • Section Header

  • Two Content

  • Comparison

  • Title Only

  • Blank

  • Content with Caption

  • Picture with Caption

  • 通過數字下標0到9來訪問,指定布局添加一頁ppt的用法如下:

    創建placeholders

    from?pptx?import?Presentationprs?=?Presentation()?#初始化一個空pptx文檔 slide?=?prs.slides.add_slide(prs.slide_layouts[0])??#?用第一個母版生成一頁ppt for?shape?in?slide.placeholders:?????????#?獲取這一頁所有的占位符phf?=?shape.placeholder_formatprint(f'{phf.idx}--{shape.name}--{phf.type}')??#?id號--占位符形狀名稱-占位符的類型shape.text?=?f'{phf.idx}--{shape.name}--{phf.type}' prs.save("new_template.pptx")

    也可以一次添加多個

    from?pptx?import?Presentationprs?=?Presentation()?#初始化一個空pptx文檔 i?=?0 while?i?<=?10:slide?=?prs.slides.add_slide(prs.slide_layouts[i])??i?=?i+1for?shape?in?slide.placeholders:?????????#?獲取這一頁所有的占位符phf?=?shape.placeholder_formatprint(f'{phf.idx}--{shape.name}--{phf.type}')??#?id號--占位符形狀名稱-占位符的類型shape.text?=?f'{phf.idx}--{shape.name}--{phf.type}' prs.save("new_template.pptx")

    向占位符中添加內容

    主要使用:

    shape.text = 字符串

    prs.save(文件路徑)

    from?pptx?import?Presentationprs?=?Presentation() #?用第一個母版生成一頁ppt slide?=?prs.slides.add_slide(prs.slide_layouts[1]) #?獲取當前頁的標題 title_shape?=?slide.shapes.title #?向標題中添加文本 title_shape.text?=?'宋宋的Python專欄' #?獲取副標題 subtitle?=?slide.shapes.placeholders[1] #?副標題中添加文本 subtitle.text?=?'宋宋是一個愛美的大女生'#?副標題中添加新段落 new_paragraph1?=?subtitle.text_frame.add_paragraph() #?向段落中添加文本 new_paragraph1.text?=?'我是一個專注學習技術的大女生' new_paragraph1.level?=?1new_paragraph2?=?subtitle.text_frame.add_paragraph() new_paragraph2.text?=?'我是一個認真寫文章的大女生哈哈哈' new_paragraph2.level?=?2#?保存內容 prs.save("寫入內容1.pptx")

    空白的PPT模板中添加文本框和圖形

    from?pptx?import?Presentation from?pptx.util?import?Cm,Pt,Inches from?pptx.enum.shapes?import?MSO_SHAPEprs?=?Presentation('寫入內容1.pptx') slide?=?prs.slides.add_slide(prs.slide_layouts[6])?#?6的layout中是一個空白的Slider,里面沒有占位符#?單獨向里面添加文本框和圖片 left?=?top?=?width?=?height?=Cm(3)??#?# left,top為相對位置,width,height為文本框大小。滿足條件順序是左>上>右>下 text_box?=?slide.shapes.add_textbox(left,top,width,height) tf?=?text_box.text_frame tf.text?=?"歡迎來到宋宋的Python專欄"p?=?tf.add_paragraph() p.text?=?"宋宋的Python專欄,有20天學會Python基礎,20天學會爬蟲,20天學會數據分析,還有干活趣味文章!" p.font.bold?=?True p.font.size?=?Pt(15)#?添加圖形slide1?=?prs.slides.add_slide(prs.slide_layouts[6])? shapes?=?slide1.shapes left?=?top?=?width?=?height?=?Inches(1.0) shape?=?shapes.add_shape(MSO_SHAPE.ROUNDED_RECTANGLE,?left,?top,?width,?height)prs.save("寫入內容1_new.pptx")

    案例

    現有一個公益捐書項目,有很多學生參與了本次活動,為了嘉獎這些學生,決定給每位學生發一張獎狀。參與捐贈的學生名單和捐書數量都在students.xlsx中。

  • 讀取Excel中的數據

  • 讀取做好的PPT模板

  • 將每位同學的姓名和捐書數量設置到PPT上

  • 保存PPT

  • 模版樣式如下:

    學生名單信息:

    代碼如下:

    from?pptx?import?Presentation from?pptx.util?import?Cm,Pt,Inches from?pptx.enum.shapes?import?MSO_SHAPE from?datetime?import?datetimefrom?openpyxl?import?load_workbook#?1.?加載cosmetics.xlsx表格 workbook?=?load_workbook(filename=?'students.xlsx') #?2.?得到Sheet1工作簿 sheet?=?workbook['Sheet1']#?按照行遍歷,一行是一個人的信息 for?row?in?sheet.iter_rows(min_row=2,?max_row=8,?min_col=?1,max_col=2):??#?涵蓋范圍的所有單元格都會顯示prs?=?Presentation("模版.pptx")#?2.?獲取prs對象中的每一頁PPTfor?slide?in?prs.slides:#?3.?遍歷獲取每頁PPT中的內容for?shape?in?slide.shapes:?#?4.?判斷是否存在文本if?shape.has_text_frame:#?5.?獲取shape中的文本text_frame?=?shape.text_frame#?6.?獲取text_frame中的段落內容for?paragraph?in?text_frame.paragraphs:paragraph.font.size?=?Pt(24)#?7.?打印段落內容if?paragraph.text=='__':paragraph.text=row[0].valueif?paragraph.text=='__冊':paragraph.text=f'{row[1].value}冊'if?paragraph.text=='日期:':paragraph.font.size?=?Pt(18)paragraph.text=str(datetime.now().strftime('%Y年%m月%d日'))prs.save(f"模版_{row[0].value}.pptx")

    -END-?

    想要學習更多技術,加下方小姐姐領取全套教程及源碼筆記

    總結

    以上是生活随笔為你收集整理的用Python操作PPT的办公自动化教程的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。