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"。
相关推荐
码界筑梦坊29 分钟前
171-基于Flask的笔记本电脑数据可视化分析系统
python·信息可视化·flask·毕业设计·echarts
hui函数4 小时前
Flask电影投票系统全解析
后端·python·flask
程序员 _孜然6 小时前
Ubuntu/Debian修改网卡名字enP3p49s0为eth0
linux·运维·驱动开发·嵌入式硬件·ubuntu·debian
IDIOT___IDIOT6 小时前
Linux mount 命令
linux·运维·服务器
暗流者6 小时前
AAA 服务器与 RADIUS 协议笔记
运维·服务器·笔记
闲人编程6 小时前
Python第三方库IPFS-API使用详解:构建去中心化应用的完整指南
开发语言·python·去中心化·内存·寻址·存储·ipfs
计算机编程小咖7 小时前
《基于大数据的农产品交易数据分析与可视化系统》选题不当,毕业答辩可能直接挂科
java·大数据·hadoop·python·数据挖掘·数据分析·spark
CTRA王大大7 小时前
【golang】制作linux环境+golang的Dockerfile | 如何下载golang镜像源
linux·开发语言·docker·golang
小张程序人生7 小时前
《VMware 安装 CentOS 7.9 虚拟机详细教程(含图解步骤)》
linux·centos
zhangfeng11338 小时前
以下是基于图论的归一化切割(Normalized Cut)图像分割工具的完整实现,结合Tkinter界面设计及Python代码示
开发语言·python·图论