Python 提供了丰富的库来处理 Office 文档(Word、Excel、PowerPoint)、PDF 以及电子邮件等办公自动化任务。
Excel 处理
1. 主流 Excel 库
openpyxl (推荐)
# 安装: pip install openpyxl
from openpyxl import Workbook
wb = Workbook()
ws = wb.active
ws['A1'] = 42
ws.append([1, 2, 3])
wb.save("example.xlsx")
特点:
-
读写.xlsx格式
-
支持公式、图表、样式
-
不依赖Excel软件
-
内存友好
xlwings
# 安装: pip install xlwings
import xlwings as xw
wb = xw.Book() # 新建Excel
sheet = wb.sheets['Sheet1']
sheet.range('A1').value = 'Hello'
wb.save('test.xlsx')
wb.close()
特点:
-
可操作已打开的Excel
-
支持VBA调用
-
需要安装Excel软件
pandas (数据处理首选)
# 安装: pip install pandas openpyxl
import pandas as pd
# 读取
df = pd.read_excel("input.xlsx", sheet_name="Sheet1")
# 处理数据
df['new_col'] = df['col1'] * 2
# 写入
df.to_excel("output.xlsx", index=False)
特点:
-
强大的数据处理能力
-
依赖openpyxl/xlrd作为后端
-
适合大数据量操作
2. 其他Excel库
库名 | 特点 | 适用场景 |
---|---|---|
xlrd/xlwt | 只支持.xls格式 | 旧版Excel文件处理 |
pyxlsb | 读取.xlsb二进制文件 | 大数据量Excel文件 |
xlsxwriter | 仅写入,功能强大 | 生成复杂报表 |
Word 文档处理
1. python-docx (推荐)
# 安装: pip install python-docx
from docx import Document
doc = Document()
doc.add_heading('Python生成的文档', 0)
doc.add_paragraph('这是一个段落')
doc.add_table(rows=2, cols=2)
doc.save('demo.docx')
特点:
-
读写.docx文件
-
支持段落、表格、图片
-
样式设置丰富
2. docx2pdf (转换工具)
# 安装: pip install docx2pdf from docx2pdf import convert convert("input.docx", "output.pdf")
3. 其他Word处理库
-
pywin32: 通过COM接口控制Word软件
-
docx-mailmerge: 邮件合并功能
-
python-docx-template: 模板化生成Word
PowerPoint 处理
python-pptx
# 安装: pip install python-pptx
from pptx import Presentation
prs = Presentation()
slide = prs.slides.add_slide(prs.slide_layouts[1])
slide.shapes.title.text = "Python生成的PPT"
slide.placeholders[1].text = "内容区域"
prs.save('test.pptx')
特点:
-
创建和更新.pptx文件
-
支持幻灯片、形状、图表
-
可添加图片和动画效果
PDF 处理
1. PyPDF2 (基础操作)
# 安装: pip install PyPDF2
from PyPDF2 import PdfFileReader, PdfFileWriter
reader = PdfFileReader("input.pdf")
writer = PdfFileWriter()
writer.addPage(reader.getPage(0))
with open("output.pdf", "wb") as f:
writer.write(f)
2. pdfkit (HTML转PDF)
# 安装: pip install pdfkit # 需要额外安装wkhtmltopdf import pdfkit pdfkit.from_file('input.html', 'output.pdf')
3. ReportLab (生成PDF)
# 安装: pip install reportlab
from reportlab.pdfgen import canvas
c = canvas.Canvas("hello.pdf")
c.drawString(100, 750, "Welcome to ReportLab!")
c.save()
4. 其他PDF库
库名 | 特点 |
---|---|
pdfminer.six | 提取PDF文本和元数据 |
pdf2docx | PDF转Word |
fpdf2 | 轻量级PDF生成库 |
电子邮件处理
1. 发送邮件 (smtplib + email)
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
msg = MIMEMultipart()
msg['From'] = 'me@example.com'
msg['To'] = 'you@example.com'
msg['Subject'] = 'Python邮件测试'
msg.attach(MIMEText('邮件正文内容', 'plain'))
server = smtplib.SMTP('smtp.example.com', 587)
server.starttls()
server.login('user', 'password')
server.send_message(msg)
server.quit()
2. 读取邮件 (imaplib)
import imaplib
import email
mail = imaplib.IMAP4_SSL('imap.example.com')
mail.login('user@example.com', 'password')
mail.select('inbox')
typ, data = mail.search(None, 'ALL')
for num in data[0].split():
typ, msg_data = mail.fetch(num, '(RFC822)')
msg = email.message_from_bytes(msg_data[0][1])
print(msg['Subject'])
办公自动化综合工具
1. pywin32 (Windows Office自动化)
# 安装: pip install pywin32
import win32com.client
excel = win32com.client.Dispatch("Excel.Application")
excel.Visible = True
wb = excel.Workbooks.Add()
ws = wb.Worksheets(1)
ws.Cells(1,1).Value = "Hello Excel"
wb.SaveAs("test.xlsx")
excel.Quit()
特点:
-
控制已安装的Office软件
-
功能最全面
-
仅限Windows系统
2. unoconv (文档格式转换)
# 需要安装LibreOffice
import os
os.system('unoconv -f pdf test.docx') # Word转PDF
实践建议
-
格式选择:
-
数据处理优先使用Excel+pandas
-
文档生成使用python-docx
-
复杂报表考虑Jinja2模板+PDF
-
-
性能考虑:
# 大批量Excel数据处理技巧 chunksize = 10**4 for chunk in pd.read_excel('large.xlsx', chunksize=chunksize): process(chunk)
-
安全注意事项:
-
处理用户上传的Office文件时使用沙盒环境
-
PDF处理注意恶意文件防护
-
邮件处理防范注入攻击
-
-
错误处理:
try: doc = Document("corrupted.docx") except PackageNotFoundError: print("文件已损坏或不是有效的Word文档")
这些Python库可以满足绝大多数办公自动化需求,从简单的数据导出到复杂的文档生成都能高效完成。根据具体需求选择合适的工具组合,可以显著提高办公效率。