侯体宗的博客
  • 首页
  • 人生(杂谈)
  • 技术
  • 关于我
  • 更多分类
    • 文件下载
    • 文字修仙
    • 中国象棋ai
    • 群聊
    • 九宫格抽奖
    • 拼图
    • 消消乐
    • 相册

基于python实现在excel中读取与生成随机数写入excel中

Python  /  管理员 发布于 7年前   196

具体要求是:在一份已知的excel表格中读取学生的学号与姓名,再将这些数据放到新的excel表中的第一列与第二列,最后再生成随机数作为学生的考试成绩。

首先要用到的数据库有:xlwt,xlrd,random这三个数据库。

命令如下:

import xlwt

import xlrd

import random

现有一份表格内容如下图:

现在我们需要提取这其中的B1―C14。

(提示:在对这份电子表格进行操作的时候,要使用到这个电子表格的地址,即表格的储存位置。)excel=xlrd.open_workbook(G:\python\新建文件夹\表1.xlsx')          #打开并读取表格sheet=excel.sheets()[0] #在原表1中提取第一页中的数据。对excel进行处理时,行列页都是从0开始进行计算wb=xlwt.Workbook()  #创立一个新的excel表格ws =wb.add_sheet('成绩单')          #第一页命名为成绩单(如果要进行多页操作,要将学号姓名放到两页excel表格中的话可以如下操作:ws1=wb.add_sheet('1班成绩单')ws2=wb.add_sheet('2班成绩单'))

创建两个list:

a=[]b=[](这两个list是用来临时存放学号与姓名的)for i in range (1,14):           #在大二下学期15级成绩汇总.xlsx表中提取出姓名与学号a .append(sheet.row_values(i,1,2))    #提取第i行的第1个数,即这个命令抽取的是表中的学号列b .append(sheet.row_values(i,2,3))    #提取第i行的第2个数,即这个命令抽取的是表中的姓名列

在此特比注意:excel中行与列均是从0开始计算的,即表中第1行第1列在进行处理运行时为第0行第0列,表中第2行第2列在进行处理运行时为第1行第1列。表中sheet也是从0开始算起。

解释一下: a .append(sheet.row_values(i,1,2))在经过几次错误后我发现,i是指第i行, 1,2 这两个是一段范围。即取的是第1个值,按照上面注意的说,就是表中第二个框格的值。

如果对此有疑问可以试一下将 1,2 修改一个值进行尝试。

for n in range(13):  #将学号与姓名写入新建的表格中,并写在第1页,人数为13人。ws.write(n,0,a[n][0])ws.write(n,1,b[n][0])

提醒:为什么这里要用a[n][0]而不是a[n]?这个是我自己水平有限制的原因。因为在提取表中数据放入a,b两个list中他们的形式是:a=[[111],[112],[113]……]的形式,对于这一点的解决方法我还没想出来,因此只能靠a[n][0]这样的形式来解决。因为在写入新的表格过程中不能将list整个放入框格中,只能放入文本或者其他框格允许的格式。如果你们有什么比较好的方法可以提出来我们一起交流学习,感激不尽。

for q in range(13):   #对1班所有人的成绩进行随机抽取数据ran=random.randint(60,91)if ran<=70:ws1.write(q,2,'及格({0})'.format(ran))if ran>70 and ran<=80:ws1.write(q,2,'中等({0})'.format(ran))if ran>80 and ran<=90:ws1.write(q,2,'良好({0})'.format(ran))wb.save('15资环1,2班地理信息系统实习成绩.xls')      #将新建的表格保存为'15资环1,2班地理信息系统实习成绩.xls'文件

以下代码是由两个班的数据进行运算。

原来的表格为:

 import xlwt    #引入xlwt数据库用来将数据写入excel文档中 import xlrd    #引入xlrd数据库用来从excel中读取数据 import random    #引入random数据库给出随机数 excel=xlrd.open_workbook('G:\python\新建文件夹\表1.xlsx')     #从一个已有学号与姓名的excel表格中提取出对应的学号和姓名 sheet=excel.sheets()[0] wb=xlwt.Workbook()         #创立一个新的excel表格 ws1=wb.add_sheet('1班成绩单')       #第一页命名为1班成绩单 ws2=wb.add_sheet('2班成绩单')       #第一页命名为2班成绩单 a1=[] #表1中的学号列 a2=[] #表2中的学号列 b1=[] #表1中的姓名列 b2=[] #表2中的姓名列 for i in range (1,14):        #表1.xlsx表中提取出1班的姓名与学号  a1.append(sheet.row_values(i,1,2))  b1.append(sheet.row_values(i,2,3)) for j in range (14,33):        #在表1.xlsx表中提取出1班的姓名与学号  a2.append(sheet.row_values(j,1,2))  b2.append(sheet.row_values(j,2,3)) for n in range(13):         #将1班学号与姓名写入新建的表格中,并写在第1页.1班人数为13人  ws1.write(n,0,a1[n][0])  ws1.write(n,1,b1[n][0]) for m in range(19):         #将2班学号与姓名写入新建的表格中,并写在第2页.2班人数为19人  ws2.write(m,0,a2[m][0])  ws2.write(m,1,b2[m][0]) for q in range(13):         #对1班所有人的成绩进行随机抽取数据  ran=random.randint(60,91)      #分数为60-90之间  if ran<=70:    ws1.write(q,2,'及格({0})'.format(ran))  #以下表示在各分数段的等级  if ran>70 and ran<=80:    ws1.write(q,2,'中等({0})'.format(ran))  if ran>80 and ran<=90:    ws1.write(q,2,'良好({0})'.format(ran)) for d in range(19):         #对2班所有人的成绩进行随机抽取数据  ran=random.randint(60,91)  if ran<=70:    ws2.write(d,2,'及格({0})'.format(ran))  if ran>70 and ran<=80:    ws2.write(d,2,'中等({0})'.format(ran))  if ran>80 and ran<=90:    ws2.write(d,2,'良好({0})'.format(ran))

wb.save('15资环1,2班地理信息系统实习成绩.xls')            #将新建的表格保存为'15资环1,2班地理信息系统实习成绩.xls'文件 

结果如下:


总结

以上所述是小编给大家介绍的基于python实现在excel中读取与生成随机数写入excel中,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对站的支持!


  • 上一条:
    教你用 Python 实现微信跳一跳(Mac+iOS版)
    下一条:
    python实现简易云音乐播放器
  • 昵称:

    邮箱:

    0条评论 (评论内容有缓存机制,请悉知!)
    最新最热
    • 分类目录
    • 人生(杂谈)
    • 技术
    • linux
    • Java
    • php
    • 框架(架构)
    • 前端
    • ThinkPHP
    • 数据库
    • 微信(小程序)
    • Laravel
    • Redis
    • Docker
    • Go
    • swoole
    • Windows
    • Python
    • 苹果(mac/ios)
    • 相关文章
    • 在python语言中Flask框架的学习及简单功能示例(0个评论)
    • 在Python语言中实现GUI全屏倒计时代码示例(0个评论)
    • Python + zipfile库实现zip文件解压自动化脚本示例(0个评论)
    • python爬虫BeautifulSoup快速抓取网站图片(1个评论)
    • vscode 配置 python3开发环境的方法(0个评论)
    • 近期文章
    • 在windows10中升级go版本至1.24后LiteIDE的Ctrl+左击无法跳转问题解决方案(0个评论)
    • 智能合约Solidity学习CryptoZombie第四课:僵尸作战系统(0个评论)
    • 智能合约Solidity学习CryptoZombie第三课:组建僵尸军队(高级Solidity理论)(0个评论)
    • 智能合约Solidity学习CryptoZombie第二课:让你的僵尸猎食(0个评论)
    • 智能合约Solidity学习CryptoZombie第一课:生成一只你的僵尸(0个评论)
    • 在go中实现一个常用的先进先出的缓存淘汰算法示例代码(0个评论)
    • 在go+gin中使用"github.com/skip2/go-qrcode"实现url转二维码功能(0个评论)
    • 在go语言中使用api.geonames.org接口实现根据国际邮政编码获取地址信息功能(1个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf分页文件功能(95个评论)
    • gmail发邮件报错:534 5.7.9 Application-specific password required...解决方案(0个评论)
    • 近期评论
    • 122 在

      学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..
    • 123 在

      Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..
    • 原梓番博客 在

      在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..
    • 博主 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..
    • 1111 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
    • 2016-10
    • 2016-11
    • 2018-04
    • 2020-03
    • 2020-04
    • 2020-05
    • 2020-06
    • 2022-01
    • 2023-07
    • 2023-10
    Top

    Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号 PHP交流群

    侯体宗的博客