学习记录: openpyxl 根据某列,对所有列进行升降排序

该代码段使用openpyxl库读取Excel文件,按特定列(如序号)对数据进行排序,然后将排序后的新数据写入新的工作表中,最后保存为新的Excel文件。
from openpyxl import load_workbook

def test(path, Sheet_name, Index, Sheet_upname, workbook_save):
    # 读取文件路径
    workbook = load_workbook(path)

    # 读取工作簿
    sheet = workbook[Sheet_name]

    # 读取数据
    row_lst = []
    for row in sheet.rows:
        row_data = [cell.value for cell in row]
        row_lst.append(row_data)

    name_row = row_lst[0]   # 第一行是各列的名称
    index = name_row.index(Index)  # 获得列的索引
    # print(index)

    # 排序数据
    score_lst = row_lst[1:]   # 用切片操作获得所有分数信息
    score_lst = sorted(score_lst, key=lambda x: x[index], reverse=False)   # 用指定列的值进行排序 True是降序,False升序
    score_lst.insert(0, name_row)
    # print(score_lst)


    # 创建新的sheet
    sort_sheet = workbook.create_sheet(Sheet_upname)

    # 遍历写入表格
    for row, lst in enumerate(score_lst):
        for col, value in enumerate(lst):
            sort_sheet.cell(row + 1, col + 1, value)

    # 保存文件
    workbook.save(workbook_save)

if __name__ == '__main__':
    test(path = 'test.xlsx',            # .xlsx文件路径
         Sheet_name = 'Sheet1',         # .xlsx文件,工作簿名称
         Index = '序号',                 # 排序列名称的索引
         Sheet_upname = '排序后的数据',   # 创建排序后的数据写入新的工作簿
         workbook_save = 'test2.xlsx'   # 保存文件
         )

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值