Python自动化办公中的应用说明和脚本示例
作者:点云SLAM
Python在自动化办公中的应用非常广泛,Python 自动化办公包括:文档处理(Word/Excel)、邮件处理、PDF 操作、文件整理、数据采集与报表、人工流程替代等,Python自动化常用库包括openpyxl、pandas、docx、smtplib、imaplib、pyautogui、pdfplumber、PyPDF2、schedule
Python 在自动化办公中的应用非常广泛,可大幅减少重复性操作,提升办公效率。Python 自动化办公包括:文档处理(Word/Excel)、邮件处理、PDF 操作、文件整理、数据采集与报表、人工流程替代等。Python自动化常用库包括openpyxl、pandas、docx、smtplib、imaplib、pyautogui、pdfplumber、PyPDF2、schedule。
本文全面的讲解Python自动化办公,并附带多个常用场景的 代码示例。
一、自动化办公能做什么?
任务类型 | 示例功能 |
---|---|
文档处理(Word/Excel) | 生成报告、批量修改、数据填充 |
邮件处理 | 自动发邮件、收邮件、附件下载 |
PDF 操作 | 拆分、合并、加密、提取文本 |
文件整理 | 批量重命名、分类移动、自动归档 |
数据采集与报表 | 从网页抓取数据,生成日报或周报 |
人工流程替代 | 自动点击、填表、模拟人工输入(结合 pyautogui) |
二、Python 自动化常用库一览
库名 | 用途 |
---|---|
openpyxl | 操作 Excel(.xlsx ) |
pandas | 表格数据处理 |
docx | 操作 Word 文档 |
smtplib | 发送邮件 |
imaplib | 接收邮件 |
pyautogui | 模拟鼠标键盘操作 |
pdfplumber | 提取 PDF 文本内容 |
PyPDF2 | 拆分/合并 PDF |
schedule | 定时任务 |
三、典型场景代码示例
1. 批量生成 Excel 报表(openpyxl)
from openpyxl import Workbook data = [ ['姓名', '部门', '成绩'], ['张三', '销售部', 89], ['李四', '技术部', 95] ] wb = Workbook() ws = wb.active ws.title = "员工成绩表" for row in data: ws.append(row) wb.save("员工成绩表.xlsx") print(" Excel 报表已生成。")
2. 自动发送邮件(带附件)
import smtplib from email.message import EmailMessage msg = EmailMessage() msg['Subject'] = '日报 - 自动发送' msg['From'] = 'your_email@example.com' msg['To'] = 'receiver@example.com' msg.set_content('请查收今日日报,见附件。') # 添加附件 with open('日报.xlsx', 'rb') as f: msg.add_attachment(f.read(), maintype='application', subtype='vnd.openxmlformats-officedocument.spreadsheetml.sheet', filename='日报.xlsx') # 发送邮件(使用QQ邮箱为例) with smtplib.SMTP_SSL('smtp.qq.com', 465) as smtp: smtp.login('your_email@example.com', 'your_app_password') smtp.send_message(msg) print(" 邮件已发送。")
3. 批量提取 PDF 文本(pdfplumber)
import pdfplumber with pdfplumber.open('文件.pdf') as pdf: all_text = '' for page in pdf.pages: all_text += page.extract_text() + '\n' with open('提取内容.txt', 'w', encoding='utf-8') as f: f.write(all_text) print(" PDF 文本已提取。")
4. 自动打开网页、模拟输入(pyautogui + webbrowser)
import webbrowser import pyautogui import time # 打开网页 webbrowser.open('https://www.google.com') time.sleep(3) # 等待页面加载 # 模拟输入搜索内容 pyautogui.write('Python automation', interval=0.1) pyautogui.press('enter') print(" 自动搜索已完成。")
5. 定时任务(schedule)
import schedule import time def job(): print("现在是:", time.strftime("%H:%M:%S"), " → 执行任务") # 每天早上 9 点执行 schedule.every().day.at("09:00").do(job) while True: schedule.run_pending() time.sleep(1)
四、组合案例:自动发送日报
假设你有一个 Excel 日报,每天生成并通过邮件发送:
- 用
openpyxl
创建日报 - 用
smtplib
发送邮件 - 用
schedule
定时运行 - 也可打包为
.exe
实现傻瓜式执行(使用pyinstaller
)
五、提升建议
- 使用
logging
模块记录日志 - 配合
Tkinter
或PyQt
做可视化界面 - 写成函数模块,支持定制化
- 学会使用任务计划(Windows)或
crontab
(Linux/macOS)
批量处理 Excel 文件是办公自动化中非常常见的需求,比如:
- 读取多个 Excel 文件中的数据并合并
- 批量修改单元格内容
- 提取指定字段后导出为新表
- 批量生成报表
六、扩展:批量处理Excel
适用场景
场景 | 示例 |
---|---|
批量读取多个 Excel 文件 | 合并多个日报、月报文件为一个总表 |
批量修改某列 | 修改“状态”列中的“未完成”为“完成” |
按条件提取或汇总数据 | 提取销售额大于 1 万的记录 |
批量写入、创建新表 | 每人生成一个专属工作表 |
常用库安装
pip install openpyxl pandas
批量处理 Excel 文件代码示例
示例 1:批量合并多个 Excel 表格
功能:将某个文件夹下所有 .xlsx
文件合并为一个总表
import pandas as pd import os folder = './excel_files' # Excel 文件所在文件夹 output_file = '合并结果.xlsx' all_data = [] for file in os.listdir(folder): if file.endswith('.xlsx'): file_path = os.path.join(folder, file) df = pd.read_excel(file_path) df['来源文件'] = file # 可选:添加来源文件列 all_data.append(df) # 合并所有数据 merged_df = pd.concat(all_data, ignore_index=True) merged_df.to_excel(output_file, index=False) print(" 所有 Excel 文件已合并到:", output_file)
示例 2:批量修改某一列中的值(如“状态”列)
import pandas as pd import os folder = './excel_files' for file in os.listdir(folder): if file.endswith('.xlsx'): path = os.path.join(folder, file) df = pd.read_excel(path) # 修改 “状态” 列中的“未完成”为“完成” df['状态'] = df['状态'].replace('未完成', '完成') # 保存覆盖原文件 df.to_excel(path, index=False) print(f" 已修改:{file}")
示例 3:按字段筛选并保存为新表
import pandas as pd import os input_file = '员工信息表.xlsx' df = pd.read_excel(input_file) # 筛选工资大于10000的员工 filtered = df[df['工资'] > 10000] filtered.to_excel('高薪员工.xlsx', index=False) print(" 筛选结果已保存。")
示例 4:为每位员工生成单独 Excel 表
import pandas as pd import os df = pd.read_excel('员工信息.xlsx') output_dir = './员工报表' os.makedirs(output_dir, exist_ok=True) # 按“姓名”分组,每个员工一个文件 for name, group in df.groupby('姓名'): filename = os.path.join(output_dir, f'{name}_报表.xlsx') group.to_excel(filename, index=False) print(f" 已生成:{filename}")
进阶建议
- 用
Tkinter
加上文件夹选择、按钮,做成 GUI 工具 - 加日志记录:每次处理记录时间、文件名
- 使用定时器 + 自动邮件发送,形成完整自动报表流程
- 使用
openpyxl
更细粒度控制样式、颜色、单元格合并等
自动清洗多个 Excel 表中的重复数据示例:
下面是自动遍历一个文件夹下的多个 Excel 文件,按指定的列去重,并把清洗后的结果另存到一个新文件夹Python脚本。
脚本示例(Python 3 + pandas)
import os import pandas as pd # === 配置区域 === input_folder = r"./excel_input" # 待处理Excel文件所在文件夹 output_folder = r"./excel_output" # 清洗后文件保存文件夹 subset_columns = None # 去重依据的列,例如 ["姓名", "身份证号"],None表示全列去重 keep_rule = "first" # 保留规则: "first" 保留首次出现, "last" 保留最后一次, False 保留所有重复(不常用) # 创建输出文件夹 os.makedirs(output_folder, exist_ok=True) # 遍历文件夹中的所有Excel文件 for filename in os.listdir(input_folder): if filename.lower().endswith((".xls", ".xlsx")): file_path = os.path.join(input_folder, filename) try: # 读取Excel(保留所有sheet) xls = pd.ExcelFile(file_path) cleaned_sheets = {} for sheet_name in xls.sheet_names: df = pd.read_excel(xls, sheet_name=sheet_name) # 去重 before_rows = len(df) df_cleaned = df.drop_duplicates(subset=subset_columns, keep=keep_rule) after_rows = len(df_cleaned) print(f"{filename} - {sheet_name}: {before_rows} -> {after_rows} 行") cleaned_sheets[sheet_name] = df_cleaned # 保存清洗后的文件 output_path = os.path.join(output_folder, filename) with pd.ExcelWriter(output_path, engine="openpyxl") as writer: for sheet_name, df_cleaned in cleaned_sheets.items(): df_cleaned.to_excel(writer, sheet_name=sheet_name, index=False) except Exception as e: print(f"处理文件 {filename} 时出错: {e}") print(" 数据清洗完成!")
七、总结
到此这篇关于Python自动化办公中的应用说明和脚本示例的文章就介绍到这了,更多相关python自动化办公脚本内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!