python自動化辦公手冊之python操作PPT

2021-02-08 Python程式設計師
前言1)python自動化文檔手冊

python自動化文章一直深受廣大python愛好者的青睞。基於此,我花了整整一周時間真理出來的python自動化文檔手冊,涉及到五個章節(如下圖所示),① python使用openpyxl操作excel;② python使用PyPDF2和pdfplumber操作pdf;③ python使用python-docx操作word;④ python使用python-pptx操作PPT;⑤ python如何自動收發郵件;⑥ python製作電話號碼歸屬地查詢工具。

2)關於本文的說明

python自動化操作word,excel,pdf的文章,大家有時候會看到發布這樣的文章。但是python操作ppt的文章,卻少之又少。因此,我將這篇文章單獨整理出來,供大家學習參考。其餘文章詳細見文檔。

3)關於文檔的獲取(文末獲取)

python自動化文檔手冊文檔已經整理成冊(附帶標籤),手冊中涉及到的數據都是自製。該文檔已經上傳,請勿濫用,如有盜版,必定追究。

本文目錄1、python-pptx模塊簡介

使用python操作PPT,需要使用的模塊就是python-pptx,下面來對該模塊做一個簡單的介紹。這裡提前做一個說明:python操作PPT,最好是我們提前設計好自己的一套樣式,然後利用進行python進行內容的獲取和填充(最主要的功能!),最好是不用使用python代碼操作PPT的格式,格式的修改肯定不如我們直接在PPT中修改方便。

python-pptx官網介紹:https://python-pptx.readthedocs.io/en/latest/2、模塊的安裝與導入1)模塊的安裝
"Windows用戶命令行下輸入"pip install python-pptx"Mac用戶命令行下輸入"pip3 install python-pptx

2)模塊的導入

這裡有一點需要注意的是:安裝的庫是python-pptx,但是導入的時候卻有點不同。

3、python讀取PPT文檔中的內容1)PPT的結構說明

在使用python操作PPT之前,首先應該清楚PPT的結構,這個對於之後代碼的編寫很有幫助。注意:關於run塊兒的概念,可以參考我的另外一篇文章https://blog.csdn.net/weixin_41261833/article/details/106028038

2)獲取Slide
from pptx import Presentation
prs = Presentation("統計學習方法PPT.pptx")for slide in prs.slides: print(slide)

結果如下:

3)獲取Shape形狀
import pptxfrom pptx import Presentation
prs = Presentation("統計學習方法PPT.pptx")for slide in prs.slides: for shape in slide.shapes: print(shape)"""注意:這裡得到的Shape對象,並不能看出什麼,接著往下看。"""

結果如下:

4)判斷每個Shape中是否存在文字shape.has_text_frame :是否有文字
import pptxfrom pptx import Presentation
prs = Presentation("統計學習方法PPT.pptx")for slide in prs.slides: for shape in slide.shapes: if shape.has_text_frame: text_frame = shape.text_frame print(text_frame.text)

結果如下:

5)獲取某一頁Slide中的內容
import pptxfrom pptx import Presentation
prs = Presentation("統計學習方法PPT.pptx")
for i,slide in enumerate(prs.slides): if i == 5: for shape in slide.shapes: if shape.has_text_frame: text_frame = shape.text_frame print(text_frame.text)

結果如下:

6)獲取Shape中的某個Paragraph
import pptxfrom pptx import Presentation
prs = Presentation("統計學習方法PPT.pptx")
for i,slide in enumerate(prs.slides): if i == 5: for shape in slide.shapes: if shape.has_text_frame: text_frame = shape.text_frame for paragraph in text_frame.paragraphs: print(paragraph.text)"""注意:該方法和上述4)中的方法一摸一樣。上述方法是直接獲取Shpae中的文字內容;下面這個更靈活,先獲取每個Shape,然後在獲取每個Shape中的paragraph;下面方式更好:因為我們可以針對paragraph,寫一個判斷條件,只獲取第幾個paragraph;"""

