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


Posted in Python onJanuary 04, 2018

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

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

命令如下:

import xlwt

import xlrd

import random

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

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

现在我们需要提取这其中的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'文件

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

原来的表格为:

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

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实现在excel中读取与生成随机数写入excel中,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Python 相关文章推荐
Python的ORM框架SQLAlchemy入门教程
Apr 28 Python
Flask解决跨域的问题示例代码
Feb 12 Python
pandas修改DataFrame列名的方法
Apr 08 Python
mac下给python3安装requests库和scrapy库的实例
Jun 13 Python
使用Python微信库itchat获得好友和群组已撤回的消息
Jun 24 Python
python爬虫豆瓣网的模拟登录实现
Aug 21 Python
python实现通过flask和前端进行数据收发
Aug 22 Python
python双端队列原理、实现与使用方法分析
Nov 27 Python
解决Python3下map函数的显示问题
Dec 04 Python
TensorFlow实现打印每一层的输出
Jan 21 Python
python爬虫之selenium库的安装及使用教程
May 23 Python
OpenCV-Python实现怀旧滤镜与连环画滤镜
Jun 09 Python
python实现简易云音乐播放器
Jan 04 #Python
Python语言描述连续子数组的最大和
Jan 04 #Python
一个月入门Python爬虫学习,轻松爬取大规模数据
Jan 03 #Python
Python编程pygame模块实现移动的小车示例代码
Jan 03 #Python
python编程实现随机生成多个椭圆实例代码
Jan 03 #Python
Python通过Pygame绘制移动的矩形实例代码
Jan 03 #Python
Python模拟脉冲星伪信号频率实例代码
Jan 03 #Python
You might like
PHP实现时间比较和时间差计算的方法示例
2017/07/24 PHP
PHP如何防止XSS攻击与XSS攻击原理的讲解
2019/03/22 PHP
基于jquery的气泡提示效果
2010/05/31 Javascript
基于jquery的分页控件(C#)
2011/01/06 Javascript
二叉树先序遍历的非递归算法具体实现
2014/01/09 Javascript
使用js判断当前时区TimeZone是否是夏令时
2014/02/23 Javascript
通过Jquery的Ajax方法读取将table转换为Json
2014/05/31 Javascript
js获取input长度并根据页面宽度设置其大小及居中对齐
2014/08/22 Javascript
jQuery简单操作cookie的插件实例
2016/01/13 Javascript
jquery $.trim()去除字符串空格的实现方法【附图例】
2016/03/30 Javascript
jquery.guide.js新版上线操作向导镂空提示jQuery插件(推荐)
2017/05/20 jQuery
vue+VeeValidate 校验范围实例详解(部分校验,全部校验)
2018/10/19 Javascript
如何能分清npm cnpm npx nvm
2019/01/17 Javascript
在vue中使用setInterval的方法示例
2019/04/16 Javascript
[06:10]6.81新信使新套装!给你一个炫酷的DOTA2
2014/05/06 DOTA
[31:33]2014 DOTA2国际邀请赛中国区预选赛 TongFu VS DT 第一场
2014/05/23 DOTA
[01:25]2015国际邀请赛最佳短片奖——斧王《拆塔英雄:天赋异禀》
2015/09/22 DOTA
通过5个知识点轻松搞定Python的作用域
2016/09/09 Python
Python学习小技巧之列表项的排序
2017/05/20 Python
Python模拟随机游走图形效果示例
2018/02/06 Python
Python统计python文件中代码,注释及空白对应的行数示例【测试可用】
2018/07/25 Python
CentOS 7下安装Python3.6 及遇到的问题小结
2018/11/08 Python
python try 异常处理(史上最全)
2019/03/07 Python
Python 用三行代码提取PDF表格数据
2019/10/13 Python
pycharm运行程序时看不到任何结果显示的解决
2020/02/21 Python
django API 中接口的互相调用实例
2020/04/01 Python
Jupyter Notebook 实现正常显示中文和负号
2020/04/24 Python
3D动画《斗罗大陆》上线当日播放过亿
2021/03/16 国漫
Prototype如何更新局部页面
2013/03/03 面试题
客服实习的个人自我鉴定
2013/10/20 职场文书
技术副厂长岗位职责
2013/12/26 职场文书
人事专员的职责
2014/02/26 职场文书
工厂采购员岗位职责
2015/04/07 职场文书
离婚案件被告代理词
2015/05/23 职场文书
2016年感恩父亲节活动总结
2016/04/01 职场文书
go原生库的中bytes.Buffer用法
2021/04/25 Golang