一、安装
官方API文档: https://python-pptx.readthedocs.io/en/latest/index.html
pip install python-pptx
二、方法1:根据占位符生成表格
母版
插入占位符--表格
程序可以按照index索引找到设计好的版式页,index从0开始,也可以通过名字
1. 使用自定义ppt模板
from pptx import Presentation
prs = Presentation("test.pptx")
2. 生成一个新页面
按照索引生成
slide = self.prs.slides.add_slide(prs.slide_layouts[1])
按照名字生成
slide = self.prs.slides.add_slide(prs.slide_layouts.get_by_name('name'))
3. 确认占位符id
slide = self.prs.slides.add_slide(prs.slide_layouts[1]) # 用第一个母版生成一页ppt
for shape in slide.placeholders: # 获取这一页所有的占位符
phf = shape.placeholder_format
print(f'{phf.idx}--{shape.name}--{phf.type}')
结果:
4. 往占位符里填写内容
slide = self.prs.slides.add_slide(prs.slide_layouts[1]) # 用第一个母版生成一页ppt
#修改标题
title = slide.placeholders[0]
title.text = "这里是标题"
col_name = [['hh','this'],['A','B']]
table =slide.placeholders[13]
rows,cols = 2,2
table0 = table.insert_table(rows,cols).table
for row in range(0,rows):
for col in range(0,cols):
table0 .cell(row,col).text = col_name[row][col]
结果
三、方法2:直接生成表格
代码
这种方法不需要母版里插入表格占位符
根据top left以及width height来定位表格,这样的话需要很多调整
slide = self.prs.slides.add_slide(prs.slide_layouts[1]) # 用第一个母版生成一页ppt
#修改标题
title = slide.placeholders[0]
title.text = "这里是标题"
col_name = [['hh','this'],['A','B']]
rows,cols = 2,2
top,left,width,height =Cm(3),Cm(1),Cm(25),Cm(1)
table0 = slide.shapes.add_table(rows,cols,left,top,width,height).table
for row in range(0,rows):
for col in range(0,cols):
table0 .cell(row,col).text = col_name[row][col]
结果
四、设置表格字体大小
from pptx.util import Inches,Cm,Pt
#参数table为上面生成的table0
def tableSize(table):
for cell in table.iter_cells():
for paragraph in cell.text_frame.paragraphs:
paragraph.font.size = Pt(12)