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"。