Word 和 PowerPoint 文件操作
python-docx 操作 Word
pip install python-docx
创建 Word 文档
from docx import Document
from docx.shared import Cm, Pt
doc = Document()
# 标题
doc.add_heading('快快乐乐学Python', 0) # 0级标题
# 段落(可加粗、下划线等)
p = doc.add_paragraph('Python是一门')
run = p.add_run('简单')
run.bold = True
run.font.size = Pt(18)
p.add_run('且')
run = p.add_run('优雅')
run.underline = True
p.add_run('的语言')
# 列表
doc.add_paragraph('第一项', style='List Bullet') # 无序
doc.add_paragraph('第二项', style='List Number') # 有序
# 表格
table = doc.add_table(rows=1, cols=3)
table.style = 'Light Grid Accent 1'
hdr = table.rows[0].cells
hdr[0].text = '姓名'
hdr[1].text = '年龄'
hdr[2].text = '城市'
table.add_row().cells[0].text = 'Alice'
table.add_row().cells[0].text = 'Bob'
# 图片
doc.add_picture('photo.jpg', width=Cm(5))
# 分页
doc.add_page_break()
doc.save('demo.docx')
读取 Word 文档
from docx import Document
doc = Document('demo.docx')
# 遍历段落
for p in doc.paragraphs:
print(p.text)
# 遍历表格
for table in doc.tables:
for row in table.rows:
for cell in row.cells:
print(cell.text)
批量生成文档(模板替换)
适合批量生成合同、证明等固定格式文档:
from docx import Document
employees = [
{'name': '张三', 'id': '510***1995***001', 'company': 'A公司'},
{'name': '李四', 'id': '510***1992***002', 'company': 'B公司'},
]
for emp in employees:
doc = Document('模板.docx')
for p in doc.paragraphs:
for run in p.runs:
if '{' in run.text:
start, end = run.text.find('{'), run.text.find('}')
key = run.text[start+1:end]
if key in emp:
run.text = run.text.replace(f'{{{key}}}', emp[key])
doc.save(f'{emp["name"]}_证明.docx')
python-pptx 操作 PowerPoint
pip install python-pptx
创建幻灯片
from pptx import Presentation
pres = Presentation()
# 添加幻灯片(选择布局模板)
slide_layout = pres.slide_layouts[0] # 标题页
slide = pres.slides.add_slide(slide_layout)
slide.shapes.title.text = "欢迎学习Python"
slide.placeholders[1].text = "人生苦短,我用Python"
# 添加内容页
slide_layout = pres.slide_layouts[1] # 标题+内容
slide = pres.slides.add_slide(slide_layout)
title = slide.shapes.title
title.text = "Python简介"
body = slide.placeholders[1].text_frame
body.text = "历史沿革"
p = body.add_paragraph("1991年诞生", level=1)
p = body.add_paragraph("Guido创建", level=2)
pres.save('demo.pptx')
总结
python-docx:创建/读取/修改.docx文件,支持标题、段落、列表、表格、图片- 模板替换:适合批量生成固定格式文档
python-pptx:创建幻灯片,设置标题、内容、层级- 两者都基于 XML 结构,无需安装 Office