Python自动化办公中的应用说明和脚本示例

 更新时间:2025年08月30日 14:58:20   作者:点云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 日报,每天生成并通过邮件发送:

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

五、提升建议

  • 使用 logging 模块记录日志
  • 配合 TkinterPyQt 做可视化界面
  • 写成函数模块,支持定制化
  • 学会使用任务计划(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自动化办公脚本内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • python将ansible配置转为json格式实例代码

    python将ansible配置转为json格式实例代码

    这篇文章主要介绍了python将ansible配置转为json格式实例代码的相关资料,需要的朋友可以参考下
    2017-05-05
  • python详解如何通过sshtunnel pymssql实现远程连接数据库

    python详解如何通过sshtunnel pymssql实现远程连接数据库

    为了安全起见,很多公司服务器数据库的访问多半是要做限制的,由专门的DBA管理,而且都是做的集群,数据库只能内网访问,所以就有一个直接的问题是,往往多数时候,在别的机器上(比如自己本地),是不能访问数据库的,给日常开发调试造成了很大不便
    2021-10-10
  • Python调用接口合并Excel表代码实例

    Python调用接口合并Excel表代码实例

    这篇文章主要介绍了Python调用接口合并Excel表代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-03-03
  • Python处理缺失数据的多种方式

    Python处理缺失数据的多种方式

    在数据分析和数据处理的过程中,缺失数据(Missing Data)是一个常见的问题,缺失数据的存在可能会影响模型的准确性和预测的可靠性,因此正确处理缺失数据是数据分析的重要步骤,所以本文给大家介绍了Python处理缺失数据的多种方式,需要的朋友可以参考下
    2024-08-08
  • Python引用计数操作示例

    Python引用计数操作示例

    这篇文章主要介绍了Python引用计数操作,结合实例形式分析了Python引用计数相关操作与运行机制,需要的朋友可以参考下
    2018-08-08
  • Python和Excel的完美结合的常用操作案例汇总

    Python和Excel的完美结合的常用操作案例汇总

    这篇文章主要介绍了Python和Excel的完美结合的常用操作案例汇总,文章通过围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-09-09
  • 详解Python匿名函数(lambda函数)

    详解Python匿名函数(lambda函数)

    这篇文章主要介绍了Python匿名函数(lambda函数),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-04-04
  • 为Python的Tornado框架配置使用Jinja2模板引擎的方法

    为Python的Tornado框架配置使用Jinja2模板引擎的方法

    Jinja2是人气Web框架Flask中的内置模板引擎,而且与Django的模板引擎比较类似,这里我们就来看一下为Python的Tornado框架配置使用Jinja2模板引擎的方法
    2016-06-06
  • Python使用scrapy爬取阳光热线问政平台过程解析

    Python使用scrapy爬取阳光热线问政平台过程解析

    这篇文章主要介绍了Python使用scrapy爬取阳光热线问政平台过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-08-08
  • ID3决策树以及Python实现详细过程

    ID3决策树以及Python实现详细过程

    决策树是我本人非常喜欢的机器学习模型,非常直观容易理解,并且和数据结构的结合很紧密,下面这篇文章主要给大家介绍了关于ID3决策树以及Python实现的相关资料,需要的朋友可以参考下
    2024-01-01

最新评论