結果如下:

4、利用python像PPT中寫入內容1)幻燈片模板及佔位符的概念在這裡插入圖片描述2)怎麼自定義母版?

https://jingyan.baidu.com/article/925f8cb8b5dfe7c0dce05671.html

3)什麼是版式?

這個概念在下面的效果中,會得以體現。其中prs.slide_layouts[]傳入0表示獲取的是第一個版式,傳入1表示獲取的是第二個版式,以此類推下去。

4)添加Slide和內容

這裡就需要使用上述的自定義母版。因為畢竟是使用python操作PPT,我們可以定義好自己想要展示的PPT母版,然後藉助代碼完成PPT的內容寫入操作。

① 佔位符id的確認
import pptxfrom pptx import Presentation
prs = Presentation("空白.pptx")# prs.slide_layouts[]表示的是ppt中不同的版式slide = prs.slides.add_slide(prs.slide_layouts[0])for shape in slide.placeholders: phf = shape.placeholder_format print(f"{phf.idx}--{shape.name}--{phf.type}") shape.text = f"{phf.idx}--{shape.name}--{phf.type}"# 注意:做完這個操作,一定要記得保存一下!prs.save("電子獎狀模板.pptx")"""上述列印結果如下:0--Title 1--TITLE (1) 這個表示標題佔位符,id為013--Picture Placeholder 2--PICTURE (18) 這個表示圖片佔位符,id為1314--Text Placeholder 3--BODY (2) 這個表示正文內容佔位符,id為1415--Text Placeholder 4--BODY (2) 這個表示正文內容佔位符,id為15我們一定要先知道每個空格的佔位符id,才可以進行下面內容的填充。"""

效果如下:

② PPT內容的填寫
import pptxfrom pptx import Presentation
prs = Presentation("空白.pptx")slide = prs.slides.add_slide(prs.slide_layouts[0])name = slide.placeholders[14]why = slide.placeholders[15]
name.text = "黃同學"why.text = "學習太積極"prs.save("內容填充.pptx")

效果如下:

5)添加段落① 佔位符id的確認
import pptxfrom pptx import Presentation
prs = Presentation("finall.pptx")slide = prs.slides.add_slide(prs.slide_layouts[0])for shape in slide.placeholders: phf = shape.placeholder_format print(f"{phf.idx}--{shape.name}--{phf.type}") shape.text = f"{phf.idx}--{shape.name}--{phf.type}"print("---")slide = prs.slides.add_slide(prs.slide_layouts[1])for shape in slide.placeholders: phf = shape.placeholder_format print(f"{phf.idx}--{shape.name}--{phf.type}") shape.text = f"{phf.idx}--{shape.name}--{phf.type}"
prs.save("哈哈.pptx")

效果如下:

② 段落的添加
import pptxfrom pptx import Presentation
prs = Presentation("finall.pptx")slide = prs.slides.add_slide(prs.slide_layouts[0])name = slide.placeholders[14]why = slide.placeholders[15]name.text = "黃同學"why.text = "學習太積極"# - #prs1 = Presentation("finall.pptx")slide1 = prs.slides.add_slide(prs.slide_layouts[1])shapes = slide1.shapestitle_shape = shapes.title # 這句代碼可以改為title_shape = shapes.placeholders[0]body_shape = shapes.placeholders[1]
title_shape.text = "這是一個標題"
tf = body_shape.text_frame# 這句代碼就是給body佔位符添加內容!tf.text = "帶圓點的符號1"
p = tf.add_paragraph()# 這個代碼表示在原來的基礎上,添加第一個段落!p.text = "帶圓點的符號2"
p = tf.add_paragraph()# 這個代碼表示在原來的基礎上,添加第二個段落!p.text = "帶圓點的符號3"
prs.save("嘿嘿.pptx")

效果如下:

