一、需求
批量从PPT中提取相关文本内容和表格内容,并保存至word文档中,参考例子如图:
二、处理方式
1、通过os模块遍历文件,提取pptx格式文件;
2、通过python-pptx模块,进行pptx文件内容的提取;
3、通过python-docx模块,将提取的内容写入word文档中。
注:
1、图片内容不能使用此方法提取,可通过压缩文件后,提取压缩包中的图片来实现;
2、信息提取顺序是根据编写ppt时,shape的写入顺序来决定的。
3、python版本 3.8
python-docx版本 0.8.10
python-pptx版本 0.6.19
三、代码实现
from pptx import Presentation
from docx import Document
import os
doc = Document()
for file in os.scandir():
if file.name.endswith('.pptx'):
prs = Presentation(file.name)
table_ls=[]
for slide in prs.slides:
for shape in slide.shapes:
if shape.has_text_frame:
text_frame = shape.text_frame
doc.add_paragraph(text_frame.text)
elif shape.has_table:
table = shape.table
table_rows = len(table.rows)
table_cols = len(table.columns)
for row in table.rows:
row_ls=[]
for cell in row.cells:
row_ls.append(cell.text)
table_ls.append(row_ls)
table = doc.add_table(rows = table_rows,cols = table_cols)
table.style = 'Light Grid'
for row in range(table_rows):
cells = table.rows[row].cells
for col in range(table_cols):
cells[col].text = str(table_ls[row][col])
doc.save('demo.docx')
最终实现如图:
|