当前位置:首页>python>python自动化办公代码

python自动化办公代码

  • 2026-10-05 00:32:51
python自动化办公代码

一、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收件人数据)。

最新文章

随机文章