③ 給段落設定層級關係
import pptxfrom pptx import Presentation
prs = Presentation("finall.pptx")slide = prs.slides.add_slide(prs.slide_layouts[0])name = slide.placeholders[14]why = slide.placeholders[15]name.text = "黃同學"why.text = "學習太積極"# - #prs1 = Presentation("finall.pptx")slide1 = prs.slides.add_slide(prs.slide_layouts[1])shapes = slide1.shapestitle_shape = shapes.title # 這句代碼可以改為title_shape = shapes.placeholders[0]body_shape = shapes.placeholders[1]
title_shape.text = "這是一個標題"
tf = body_shape.text_frametf.text = "帶圓點的符號1"
p = tf.add_paragraph()p.text = "帶圓點的符號2"# 原始內容的層級相當於是0,因此這個段落我設置為層級1,下面的段落設置為層級2p.level = 1
p = tf.add_paragraph()p.text = "帶圓點的符號3"p.level = 2
prs.save("嘻嘻.pptx")

效果如下:

④ 添加一個文本框slide.shapes.add_textbox(left, top, width, height)
from pptx import Presentationfrom pptx.util import Cm, Pt
prs = Presentation()# 使用第一個版式black_slide_layout = prs.slide_layouts[0]slide = prs.slides.add_slide(black_slide_layout)
left = top = width = height = Cm(3)text_box = slide.shapes.add_textbox(left, top, width, height)tf = text_box.text_frametf.text = "這是一段文本框裡面的文字"
p = tf.add_paragraph()p.text = "這是第二段文字,加粗,字號40"p.font.bold = Truep.font.size = Pt(40)
prs.save("添加一個文本框0.pptx")

效果如下:

⑤ 添加一個圖片slide.shapes.add_picture(圖片路徑, 距離左邊, 距離頂端, 寬度, 高度)

第一種展示:

from pptx import Presentationfrom pptx.util import Cm
prs = Presentation()# 使用第七個版式black_slide_layout = prs.slide_layouts[6]slide = prs.slides.add_slide(black_slide_layout)
left = top = Cm(3)pic = slide.shapes.add_picture("孫悟空.png", left, top)
prs.save("添加圖片1.pptx")

效果如下:第二種展示:

from pptx import Presentationfrom pptx.util import Cm
prs = Presentation()# 使用第七個版式black_slide_layout = prs.slide_layouts[6]slide = prs.slides.add_slide(black_slide_layout)
left = top = Cm(3)height = Cm(5.5)pic = slide.shapes.add_picture("孫悟空.png", left, top, height=height)
prs.save("添加圖片2.pptx")

效果如下:

⑥ 添加表格shapes.add_table(rows, cols, left, top, width, height)
from pptx import Presentationfrom pptx.util import Cm, Pt
prs = Presentation()# 使用第七個版式black_slide_layout = prs.slide_layouts[6]slide = prs.slides.add_slide(black_slide_layout)shapes = slide.shapes
rows, cols = 5, 3left = top = Cm(5)width = Cm(18)height = Cm(3)
table = shapes.add_table(rows, cols, left, top, width, height).tabletable.columns[0].width = Cm(6)table.columns[1].width = Cm(2)table.columns[2].width = Cm(2)table.rows[0].height = Cm(2)
data = [ ["姓名","性別","成績"], ["張三","男",96], ["李四","女",87], ["王五","女",90], ["趙六","男",78]]
for row in range(rows): for col in range(cols): table.cell(row,col).text = str(data[row][col])prs.save("插入表格.pptx")

結果如下:

5、PPT文檔內容樣式批量調整1)文本框位置的調整

上面我們已經知道怎麼添加文本框,現在我們需要做的就是,怎麼調整文本框的位置。

