Python办公自动化:使用openpyxl对行与列的操作(二)

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的范围进行升序排序。

  • 7
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值