Python办公自动化:使用openpyxl进行数据操作与分析

1 数据筛选与排序

在处理大量数据时,筛选和排序是常用的操作。openpyxl 提供了灵活的方法来实现这些功能。

1.1 数据筛选

使用 openpyxl,可以为工作表添加筛选器,以便根据条件筛选数据。

python 复制代码
import openpyxl

# 创建一个新的工作簿
workbook = openpyxl.Workbook()
sheet = workbook.active

# 添加表头
sheet.append(["Name", "Age", "City"])

# 添加数据
data = [
    ["Alice", 30, "New York"],
    ["Bob", 25, "Los Angeles"],
    ["Charlie", 35, "Chicago"],
    ["David", 28, "New York"],
    ["Eva", 22, "San Francisco"]
]

for row in data:
    sheet.append(row)

# 添加筛选器
sheet.auto_filter.ref = "A1:C6"

# 保存工作簿
workbook.save("data_filter_example.xlsx")

代码解释

  • sheet.auto_filter.ref = "A1:C6":为 A1 到 C6 的数据范围添加筛选器,允许用户在 Excel 中手动筛选数据。

1.2 数据排序

你可以使用 add_sort_condition() 方法来对数据进行排序。

python 复制代码
import openpyxl

# 打开现有工作簿
workbook = openpyxl.load_workbook("data_filter_example.xlsx")
sheet = workbook.active

# 按第二列(Age列)升序排序
sheet.auto_filter.add_sort_condition("B2:B6")

# 保存工作簿
workbook.save("data_sort_example.xlsx")

代码解释

  • sheet.auto_filter.add_sort_condition("B2:B6"):根据 B2 到 B6 的数据进行升序排序。

2 数据统计与计算

openpyxl 提供了计算公式的支持,你可以在 Excel 中插入公式,并自动计算结果。

2.1 插入公式

在工作表中插入 Excel 公式,并让 openpyxl 计算结果。

python 复制代码
import openpyxl

# 创建一个新的工作簿
workbook = openpyxl.Workbook()
sheet = workbook.active

# 添加数据
sheet.append(["Number1", "Number2", "Sum"])
sheet.append([10, 20])
sheet.append([30, 40])

# 插入求和公式
sheet["C2"] = "=A2+B2"
sheet["C3"] = "=A3+B3"

# 保存工作簿
workbook.save("formula_example.xlsx")

代码解释

  • sheet["C2"] = "=A2+B2":在 C2 单元格插入公式,用于计算 A2 和 B2 的和。

2.2 统计数据

openpyxl 支持在工作表中进行简单的统计计算,如求和、平均值等。

python 复制代码
import openpyxl

# 打开现有工作簿
workbook = openpyxl.load_workbook("formula_example.xlsx")
sheet = workbook.active

# 计算数值列的总和
sheet["C4"] = "=SUM(A2:A3)"

# 计算平均值
sheet["C5"] = "=AVERAGE(A2:A3)"

# 保存工作簿
workbook.save("statistics_example.xlsx")

代码解释

  • sheet["C4"] = "=SUM(A2:A3)":计算 A2 到 A3 单元格的总和。
  • sheet["C5"] = "=AVERAGE(A2:A3)":计算 A2 到 A3 单元格的平均值。

3 数据查找与替换

使用 openpyxl 可以在工作表中查找特定数据,并进行替换。

3.1 查找数据

可以遍历单元格来查找特定的数据。

python 复制代码
import openpyxl

# 打开现有工作簿
workbook = openpyxl.load_workbook("statistics_example.xlsx")
sheet = workbook.active

# 查找特定数据
search_value = 20
for row in sheet.iter_rows(min_row=1, max_col=3, max_row=3):
    for cell in row:
        if cell.value == search_value:
            print(f"Found {search_value} in {cell.coordinate}")

# 保存工作簿
workbook.save("find_replace_example.xlsx")

