用python在excel中读取与生成随机数写入excel中
今天是我第一次发博客,就关于python在excel中的应用作为我的第一篇吧。
具体要求是:在一份已知的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:将爬取的网页数据写入Excel文件中
Python:将爬取的网页数据写入Excel文件中 通过网络爬虫爬取信息后,我们一般是将内容存入txt文件或者数据库中,也可以写入Excel文件中,这里介绍关于使用Excel文件保存爬取到的网页数据的 ...
- Python中random模块生成随机数详解
Python中random模块生成随机数详解 本文给大家汇总了一下在Python中random模块中最常用的生成随机数的方法,有需要的小伙伴可以参考下 Python中的random模块用于生成随机数. ...
- 读取xml文件,写入excel
在上一篇 Python写xml文件已经将所有订单写入xml文件,这一篇我们把xml文件中的内容读出来,写入excel文件. 输入xml格式: <?xml version="1.0&qu ...
- 从Excel中读取数据并批量写入MySQL数据库(基于MySQLdb)
一.Excel内容如下,现在需要将Excel中的数据全部写入的MySQL数据库中: 二.连接MySQL的第三方库使用的是“MySQLdb”,代码如下: # -*- coding:utf-8 -*-im ...
- python 文件单行循环读取的坑(一个程序中,文件默认只能按行循环读取一次,即使写到另一个循环里,它也只读取一次)
本来写了一个程序,想获取a文件中有,但是b文件中没有的行: 想到的方法是:1.一行一行提取a文件中数据,然后用a文件中的每一行与b文件中的每一行比较, 2.如果找到相同行就继续查找a中的下一行,如果找 ...
- Excel导入导出,生成和下载Excel报表、附件等操作--ASP.NET
public class OutExcel { public static void OutExcel_bb(DataTable dt, string thepath, string temppath ...
- java:从指定问价中读取80个字节写入指定文件中
import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; public class F ...
- 从Excel中读取数据并批量写入MySQL数据库(基于pymysql)
一.Excel内容时这样的: 二.最初的代码是这样的: # -*- coding:utf-8 -*-import pymysqlfrom xlrd import open_workbook class ...
- MVC中的ActionLink生成的属性名称 中划线的解决办法
当使用ActionLink来生成链接属性时,由于中划线的变量名称不符合命名规则,那么直接写中划线的变量时无法编译,此时只要改为下划线即可.Razor 引擎会自动转为中划线. 即 data_icon ...
随机推荐
- mybatis运行时拦截ParameterHandler注入参数
在实现多租户系统时,每个租户下的用户,角色,权限,菜单都是独立的,每张表里都有租户Id字段 (tenantId),每次做数据库操作的时候都需要带上这个字段,很烦. 现在的需求就是在mybatis向sq ...
- Mysql实现企业级数据库主从复制架构实战
场景 公司规模已经形成,用户数据已成为公司的核心命脉,一次老王一不小心把数据库文件删除,通过mysqldump备份策略恢复用了两个小时,在这两小时中,公司业务中断,损失100万,老王做出深刻反省,公司 ...
- 使用anyproxy 来抓取手机的数据包
简单介绍Anyproxy Anyproxy 是alibaba 前端团队开源的http/https 的代理工具 官网地址:http://anyproxy.io/cn/ 环境要求:需要安装nodejs 提 ...
- poj 3070 && nyoj 148 矩阵快速幂
poj 3070 && nyoj 148 矩阵快速幂 题目链接 poj: http://poj.org/problem?id=3070 nyoj: http://acm.nyist.n ...
- hdu 3829 Cat VS Dog 二分匹配 最大独立点集
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3829 题目大意: 给定N个猫,M个狗,P个小朋友,每个小朋友都有喜欢或者不喜欢的某猫或者某狗 管理员从 ...
- hdu 1151 Air Raid DAG最小边覆盖 最大二分匹配
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1151 题目大意: 城镇之间互相有边,但都是单向的,并且不会构成环,现在派伞兵降落去遍历城镇,问最少最少 ...
- PAT 1008. Elevator (20)
1008. Elevator (20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue The highest ...
- angularJS简单调用接口,实现数组页面打印
相比较jquery ,angular对这种接口数据处理起来会方便的多.这里举例调用 中国天气网的api接口. 首先肯定要引入angular.js这个不多说 <link rel="sty ...
- ofBiz-groovy-freemarker
ofBiz-groovy-freemarker根据浏览器的地址不同进入不同的页面 第一步:(2选一)创建groovy文件,或者java文件.在文件中定义变量 要放在 request.setAttrib ...
- 《Linux Device Drivers》第十八章 TTY驱动程序——note
简单介绍 tty设备的名称是从过去的电传打字机缩写而来,最初是指连接到Unix系统上的物理或虚拟终端 Linux tty驱动程序的核心紧挨在标准字符设备驱动层之下,并提供了一系列的功能,作为接口被终端 ...