from pptx import Presentationfrom pptx.util import Cm, Ptfrom pptx.enum.text import MSO_ANCHOR, MSO_AUTO_SIZE
prs = Presentation()# 使用第七個版式black_slide_layout = prs.slide_layouts[6]slide = prs.slides.add_slide(black_slide_layout)
left = top = width = height = Cm(3)text_box = slide.shapes.add_textbox(left, top, width, height)tf = text_box.text_frametf.text = "這是一段文本框裡面的文字"# - #tf.margin_bottom = Cm(0.1) # 下邊距tf.margin_left = 0 # 下邊距# 一定要導入MSO_ANCHOR這個庫tf.vertical_anchor = MSO_ANCHOR.BOTTOM # 對齊文本方式:底端對齊tf.word_wrap = True # 框中的文字自動換行
prs.save("文本框樣式的調整.pptx")

結果如下:

2)文本框背景顏色調整
from pptx import Presentationfrom pptx.util import Cm, Ptfrom pptx.enum.text import MSO_ANCHOR, MSO_AUTO_SIZEfrom pptx.dml.color import RGBColor
prs = Presentation()# 使用第七個版式black_slide_layout = prs.slide_layouts[6]slide = prs.slides.add_slide(black_slide_layout)
left = top = width = height = Cm(3)text_box = slide.shapes.add_textbox(left, top, width, height)tf = text_box.text_frametf.text = "這是一段文本框裡面的文字"# --- #tf.margin_bottom = Cm(0.1) # 下邊距tf.margin_left = 0 # 下邊距tf.vertical_anchor = MSO_ANCHOR.BOTTOM tf.word_wrap = True # 框中的文字自動換行# --- #fill = text_box.fillfill.solid()# 使用之前一定要導入RGBColor這個庫fill.fore_color.rgb = RGBColor(247, 150, 70)
prs.save("文本框背景色的調整.pptx")

結果如下:

3)文本框邊框樣式調整
from pptx import Presentationfrom pptx.util import Cm, Ptfrom pptx.enum.text import MSO_ANCHOR, MSO_AUTO_SIZEfrom pptx.dml.color import RGBColor
prs = Presentation()# 使用第七個版式black_slide_layout = prs.slide_layouts[6]slide = prs.slides.add_slide(black_slide_layout)
left = top = width = height = Cm(3)text_box = slide.shapes.add_textbox(left, top, width, height)tf = text_box.text_frametf.text = "這是一段文本框裡面的文字"# --- #tf.margin_bottom = Cm(0.1) # 下邊距tf.margin_left = 0 # 下邊距tf.vertical_anchor = MSO_ANCHOR.BOTTOM tf.word_wrap = True # 框中的文字自動換行# --- #fill = text_box.fillfill.solid()# 使用之前一定要導入RGBColor這個庫fill.fore_color.rgb = RGBColor(247, 150, 70)# --- #line = text_box.lineline.color.rgb = RGBColor(255, 0, 0)line.width = Cm(0.3)
prs.save("文本框邊框樣式調整.pptx")

結果如下:

4)段落對其調整
from pptx import Presentationfrom pptx.enum.text import PP_ALIGN
prs = Presentation()# 使用第七個版式black_slide_layout = prs.slide_layouts[6]slide = prs.slides.add_slide(black_slide_layout)
left = top = width = height = Cm(3)text_box = slide.shapes.add_textbox(left, top, width, height)tf = text_box.text_frame# --- #p = tf.add_paragraph()p.text = "這是第二段文字"p.alignment = PP_ALIGN.LEFT
prs.save("段落對其調整.pptx")

當然這裡還有一些其他樣式的調整,和word很類似,就不一一敘述了。

5)字體樣式調整

代碼如下:

from pptx import Presentationfrom pptx.util import Cm, Ptfrom pptx.enum.text import MSO_ANCHOR, MSO_AUTO_SIZEfrom pptx.dml.color import RGBColorfrom pptx.enum.text import PP_ALIGN
prs = Presentation()# 使用第七個版式black_slide_layout = prs.slide_layouts[6]slide = prs.slides.add_slide(black_slide_layout)
left = top = width = height = Cm(3)text_box = slide.shapes.add_textbox(left, top, width, height)tf = text_box.text_frame# --- #p = tf.add_paragraph()p.text = "這是第二段文字"p.alignment = PP_ALIGN.LEFT# -- #p.font.bold = Truep.font.name = "宋體"p.font.color.rgb = RGBColor(247, 150, 70)p.font.size = Pt(30)
prs.save("字體樣式調整.pptx")

