4 冻结窗格
冻结窗格可以锁定某些行和列,以便在滚动时始终显示它们。openpyxl
提供了 freeze_panes
属性来实现这一功能。
冻结第一行
import openpyxl
# 创建一个新的工作簿
workbook = openpyxl.Workbook()
sheet = workbook.active
# 在第一行写入数据
sheet.append(['Header1', 'Header2', 'Header3'])
# 冻结第一行
sheet.freeze_panes = 'A2'
# 保存工作簿
workbook.save('freeze_first_row_example.xlsx')
代码解释
sheet.freeze_panes = 'A2'
:冻结第一行,滚动时第一行将保持在屏幕顶部。
冻结第一列
import openpyxl
# 创建一个新的工作簿
workbook = openpyxl.Workbook()
sheet = workbook.active
# 在第一列写入数据
for i in range(1, 11):
sheet[f'A{i}'] = f"Row {i}"
# 冻结第一列
sheet.freeze_panes = 'B1'
# 保存工作簿
workbook.save('freeze_first_col_example.xlsx')
代码解释
sheet.freeze_panes = 'B1'
:冻结第一列,滚动时第一列将保持在屏幕左侧。
冻结行和列
同时冻结行和列,只需设置 freeze_panes
到相应的单元格地址。
import openpyxl
# 创建一个新的工作簿
workbook = openpyxl.Workbook()
sheet = workbook.active
# 在第一行和第一列写入数据
sheet.append(['Header1', 'Header2', 'Header3'])
for i in range(1, 11):
sheet[f'A{i+1}'] = f"Row {i}"
sheet[f'B{i+1}'] = i * 10
sheet[f'C{i+1}'] = i * 100
# 冻结第一行和第一列
sheet.freeze_panes = 'B2'
# 保存工作簿
workbook.save('freeze_panes_example.xlsx')
代码解释
sheet.freeze_panes = 'B2'
:冻结第一行和第一列,滚动时第一行和第一列将分别保持在屏幕顶部和左侧。
5 筛选与排序数据
Excel 中的数据筛选和排序功能非常有用,尤其在处理大量数据时。openpyxl
提供了类似的功能来实现这些操作。
设置自动筛选
可以使用 Worksheet.auto_filter.ref
属性来启用某个范围的自动筛选功能。
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, 'Miami'],
['Eva', 22, 'San Francisco']
]
for row in data:
sheet.append(row)
# 启用A1到C1的自动筛选功能
sheet.auto_filter.ref = 'A1:C1'
# 保存工作簿
workbook.save('auto_filter_example.xlsx')
代码解释
sheet.auto_filter.ref = 'A1:C1'
:在A1到C1的范围内启用自动筛选。
排序数据
可以使用 Worksheet.auto_filter.add_sort_condition()
方法对指定列的数据进行排序。
import openpyxl
# 打开现有工作簿
workbook = openpyxl.load_workbook('auto_filter_example.xlsx')
sheet = workbook.active
# 启用自动筛选并按第二列(Age列)进行升序排序
sheet.auto_filter.add_sort_condition('B2:B6')
# 保存工作簿
workbook.save('sort_data_example.xlsx')
代码解释
sheet.auto_filter.add_sort_condition('B2:B6')
:按B2到B6的范围进行升序排序。