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"。
相关推荐
NiNg_1_234几秒前
Python的sklearn中的RandomForestRegressor使用详解
开发语言·python·sklearn
黑色叉腰丶大魔王5 分钟前
《基于 Python 的网页爬虫详细教程》
开发语言·爬虫·python
WANGWUSAN6624 分钟前
Python高频写法总结!
java·linux·开发语言·数据库·经验分享·python·编程
40岁的系统架构师41 分钟前
1 JVM JDK JRE之间的区别以及使用字节码的好处
java·jvm·python
Zmxcl-0071 小时前
IIS解析漏洞
服务器·数据库·microsoft
Stark、1 小时前
【Linux】文件IO--fcntl/lseek/阻塞与非阻塞/文件偏移
linux·运维·服务器·c语言·后端
觅远1 小时前
python实现word转html
python·html·word
悠然的笔记本2 小时前
python2和python3的区别
python
新手上路狂踩坑2 小时前
Android Studio的笔记--BusyBox相关
android·linux·笔记·android studio·busybox
西猫雷婶2 小时前
python学opencv|读取图像(十六)修改HSV图像HSV值
开发语言·python·opencv