Python自動化辦公中的應用說明和腳本示例
Python 在自動化辦公中的應用非常廣泛,可大幅減少重復性操作,提升辦公效率。Python 自動化辦公包括:文檔處理(Word/Excel)、郵件處理、PDF 操作、文件整理、數(shù)據(jù)采集與報表、人工流程替代等。Python自動化常用庫包括openpyxl、pandas、docx、smtplib、imaplib、pyautogui、pdfplumber、PyPDF2、schedule。
本文全面的講解Python自動化辦公,并附帶多個常用場景的 代碼示例。
一、自動化辦公能做什么?
| 任務類型 | 示例功能 |
|---|---|
| 文檔處理(Word/Excel) | 生成報告、批量修改、數(shù)據(jù)填充 |
| 郵件處理 | 自動發(fā)郵件、收郵件、附件下載 |
| PDF 操作 | 拆分、合并、加密、提取文本 |
| 文件整理 | 批量重命名、分類移動、自動歸檔 |
| 數(shù)據(jù)采集與報表 | 從網(wǎng)頁抓取數(shù)據(jù),生成日報或周報 |
| 人工流程替代 | 自動點擊、填表、模擬人工輸入(結合 pyautogui) |
二、Python 自動化常用庫一覽
| 庫名 | 用途 |
|---|---|
openpyxl | 操作 Excel(.xlsx) |
pandas | 表格數(shù)據(jù)處理 |
docx | 操作 Word 文檔 |
smtplib | 發(fā)送郵件 |
imaplib | 接收郵件 |
pyautogui | 模擬鼠標鍵盤操作 |
pdfplumber | 提取 PDF 文本內(nèi)容 |
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. 自動發(fā)送郵件(帶附件)
import smtplib
from email.message import EmailMessage
msg = EmailMessage()
msg['Subject'] = '日報 - 自動發(fā)送'
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')
# 發(fā)送郵件(使用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(" 郵件已發(fā)送。")
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('提取內(nèi)容.txt', 'w', encoding='utf-8') as f:
f.write(all_text)
print(" PDF 文本已提取。")
4. 自動打開網(wǎng)頁、模擬輸入(pyautogui + webbrowser)
import webbrowser
import pyautogui
import time
# 打開網(wǎng)頁
webbrowser.open('https://www.google.com')
time.sleep(3) # 等待頁面加載
# 模擬輸入搜索內(nèi)容
pyautogui.write('Python automation', interval=0.1)
pyautogui.press('enter')
print(" 自動搜索已完成。")
5. 定時任務(schedule)
import schedule
import time
def job():
print("現(xiàn)在是:", time.strftime("%H:%M:%S"), " → 執(zhí)行任務")
# 每天早上 9 點執(zhí)行
schedule.every().day.at("09:00").do(job)
while True:
schedule.run_pending()
time.sleep(1)
四、組合案例:自動發(fā)送日報
假設你有一個 Excel 日報,每天生成并通過郵件發(fā)送:
- 用
openpyxl創(chuàng)建日報 - 用
smtplib發(fā)送郵件 - 用
schedule定時運行 - 也可打包為
.exe實現(xiàn)傻瓜式執(zhí)行(使用pyinstaller)
五、提升建議
- 使用
logging模塊記錄日志 - 配合
Tkinter或PyQt做可視化界面 - 寫成函數(shù)模塊,支持定制化
- 學會使用任務計劃(Windows)或
crontab(Linux/macOS)
批量處理 Excel 文件是辦公自動化中非常常見的需求,比如:
- 讀取多個 Excel 文件中的數(shù)據(jù)并合并
- 批量修改單元格內(nèi)容
- 提取指定字段后導出為新表
- 批量生成報表
六、擴展:批量處理Excel
適用場景
| 場景 | 示例 |
|---|---|
| 批量讀取多個 Excel 文件 | 合并多個日報、月報文件為一個總表 |
| 批量修改某列 | 修改“狀態(tài)”列中的“未完成”為“完成” |
| 按條件提取或匯總數(shù)據(jù) | 提取銷售額大于 1 萬的記錄 |
| 批量寫入、創(chuàng)建新表 | 每人生成一個專屬工作表 |
常用庫安裝
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)
# 合并所有數(shù)據(jù)
merged_df = pd.concat(all_data, ignore_index=True)
merged_df.to_excel(output_file, index=False)
print(" 所有 Excel 文件已合并到:", output_file)
示例 2:批量修改某一列中的值(如“狀態(tài)”列)
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)
# 修改 “狀態(tài)” 列中的“未完成”為“完成”
df['狀態(tài)'] = df['狀態(tài)'].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 工具 - 加日志記錄:每次處理記錄時間、文件名
- 使用定時器 + 自動郵件發(fā)送,形成完整自動報表流程
- 使用
openpyxl更細粒度控制樣式、顏色、單元格合并等
自動清洗多個 Excel 表中的重復數(shù)據(jù)示例:
下面是自動遍歷一個文件夾下的多個 Excel 文件,按指定的列去重,并把清洗后的結果另存到一個新文件夾Python腳本。
腳本示例(Python 3 + pandas)
import os
import pandas as pd
# === 配置區(qū)域 ===
input_folder = r"./excel_input" # 待處理Excel文件所在文件夾
output_folder = r"./excel_output" # 清洗后文件保存文件夾
subset_columns = None # 去重依據(jù)的列,例如 ["姓名", "身份證號"],None表示全列去重
keep_rule = "first" # 保留規(guī)則: "first" 保留首次出現(xiàn), "last" 保留最后一次, False 保留所有重復(不常用)
# 創(chuàng)建輸出文件夾
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(" 數(shù)據(jù)清洗完成!")
七、總結
到此這篇關于Python自動化辦公中的應用說明和腳本示例的文章就介紹到這了,更多相關python自動化辦公腳本內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
python實現(xiàn)優(yōu)雅的打印json格式文本
這篇文章主要介紹了python實現(xiàn)優(yōu)雅的打印json格式文本方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-08-08
Python+eval函數(shù)實現(xiàn)動態(tài)地計算數(shù)學表達式詳解
Python的 eval() 允許從基于字符串或基于編譯代碼的輸入中計算任意Python表達式。當從字符串或編譯后的代碼對象的任何輸入中動態(tài)計算Python表達式時,此函數(shù)非常方便。本文將利用eval實現(xiàn)動態(tài)地計算數(shù)學表達式,需要的可以參考一下2022-09-09
Django2.1.7 查詢數(shù)據(jù)返回json格式的實現(xiàn)
這篇文章主要介紹了Django2.1.7 查詢數(shù)據(jù)返回json格式的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-12-12
Python?RawString與open文件的newline換行符遇坑解決
這篇文章主要為大家介紹了Python?RawString與open文件的newline換行符遇坑解決示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-10-10

