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"。
相关推荐
dsywws3 分钟前
Linux学习笔记之vim入门
linux·笔记·学习
幺零九零零1 小时前
【C++】socket套接字编程
linux·服务器·网络·c++
丕羽2 小时前
【Pytorch】基本语法
人工智能·pytorch·python
free2 小时前
netstat中sendq/recvq用于排查发送端发送数据的问题
服务器
bryant_meng2 小时前
【python】Distribution
开发语言·python·分布函数·常用分布
小林熬夜学编程2 小时前
【Linux系统编程】第四十一弹---线程深度解析:从地址空间到多线程实践
linux·c语言·开发语言·c++·算法
力姆泰克2 小时前
看电动缸是如何提高农机的自动化水平
大数据·运维·服务器·数据库·人工智能·自动化·1024程序员节
力姆泰克2 小时前
力姆泰克电动缸助力农业机械装备,提高农机的自动化水平
大数据·服务器·数据库·人工智能·1024程序员节
程思扬3 小时前
为什么Uptime+Kuma本地部署与远程使用是网站监控新选择?
linux·服务器·网络·经验分享·后端·网络协议·1024程序员节
sun0077003 小时前
拷贝 cp -rdp 和 cp -a
linux·运维·服务器