> 技术文档 > Python 在自动化办公汇总和脚本示例_python自动化办公脚本

Python 在自动化办公汇总和脚本示例_python自动化办公脚本

Python 在自动化办公中的应用非常广泛,可大幅减少重复性操作,提升办公效率。以下是一个全面的 Python 自动化办公详解,并附带多个常用场景的 代码示例,包括:


一、自动化办公能做什么?

任务类型 示例功能 文档处理(Word/Excel) 生成报告、批量修改、数据填充 邮件处理 自动发邮件、收邮件、附件下载 PDF 操作 拆分、合并、加密、提取文本 文件整理 批量重命名、分类移动、自动归档 数据采集与报表 从网页抓取数据,生成日报或周报 人工流程替代 自动点击、填表、模拟人工输入(结合 pyautogui)

二、Python 自动化常用库一览

库名 用途 openpyxl 操作 Excel(.xlsxpandas 表格数据处理 docx 操作 Word 文档 smtplib 发送邮件 imaplib 接收邮件 pyautogui 模拟鼠标键盘操作 pdfplumber 提取 PDF 文本内容 PyPDF2 拆分/合并 PDF schedule 定时任务

三、典型场景代码示例


1. 批量生成 Excel 报表(openpyxl)

from openpyxl import Workbookdata = [ [\'姓名\', \'部门\', \'成绩\'], [\'张三\', \'销售部\', 89], [\'李四\', \'技术部\', 95]]wb = Workbook()ws = wb.activews.title = \"员工成绩表\"for row in data: ws.append(row)wb.save(\"员工成绩表.xlsx\")print(\" Excel 报表已生成。\")

2. 自动发送邮件(带附件)

import smtplibfrom email.message import EmailMessagemsg = 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 pdfplumberwith 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 webbrowserimport pyautoguiimport time# 打开网页webbrowser.open(\'https://www.google.com\')time.sleep(3) # 等待页面加载# 模拟输入搜索内容pyautogui.write(\'Python automation\', interval=0.1)pyautogui.press(\'enter\')print(\" 自动搜索已完成。\")

5. 定时任务(schedule)

import scheduleimport timedef 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 日报,每天生成并通过邮件发送:

  1. openpyxl 创建日报
  2. smtplib 发送邮件
  3. schedule 定时运行
  4. 也可打包为 .exe 实现傻瓜式执行(使用 pyinstaller

五、提升建议

  • 使用 logging 模块记录日志
  • 配合 TkinterPyQt 做可视化界面
  • 写成函数模块,支持定制化
  • 学会使用任务计划(Windows)或 crontab(Linux/macOS)

批量处理 Excel 文件是办公自动化中非常常见的需求,比如:

  • 读取多个 Excel 文件中的数据并合并
  • 批量修改单元格内容
  • 提取指定字段后导出为新表
  • 批量生成报表

一、适用场景

场景 示例 批量读取多个 Excel 文件 合并多个日报、月报文件为一个总表 批量修改某列 修改“状态”列中的“未完成”为“完成” 按条件提取或汇总数据 提取销售额大于 1 万的记录 批量写入、创建新表 每人生成一个专属工作表

二、常用库安装

pip install openpyxl pandas

三、批量处理 Excel 文件代码示例


示例 1:批量合并多个 Excel 表格

功能:将某个文件夹下所有 .xlsx 文件合并为一个总表

import pandas as pdimport osfolder = \'./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 pdimport osfolder = \'./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 pdimport osinput_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 pdimport osdf = 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 osimport 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(\" 数据清洗完成!\")

汽车维修技术视频分享