Python自动化办公能解决什么

每周一你要把上周五的销售数据整理成Excel报表,发给5个部门负责人,再把汇总PDF存档。这个流程每周重复,每次1小时。用Python写个脚本,点击运行2分钟完成,而且不会出错。本教程覆盖最常用的三个场景:Excel处理、邮件发送、PDF操作。

第一步:Excel读写与格式设置

用openpyxl库操作Excel文件。基础读写:

import openpyxl
wb = openpyxl.load_workbook(‘data.xlsx’)
ws = wb.active
print(ws[‘A1’].value)
ws[‘B2’] = 100
wb.save(‘output.xlsx’)

批量写入数据:

data = [[‘产品’, ‘销量’, ‘金额’], [‘A’, 100, 5000], [‘B’, 200, 8000]]
for row in data:
ws.append(row)

设置格式(字体、颜色、边框):

from openpyxl.styles import Font, PatternFill
ws[‘A1’].font = Font(bold=True, size=12)
ws[‘A1′].fill = PatternFill(start_color=’FFFF00′, end_color=’FFFF00′, fill_type=’solid’)

第二步:批量发送个性化邮件

用smtplib发送邮件,配合email.mime构建内容:

import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart

msg = MIMEMultipart()
msg[‘From’] = ‘your@email.com’
msg[‘To’] = ‘boss@company.com’
msg[‘Subject’] = ‘周报’
msg.attach(MIMEText(‘本周销售数据见附件’, ‘plain’))

server = smtplib.SMTP(‘smtp.company.com’, 587)
server.starttls()
server.login(‘your@email.com’, ‘password’)
server.send_message(msg)
server.quit()

批量发送时,把收件人信息放在Excel或CSV中,循环读取并替换邮件内容中的姓名、部门等变量。

第三步:PDF合并与拆分

用PyPDF2处理PDF文件。合并多个PDF:

from PyPDF2 import PdfMerger
merger = PdfMerger()
for pdf in [‘file1.pdf’, ‘file2.pdf’, ‘file3.pdf’]:
merger.append(pdf)
merger.write(‘merged.pdf’)
merger.close()

拆分PDF(提取指定页面):

from PyPDF2 import PdfReader, PdfWriter
reader = PdfReader(‘document.pdf’)
writer = PdfWriter()
writer.add_page(reader.pages[0])
writer.write(‘page1.pdf’)

提取文字:

reader = PdfReader(‘report.pdf’)
text = ”
for page in reader.pages:
text += page.extract_text()

第四步:Word文档自动生成

用python-docx生成Word报告:

from docx import Document
doc = Document()
doc.add_heading(‘月度销售报告’, 0)
doc.add_paragraph(‘本月销售额同比增长15%,主要得益于新渠道拓展。’)
doc.add_heading(‘各区域业绩’, level=1)
table = doc.add_table(rows=3, cols=3)
table.cell(0,0).text = ‘区域’
table.cell(0,1).text = ‘销售额’
table.cell(0,2).text = ‘增长率’
doc.save(‘report.docx’)

第五步:整合成一个自动化脚本

把上述功能组合成一个完整的周报自动化脚本:

  1. 读取原始销售数据(Excel/CSV)
  2. 汇总计算(总销售额、各区域占比、Top5产品)
  3. 生成Excel报表(含格式和图表)
  4. 生成PDF版本(用于存档)
  5. 发送邮件给相关人员(带附件)

脚本写好后,可以用Windows任务计划程序或macOS的launchd设置定时执行,真正实现全自动。

常见问题与误区

  • Excel文件被占用导致保存失败——确保Excel文件关闭后再用Python操作
  • 中文乱码——文件编码设为UTF-8,openpyxl默认支持中文
  • 邮件被当作垃圾邮件——添加正文内容、使用公司邮箱、避免附件过大
  • PDF提取文字为空——扫描版PDF无法提取文字,需要OCR预处理

效率数据

实测:周报流程(汇总数据+生成报表+发送邮件),手动操作约45分钟,Python脚本约3分钟。月度报告生成(10个Sheet+图表+PDF),手动约2小时,脚本约5分钟。学习成本:有编程基础的人1天掌握,零基础约3天。ROI计算:每周节省40分钟,一年节省35小时,投入学习时间8小时,ROI约4倍。核心建议是:任何每周重复超过2次、步骤固定的任务,都值得用Python自动化。