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' # 保存文件
)