import pandas as pdimport osfrom openpyxl import load_workbookfrom openpyxl.styles import Font, Alignment, Border, Side# ====================== 请修改这里的路径 ======================# 存放所有Excel文件的文件夹路径folder_path = "./成绩表"# 最终保存的文件名save_path = "成绩合并总表.xlsx"# ==============================================================# 1. 获取文件夹内所有Excel文件all_data = []for file in os.listdir(folder_path): if file.endswith((".xlsx", ".xls")): file_path = os.path.join(folder_path, file) df = pd.read_excel(file_path) all_data.append(df)# 2. 合并所有数据merged_df = pd.concat(all_data, ignore_index=True)# 3. 按学号排序(假设学号在第一列,可修改)merged_df = merged_df.sort_values(by=merged_df.columns[0])# 4. 计算总分(第4~10列,索引3-9)score_cols = merged_df.columns[3:10]merged_df["总分"] = merged_df[score_cols].sum(axis=1)# 5. 计算平均分(第4~11列,索引3-10)avg_cols = merged_df.columns[3:11]merged_df["平均分"] = merged_df[avg_cols].mean(axis=1).round(2)# 6. 保存为Excelmerged_df.to_excel(save_path, index=False)# 7. 优化表格格式(字体、对齐、边框)wb = load_workbook(save_path)ws = wb.active# 样式设置header_font = Font(bold=True, size=12)text_font = Font(size=11)align = Alignment(horizontal="center", vertical="center")border = Border( left=Side(style='thin'), right=Side(style='thin'), top=Side(style='thin'), bottom=Side(style='thin'))# 应用样式for row in ws.iter_rows(): for cell in row: cell.font = text_font cell.alignment = align cell.border = border# 表头加粗for cell in ws[1]: cell.font = header_font# 保存最终文件wb.save(save_path)print(f"✅ 合并完成!文件已保存至:{save_path}")