結果如下:

相關焦點

  • 從PPT到Word,用Python輕鬆實現辦公自動化
    來源  | 早起Python(ID:zaoqi-python)在之前的自動化系列文章中,我們分別講過如何使用 Python 將 Word 中表格信息批量提取至
  • 講一講我是如何通過Python實現辦公自動化的
    自動化辦公無非是excel、ppt、word、郵件、文件處理、數據分析處理、爬蟲這些,今天我們主要來講講excel、ppt、word自動化的操作技巧。我們需要學習的主要內容有:python基礎;excel自動化;ppt自動化;word自動化。
  • Python自動化用這些知識點就夠了!
    這可能是很多非IT職場人士面臨的困惑,想把python用到工作中,卻不知如何下手?python在自動化辦公領域越來越受歡迎,批量處理簡直是加班族的福音。自動化辦公無非是excel、ppt、word、郵件、文件處理、數據分析處理、爬蟲這些,這次就來理一理python自動化辦公的那些知識點。下面一一詳解。
  • python自動化辦公系列 | python操作pdf—— PyPDF2 和 pdfplumber模塊(2)
    接著上次關於使用python操作pdf文件的文章,繼續模塊使用的知識分析,大家一起學習,python自動化辦公系列 | python操作pdf—— PyPDF2 和 pdfplumber模塊(1)1)PDF合併及頁面的排序和旋轉1)分割及合併pdf① 合併pdf首先,我們有如下幾個文件,可以發現這裡共有三個PDF
  • Python自動化辦公(內容)
    python自動化辦公(python操作Excel、Word、PDF、PPT)python使用openpyxl操作excel;python使用PyPDF2和pdfplumber操作pdf;python使用python-docx操作word;python使用python-pptx操作PPT;python如何自動收發郵件;python製作電話號碼歸屬地查詢工具;一:python
  • 用Python玩轉PPT
    基本結構再看一下ppt結構組成,會較word複雜許多。當然這也跟ppt的高度自定義拓展性有關簡單來說,一個PPT文件為presentation,基本的結構為展示文件presentation-幻燈片頁slide-形狀shape組成,形狀就需要區分開,是包含文本的形狀還是不包含文本的形狀(純圖片等)。
  • 用Python自動化操作PPT,看完這篇文章就夠了!
    1.PPT自動化能幹什麼?有什麼優勢?總之就是:它能提高你的工作效率!讓你有更多時間去做其他事情!3.2 python-pptx 複製頁面使用python-pptx進行複製沒有找到合適的方法,有以下兩種解決辦法:增加模板ppt數量,然後使用python-pptx對不需要的模板頁進行刪減操作
  • 通過python-pptx模塊操作ppt文件
    歡迎關注」生信修煉手冊」! ppt通過其精美的可視化技巧以及良好的演示效果,成為了職場人士的必備技能。ppt的設計是一門大學問,無論是設計技巧,還是操作方法,都衍生出了專門的課程。
  • 【Python基礎】python使用python-docx操作word
    1、python-docx庫介紹該模塊兒可以創建、修改Word(.docx)文件;python-docx使用官網:python-docx官網我們在安裝此模塊兒使用的是pip install python-docx,但是在導入的時候是import docx;2、Python讀取Word文檔內容注意:每進行一個操作,必須保存一下,否則等於白做;1)word文檔結構介紹在這裡插入圖片描述2)python-docx
  • 【他山之石】Python和Excel終於可以互通了,自動化辦公實操寶典速來下載!
    前言今天分享我的一位同事在學習了Huang Supreme寫的《Python自動化辦公寶典》之後,如何使用Python快速處理日常工作中的Excel數據表格。本文將以詳細圖表/代碼的形式講解如何對Excel進行讀取、寫入及樣式調整,基本還涵蓋了我們常用的Excel處理數據的方法。
  • 8個實用的 Python 自動化辦公技巧
    平時在公司做數據分析的時候, 也會用python做些辦公自動化的工作, 領導昨天說別人3個小時的活我們已經可以3分鐘完成了 。
  • python辦公自動化(二) | 讀取.txt、.data、.doc和.docx文檔的部分內容
    python的文件操作,是python辦公自動化的最基礎部分。
  • 硬貨上架|Python辦公自動化專欄發布!
    收錄於話題 #20天學會Python辦公自動化特點如下:(1)面向對象(字符串、數字、函數、模塊 一切皆對象) (2)易於學習:Python有相對較少的關鍵字,結構簡單,和一個明確定義的語法,學習起來更加簡單。 (3)易於閱讀和維護:Python代碼定義的更清晰、Python的成功在於它的原始碼是相當容易維護的。
  • python自動化辦公速學,學會這騷姿勢,加班?不存在的!
    日常工作中最痛苦的就莫過於,明明知道是重複的工作,卻不得不,重複的做,既煩躁又低效率,用python來解放雙手把,小編帶你利用python-pptx (0.6.7)自動生成250張PPT, 希望通過實例, 給常年整理PPT報表的上班族, 一個解放生產力的新思路。
  • 【Python基礎】python使用PyPDF2和pdfplumber操作pdf
    辦公自動化\concat_pdf"))+1): print(i*50+1,(i+1)*50) pdf_reader = PdfFileReader("G:\\6Tipdm\\7python辦公自動化\\concat_pdf\{}-{}.pdf".format(i*50+1,(i+1)*50)) for page in range(pdf_reader.getNumPages()):
  • Python 辦公自動化之 PDF 的詳細操作
    辦公自動化應該算是打工人上班摸魚的極致追求了,況且對於 Python 愛好者來說,辦公自動化簡直是太簡單了比如,今天的辦公自動化主題:Python 操作 PDF今天的具體內容將會從以下幾個小節展開:上述操作比較常用,也可以解決較多的辦公內容,下面直接開始本節內容:
  • Python辦公自動化:手把手教你如何批量在PDF文件中添加文字和圖片
    課題:多頁PDF文件,在固定位置添加文字和圖片,效果如下:測試文檔放到了S盤以下位置:S:\All\QMW Community Sharing\數位化探索\python 自動化辦公課程筆記\實例4 PDF添加文字和圖片###############################如何利用Python批量的給PDF文件添加文字和圖片呢
  • Python視頻教程網課編程零基礎入門數據分析網絡爬蟲全套Python...
    總目錄 零基礎全能篇(4套課程) 實用編程技巧進價(1套課程) 數據分析與挖掘(8套課程) 辦公自動化(3套課程) 機器學習與人工智慧(7套課程) 開發實戰篇(4套課程) 量化投資(2套課程) 網絡爬蟲(6套課程) 資料庫操作(1套課程) python高級編程
  • 聊聊python 辦公自動化之 Excel(上)
    前言在我們日常工作中,經常會使用 Word、Excel、PPT、PDF 等辦公軟體。但是,經常會遇到一些重複繁瑣的事情,這時候手工操作顯得效率極其低下;通過python 實現辦公自動化很有必要。接下來的 一系列 文章,我將帶大家對 Python 辦公自動化做一個全面的總結,絕對的乾貨!
  • 雲計算培訓學院,雲計算Python自動化運維開發實戰
    都忘記是什麼時候知道python的了,我是搞linux運維的,早先只是知道搞運維必須會shell,要做一些運維自動化的工作,比如實現一些定時備份數據啊、批量執行某個操作啊、寫寫監控腳本什麼的。印象最深的是花幾天時間把《python簡明手冊》看完後,感覺python很簡單,特二的認為自己會python了,尷尬的在後面,發現我只是學了點python的基礎,現在看來連皮毛都算不上。