我需要将给定文件夹中的所有Excel表数据,汇总到一个给定的Excel表中,请按照以下要求,编写Python: 一、每个分表中有两个sheet,第一个是班级基本信息,第二个是班级学生成绩排名; 二、班级基本信息sheet中,班级编号、教师姓名、班级人数,班长,教师姓名; 三、班级成绩排名sheet中,第一列是序号、第二列是学号、第三列是学生姓名、第四列是成绩; 四、总表只需要一个sheet,并且需将列设置为序号、班级编号、教师姓名、班级人数、班长、学号、学生姓名、成绩; 五、班级编号、教师姓名、班级人数,必须要和每个学生的成绩信息一一对应; 六、做一个程序运行进度条,表示已复制到的学生条目数。
时间: 2023-07-04 08:06:42 浏览: 95
好的,根据您的要求,我可以提供以下代码:
```python
import os
import openpyxl
from tqdm import tqdm
def merge_excel_data(input_folder, output_file):
# 获取所有Excel文件
files = [f for f in os.listdir(input_folder) if f.endswith('.xlsx')]
# 创建输出文件
wb_out = openpyxl.Workbook()
ws_out = wb_out.active
# 添加表头
headers = ['序号', '班级编号', '教师姓名', '班级人数', '班长', '学号', '学生姓名', '成绩']
for col, header in enumerate(headers, start=1):
ws_out.cell(row=1, column=col, value=header)
# 遍历每个Excel文件
total_students = 0
for file in tqdm(files, desc='处理中'):
wb = openpyxl.load_workbook(os.path.join(input_folder, file))
# 处理班级基本信息sheet,获取班级编号、教师姓名、班级人数、班长信息
ws_class = wb.worksheets[0]
class_data = {
'班级编号': ws_class.cell(row=2, column=2).value,
'教师姓名': ws_class.cell(row=2, column=4).value,
'班级人数': ws_class.cell(row=3, column=2).value,
'班长': ws_class.cell(row=4, column=2).value
}
# 处理班级成绩排名sheet,获取每个学生的学号、姓名、成绩
ws_score = wb.worksheets[1]
for row in range(2, ws_score.max_row+1):
student_data = {
'学号': ws_score.cell(row=row, column=2).value,
'学生姓名': ws_score.cell(row=row, column=3).value,
'成绩': ws_score.cell(row=row, column=4).value
}
# 将班级基本信息和学生信息合并到一行中
row_data = dict(class_data, **student_data)
# 写入总表中
ws_out.append([total_students+1]+list(row_data.values()))
# 更新进度条
total_students += 1
tqdm.write('已处理 {} 条学生记录'.format(total_students))
# 保存输出文件
wb_out.save(output_file)
print('输出文件保存成功:{}'.format(output_file))
# 测试代码
if __name__ == '__main__':
input_folder = 'Excel文件夹路径'
output_file = '输出文件路径.xlsx'
merge_excel_data(input_folder, output_file)
```
请将代码中的 `Excel文件夹路径` 和 `输出文件路径.xlsx` 替换为您实际的文件夹路径和输出文件路径。
阅读全文