VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > temp > python入门教程 >
  • python| 关于excel的文件处理

创建一个成绩单文件score.xlsx,将平时成绩单.xlsx文件中对应班级工作表中学号和姓名列的内容写入到score.xlsx中,
并添加成绩列,每个学生的成绩采用随机生成的一个分数填写进去,
最后统计所有学生的平均成绩计算出来后,
写入到score.xlsx的最后一行最后一列之后的单元格中去。

预想的步骤:
1.打开原始文件以及打开目标文件
2.读取原始文件中每个工作表的学号和姓名
3.在目标文件中创建工作表并写入学号,姓名和随机生成的成绩
4.统计所有学生的平均成绩
5.讲平均成绩写入到目标文件的最后一行最后一列之后的单元格中

以下是解决方法

import openpyxlimport random

# 打开原始文件和目标文件

source_file = openpyxl.load_workbook('平时成绩单.xlsx')target_file = openpyxl.Workbook()

# 获取源文件中所有的工作表
worksheets = source_file.sheetnames

for worksheet_name in worksheets:
# 读取原始文件中每个工作表的学号和姓名列的内容
source_worksheet = source_file[worksheet_name]
student_data = []
for row in source_worksheet.iter_rows(min_row=2, min_col=1, max_col=2, values_only=True):
student_data.append(row)

# 在目标文件中创建工作表并写入学号、姓名和随机生成的成绩
target_worksheet = target_file.create_sheet(title=worksheet_name)
target_worksheet.append(['学号', '姓名', '成绩'])
for student in student_data:
score = random.randint(60, 100)
target_worksheet.append([student[0], student[1], score])

# 统计所有学生的平均成绩
scores = [score for _, _, score in target_worksheet.iter_rows(min_row=2, max_col=3, values_only=True)]
average_score = sum(scores) / len(scores)

# 将平均成绩写入到目标文件的最后一行最后一列之后的单元格中
target_worksheet.cell(row=target_worksheet.max_row+1, column=target_worksheet.max_column+1, value=average_score)

# 保存目标文件
target_file.save('score.xlsx')
出处:https://www.cnblogs.com/peng7668038/p/17343747.html


相关教程