代码解释

  • 遍历工作表的所有单元格,查找特定值 20。

3.2 替换数据

可以根据查找到的数据进行替换。

python 复制代码
import openpyxl

# 打开现有工作簿
workbook = openpyxl.load_workbook("find_replace_example.xlsx")
sheet = workbook.active

# 查找并替换数据
replace_value = 50
for row in sheet.iter_rows(min_row=1, max_col=3, max_row=3):
    for cell in row:
        if cell.value == 20:
            cell.value = replace_value
            print(f"Replaced with {replace_value} in {cell.coordinate}")

# 保存工作簿
workbook.save("replace_data_example.xlsx")

代码解释

  • 查找并将值 20 替换为 50。

4 数据验证

数据验证是确保数据输入符合指定规则的关键。openpyxl 提供了多种数据验证方式,如整数验证、下拉列表等。

4.1 整数验证

可以设置单元格只接受整数输入。

python 复制代码
import openpyxl
from openpyxl.worksheet.datavalidation import DataValidation

# 创建一个新的工作簿
workbook = openpyxl.Workbook()
sheet = workbook.active

# 创建整数验证规则
int_validation = DataValidation(type="whole", operator="between", formula1=1, formula2=10, showErrorMessage=True)
int_validation.error = "请输入1到10之间的整数"
int_validation.errorTitle = "输入错误"

# 将验证规则应用于 A1:A10 单元格
sheet.add_data_validation(int_validation)
int_validation.add("A1:A10")

# 保存工作簿
workbook.save("int_validation_example.xlsx")

代码解释

  • DataValidation(type="whole", operator="between", formula1=1, formula2=10):设置一个整数验证,要求输入的整数在1到10之间。

4.2 下拉列表

可以通过数据验证创建一个下拉列表,限制用户只能选择预定义的值。

python 复制代码
import openpyxl
from openpyxl.worksheet.datavalidation import DataValidation

# 创建一个新的工作簿
workbook = openpyxl.Workbook()
sheet = workbook.active

# 创建下拉列表验证规则
list_validation = DataValidation(type="list", formula1='"Option1,Option2,Option3"', showDropDown=True)

# 将验证规则应用于 B1:B10 单元格
sheet.add_data_validation(list_validation)
list_validation.add("B1:B10")

# 保存工作簿
workbook.save("list_validation_example.xlsx")

代码解释

  • DataValidation(type="list", formula1='"Option1,Option2,Option3"'):设置一个下拉列表验证,提供选项 "Option1", "Option2", "Option3"。
相关推荐
我的xiaodoujiao6 小时前
Django 权限系统项目实战详细图文教程 3--系统登录功能实现
后端·python·django
可乐_不渴6 小时前
【Linux】 进程虚拟地址空间
java·linux·javascript
byte轻骑兵6 小时前
hcitool 工具:HCI 层指令实操 + 源码中指令的封装逻辑
linux·aiot·bluez·电脑蓝牙·嵌入式蓝牙
努力变大白7 小时前
ReAct Agent 创建:tools 协议与文本 ReAct 双路线实践
python·agent·react框架
vipxieliang7 小时前
Python 面向对象编程:类、继承、多态与组合
python
Nuanyt7 小时前
Agent 学习笔记(下篇二):Claude Code 生态、RAG 与 Memory(Stage 5–6)
笔记·python·memory·rag·aiagent·claude code·agentskill
用户298698530147 小时前
Python 实战:Markdown 转 PDF 的代码实现与页面设置
python·api·markdown
thusloop7 小时前
零门槛接入 GPT-6-astra 与 claude-opus-5-5,三大场景实战指南
python·gpt·算法·agent·claude·codex
qeen877 小时前
【Linux】磁盘读写文件原理及文件系统基本概念介绍
linux·运维·服务器·笔记·学习
ITxiaobing20237 小时前
海外广告投放:AdTech 场景下 IP 地址库选型思考
服务器·网络·tcp/ip