python| 关于excel的文件处理

打印 上一主题 下一主题

主题 927|帖子 927|积分 2781

  1. <strong>创建一个成绩单文件score.xlsx,将平时成绩单.xlsx文件中对应班级工作表中学号和姓名列的内容写入到score.xlsx中,</strong><br><strong>并添加成绩列,每个学生的成绩采用随机生成的一个分数填写进去,</strong><br><strong>最后统计所有学生的平均成绩计算出来后,</strong><br><strong>写入到score.xlsx的最后一行最后一列之后的单元格中去。</strong><br><br>预想的步骤:<br>1.打开原始文件以及打开目标文件<br>2.读取原始文件中每个工作表的学号和姓名<br>3.在目标文件中创建工作表并写入学号,姓名和随机生成的成绩<br>4.统计所有学生的平均成绩<br>5.讲平均成绩写入到目标文件的最后一行最后一列之后的单元格中<br><br>以下是解决方法
复制代码
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')

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

三尺非寒

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表