一、Excel 自动化(openpyxl,处理xlsx)
1. 读取Excel数据
import openpyxl
# 打开工作簿
wb = openpyxl.load_workbook("数据.xlsx")
# 选择工作表(按名称/索引)
ws = wb["Sheet1"] # ws = wb.active(激活的工作表)
# 遍历单元格(按行)
for row in ws.iter_rows(min_row=2, values_only=True): # 跳过表头,values_only直接取值
name, age, score = row
print(f"姓名:{name},年龄:{age},分数:{score}")
wb.close()
2. 写入Excel数据
import openpyxl
# 新建工作簿/打开已有
wb = openpyxl.Workbook()
ws = wb.active
ws.title = "学生信息"
# 写入表头
ws["A1"] = "姓名"
ws["B1"] = "年龄"
ws["C1"] = "分数"
# 批量写入数据
data = [["张三", 18, 90], ["李四", 19, 85], ["王五", 18, 95]]
for row_idx, row_data in enumerate(data, start=2):
ws.cell(row=row_idx, column=1, value=row_data[0])
ws.cell(row=row_idx, column=2, value=row_data[1])
ws.cell(row=row_idx, column=3, value=row_data[2])
二、Word 自动化(python-docx,处理docx)
1. 读取Word内容
from docx import Document
doc = Document("文档.docx")
# 遍历段落
for para in doc.paragraphs:
print(para.text)
# 遍历表格
for table in doc.tables:
for row in table.rows:
row_data = [cell.text for cell in row.cells]
print(row_data)
2. 生成Word文档
from docx import Document
from docx.shared import Pt
from docx.oxml.ns import qn
doc = Document()
# 设置标题
title = doc.add_heading("办公自动化测试", level=1)
title.alignment = 1 # 居中(0左,1中,2右)
# 添加段落
para1 = doc.add_paragraph("这是自动生成的Word文档,包含文字、表格、图片等内容。")
# 设置字体
run = para1.runs[0]
run.font.name = "宋体"
run.font.size = Pt(12)
run._element.rPr.rFonts.set(qn('w:eastAsia'), '宋体') # 解决中文宋体失效
# 添加表格(3行3列)
table = doc.add_table(rows=3, cols=3)
table.cell(0, 0).text = "姓名"
table.cell(0, 1).text = "部门"
table.cell(0, 2).text = "工号"
table.cell(1, 0).text = "张三"
table.cell(1, 1).text = "技术部"
table.cell(1, 2).text = "001"
# 保存文档
doc.save("自动生成文档.docx")
三、PDF 读取(PyPDF2,简单读取/合并)
1. 读取PDF文本
import PyPDF2
pdf_reader = PyPDF2.PdfReader("文档.pdf")
# 获取页数
page_num = len(pdf_reader.pages)
# 读取指定页内容
for i in range(page_num):
page = pdf_reader.pages[i]
text = page.extract_text()
print(f"第{i+1}页:{text}")
2. 合并多个PDF
import PyPDF2
import os
pdf_merger = PyPDF2.PdfMerger()
# 遍历指定文件夹下的PDF
pdf_dir = "PDF文件夹"
for file in os.listdir(pdf_dir):
if file.endswith(".pdf"):
pdf_merger.append(os.path.join(pdf_dir, file))
# 保存合并后的PDF
pdf_merger.write("合并后的文档.pdf")
pdf_merger.close()
四、文件夹/文件自动化(os + shutil)
1. 遍历文件夹文件
import os
# 遍历指定文件夹(含子文件夹)
root_dir = "目标文件夹"
for root, dirs, files in os.walk(root_dir):
for file in files:
file_path = os.path.join(root, file)
file_size = os.path.getsize(file_path) / 1024 # 转KB
print(f"文件路径:{file_path},大小:{file_size:.2f}KB")
2. 批量重命名文件
import os
file_dir = "待重命名文件夹"
# 遍历文件
for idx, file in enumerate(os.listdir(file_dir)):
old_path = os.path.join(file_dir, file)
if os.path.isfile(old_path): # 排除文件夹
# 拆分文件名和后缀
file_name, file_suffix = os.path.splitext(file)
# 新文件名
new_name = f"办公文件_{idx+1}{file_suffix}"
new_path = os.path.join(file_dir, new_name)
os.rename(old_path, new_path)
print("重命名完成")
五、邮件自动发送(smtplib + email)
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.header import Header
# 配置信息
sender = "你的邮箱@163.com" # 发件人
password = "你的邮箱授权码" # 不是登录密码,是邮箱开启SMTP的授权码
receiver = "收件人邮箱@qq.com" # 收件人
smtp_server = "smtp.163.com" # 邮箱SMTP服务器(163:smtp.163.com,qq:smtp.qq.com)
# 构建邮件
msg = MIMEMultipart()
msg["From"] = Header(f"办公自动化<{sender}>", "utf-8")
msg["To"] = Header(receiver, "utf-8")
msg["Subject"] = Header("自动发送的测试邮件", "utf-8")
# 邮件正文
content = "这是通过Python自动化发送的邮件,包含文本和附件。"
msg.attach(MIMEText(content, "plain", "utf-8"))
# 添加附件
att = MIMEText(open("附件.xlsx", "rb").read(), "base64", "utf-8")
att["Content-Type"] = "application/octet-stream"
att["Content-Disposition"] = 'attachment; filename="测试附件.xlsx"'
msg.attach(att)
# 发送邮件
server = smtplib.SMTP_SSL(smtp_server, 465) # SSL加密
server.login(sender, password)
server.sendmail(sender, receiver, msg.as_string())
server.quit()
print("邮件发送成功")
六、安装依赖
以上代码需安装对应库,执行以下命令:pip install openpyxl python-docx PyPDF2 smtplib email
核心实用场景
1. Excel批量处理:数据录入、格式整理、多表合并;
2. Word批量生成:合同、报告、通知书等固定模板文档;
3. 文件管理:批量重命名、分类、删除、备份;
4. 自动化通知:邮件/短信批量发送(可结合Excel收件人数据)。