首页 > 编程语言 >python| 关于excel的文件处理

python| 关于excel的文件处理

时间:2023-04-22 19:33:47浏览次数:32  
标签:文件 target xlsx python worksheet excel score row

创建一个成绩单文件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')

标签:文件,target,xlsx,python,worksheet,excel,score,row
From: https://www.cnblogs.com/peng7668038/p/17343747.html

相关文章

  • java下载pdf等静态文件
    java下载pdf等静态文件  packagecom.example.climbnumber;importjava.io.FileOutputStream;importjava.io.InputStream;importjava.io.OutputStream;importjava.net.URL;importjava.net.URLConnection;importjava.util.zip.GZIPInputStream;publicclass......
  • 常见算法Python实现
    一、算法与数据结构1、二叉树1.重建二叉树输入某二叉树的前序遍历和中序遍历的结果,请重建该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如,输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建如下图所示的二叉树并输出它的头节......
  • Python 设计模式详解
    一、创建型模式1、工厂方法 Factory工厂方法是一种创建型设计模式,其在父类中提供一个创建对象的方法,允许子类决定实例化对象的类型制造业是一个国家工业经济发展的重要支柱,而工厂则是其根基所在。程序设计中的工厂类往往是对对象构造、实例化、初始化过程的封装,而工厂方法则可以升......
  • 旋转图像--Python实现
    给定一个n×n的二维矩阵matrix表示一个图像。请将图像顺时针旋转90度。defrotate(matrix):"""Donotreturnanything,modifymatrixin-placeinstead."""matrix[:]=zip(*matrix[::-1])returnmatrix......
  • Python习题
    文本词频统计题目:一篇文章,出现了哪些词?哪些词出现的最多?请统计hamlet.txt文件中出现的英文单词情况,统计并输出出现最多的10个单词,注意:(1)单词不区分大小写,即单词的大小写或组合形式一样;‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮......
  • SpringBoot文件上传
    application.yml配置spring:#文件上传配置servlet:multipart:max-file-size:10MBmax-request-size:10MBweb:resources:static-locations:/upload/代码packagecom.haoyang.Controller;importorg.springframework.web.bind.a......
  • 【m3u8】python使用m3u8库下载视频
    1、m3u8库https://pypi.org/project/m3u8/ 2、安装pipinstallm3u8  3、使用importtimefromCrypto.Util.PaddingimportpadfromCrypto.CipherimportAESimportrequestsimportm3u8headers={"User-Agent":"Mozilla/5.0(WindowsNT10.......
  • SpringBoot+Mybatis-Plus+EasyExcel
    首先建立一个springboot项目,导入依赖<!--MyBatisPlus依赖--><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.4.2</version......
  • 【Python】尝试切换py版本
    失败问chatgpt,怎么把abaquspython版本切换到py3.6,结果失败。chatgpt给出的建议:修改abaqus_v6.env,明显扯淡!我就尝试在custom_v6.env中添加python路径,结果就是开头的报错。其他有用的回答:怎么查看abaqus2020当前使用的Python的版本信息importsysprint(sys.version)......
  • Python基础—conda使用笔记
    Python基础—conda使用笔记1.环境配置由于用conda管理虚拟环境真滴很方便,所以主要使用conda,就不单独去装Python了。1.1.Miniconda3安装Miniconda3官网下载地址:MinicondaMiniconda3清华镜像下载:清华镜像-Miniconda对于Windows系统:Miniconda安装跟正常的软件安装是一样......