9.Python实现Excel成绩表合并

相信大家日常都遇到过需要将几张 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")


运行结果

然后运行该程序,它可以快速批量的将文件重命名,如下图:

9.Python实现Excel成绩表合并

结论

通过本文的介绍,你学会了如何使用 Python 快速实现 Excel 合并成绩表的功能。


原文始发于微信公众号(学长工具库):9.Python实现Excel成绩表合并

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由半码博客整理,本文链接:https://www.bmabk.com/index.php/post/267430.html

(0)
李, 若俞的头像李, 若俞

相关推荐

发表回复

登录后才能评论
半码博客——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!