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"。
相关推荐
Dxy123931021613 分钟前
DrissionPage 性能优化实战指南:让网页自动化效率飞升
运维·爬虫·python·性能优化·自动化
蹦蹦跳跳真可爱58926 分钟前
Python----目标检测(《SSD: Single Shot MultiBox Detector》论文和SSD的原理与网络结构)
人工智能·python·深度学习·神经网络·目标检测·计算机视觉
LeonDL1681 小时前
HALCON 深度学习训练 3D 图像的几种方式优缺点
人工智能·python·深度学习·3d·halcon·halcon训练3d图像·深度学习训练3d图像
碎梦归途2 小时前
Linux 软件安装方式全解(适用于 CentOS/RHEL 系统)
linux·运维·centos
啃火龙果的兔子2 小时前
CentOS 7.9 安装 宝塔面板
linux·运维·centos
慧都小妮子2 小时前
跨平台浏览器集成库JxBrowser 支持 Chrome 扩展程序,高效赋能 Java 桌面应用
开发语言·python·api·jxbrowser·chrome 扩展程序
DexterLien2 小时前
基于 Alpine 定制单功能用途(kiosk)电脑
linux·alpine·kiosk
小和尚敲木头3 小时前
krpano 字符串拼接,传参。
java·linux·前端
程序猿小D3 小时前
第11节 Node.js 模块系统
服务器·前端·node.js·编辑器·vim
tanyyinyu3 小时前
Python函数参数详解:从位置参数到灵活调用的艺术
运维·开发语言·python