openpyxl 多列排序
时间: 2023-05-30 12:05:03 浏览: 714
可以使用openpyxl中的sort方法来进行多列排序。
首先,需要确定要排序的列和排序方式。可以使用openpyxl中的工作表对象的columns属性来获取指定列的所有单元格对象,然后使用sorted函数对这些单元格对象进行排序。排序时,可以使用key参数来指定排序依据,例如按数字大小、按字母顺序等。最后,可以使用工作表对象的insert_rows方法将排好序的单元格按顺序插入到工作表中。
以下是一个示例代码,假设要按照第一列升序排列,第二列降序排列:
```
from openpyxl import load_workbook
from operator import itemgetter
wb = load_workbook('my_file.xlsx')
ws = wb.active
# 获取指定列的所有单元格对象
col1 = list(ws.columns)[0]
col2 = list(ws.columns)[1]
# 按第一列升序排序
sorted_cells = sorted(zip(col1, col2), key=itemgetter(0))
# 按第二列降序排序
sorted_cells = sorted(sorted_cells, key=itemgetter(1), reverse=True)
# 将排好序的单元格插入到工作表中
for i, (cell1, cell2) in enumerate(sorted_cells):
ws.insert_rows(i+2)
ws.cell(row=i+2, column=1, value=cell1.value)
ws.cell(row=i+2, column=2, value=cell2.value)
wb.save('my_file_sorted.xlsx')
```
在这个示例中,我们首先获取第一列和第二列的所有单元格对象,然后将它们组合成一个元组列表,使用sorted函数进行排序。排序时,我们先按第一列升序排序,再按第二列降序排序。最后,我们使用工作表对象的insert_rows方法将排好序的单元格插入到工作表中,注意要在插入行之前先将行数加1,因为第一行是标题行。最后,我们保存工作簿到一个新文件中。
阅读全文