相信大家日常都遇到过需要将几张 Excel 表格合并的工作,如果一个个的去合并汇总实在太慢了。
今天学长给大家带来了Python实现 Excel 合并成绩表的功能。
编写代码
假设我们需要统计整个六年级的学生成绩,并且按照总分排序,如何实现?
下面是一个简单的Python脚本,可以快速实现,代码如下:
import os
import pandas as pd
from openpyxl import Workbook
from openpyxl.styles import Border, Side, PatternFill
# 读取各班级的成绩表
class1_df = pd.read_excel("./resources/六年①班成绩表.xlsx")
class2_df = pd.read_excel("./resources/六年②班成绩表.xlsx")
# 合并成绩表
merged_df = pd.concat([class1_df, class2_df])
# 计算总分并添加到新列
merged_df['总分'] = merged_df['语文'] + merged_df['数学'] + merged_df['英语']
# 按照总分排序
sorted_df = merged_df.sort_values(by='总分', ascending=False)
# 选择需要的列
final_df = sorted_df[['学号', '姓名', '语文', '数学', '英语', '总分']]
# 创建一个新的Excel工作簿
wb = Workbook()
ws = wb.active
# 添加标题栏并设置背景颜色和边框
title_row = ['学号', '姓名', '语文', '数学', '英语', '总分']
ws.append(title_row)
for cell in ws[1]:
cell.fill = PatternFill(start_color='D5FAD1', end_color='D5FAD1', fill_type='solid') # 设置背景颜色
cell.border = Border(top=Side(style='thin'), bottom=Side(style='thin'),
left=Side(style='thin'), right=Side(style='thin'))
# 将数据逐行写入Excel表格,并设置边框
for r_idx, row in enumerate(final_df.iterrows(), start=2):
for c_idx, value in enumerate(row[1]):
cell = ws.cell(row=r_idx, column=c_idx + 1, value=value)
# 设置边框
cell.border = Border(top=Side(style='thin'), bottom=Side(style='thin'),
left=Side(style='thin'), right=Side(style='thin'))
# 检查并创建目录
output_dir = "./tmp"
if not os.path.exists(output_dir):
os.makedirs(output_dir)
# 保存Excel文件
wb.save(f"{output_dir}/六年级总成绩单.xlsx")
运行结果
然后运行该程序,它可以快速批量的将文件重命名,如下图:

结论
通过本文的介绍,你学会了如何使用 Python 快速实现 Excel 合并成绩表的功能。
原文始发于微信公众号(学长工具库):9.Python实现Excel成绩表合并
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/267430.html