码迷,mamicode.com
首页 > 编程语言 > 详细

用python在excel中读取与生成随机数写入excel中

时间:2018-01-03 22:35:48      阅读:250      评论:0      收藏:0      [点我收藏+]

标签:xlsx   学生   学习   image   姓名   color   而不是   好的   文件   

今天是我第一次发博客,就关于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‘文件

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

原来的表格为:

技术分享图片

 1 import xlwt                #引入xlwt数据库用来将数据写入excel文档中
 2 import xlrd                #引入xlrd数据库用来从excel中读取数据
 3 import random              #引入random数据库给出随机数
 4 
 5 excel=xlrd.open_workbook(G:\python\新建文件夹\表1.xlsx)                 #从一个已有学号与姓名的excel表格中提取出对应的学号和姓名
 6 
 7 sheet=excel.sheets()[0]
 8 wb=xlwt.Workbook()                                    #创立一个新的excel表格
 9 ws1=wb.add_sheet(1班成绩单)                          #第一页命名为1班成绩单
10 ws2=wb.add_sheet(2班成绩单)                          #第一页命名为2班成绩单
11 
12 
13 a1=[]                                                 #表1中的学号列
14 a2=[]                                                 #表2中的学号列
15 b1=[]                                                 #表1中的姓名列
16 b2=[]                                                 #表2中的姓名列
17 
18 for i in range (1,14):                                #表1.xlsx表中提取出1班的姓名与学号
19       a1.append(sheet.row_values(i,1,2))
20       b1.append(sheet.row_values(i,2,3))
21 
22       
23 for j in range (14,33):                               #在表1.xlsx表中提取出1班的姓名与学号
24       a2.append(sheet.row_values(j,1,2))
25       b2.append(sheet.row_values(j,2,3))
26       
27 for n in range(13):                                   #将1班学号与姓名写入新建的表格中,并写在第1页.1班人数为13人
28       ws1.write(n,0,a1[n][0])
29       ws1.write(n,1,b1[n][0])
30 for m in range(19):                                   #将2班学号与姓名写入新建的表格中,并写在第2页.2班人数为19人
31       ws2.write(m,0,a2[m][0])
32       ws2.write(m,1,b2[m][0])
33 
34 for q in range(13):                                   #对1班所有人的成绩进行随机抽取数据
35       ran=random.randint(60,91)                       #分数为60-90之间
36       if ran<=70:
37             ws1.write(q,2,及格({0}).format(ran))     #以下表示在各分数段的等级
38       if ran>70 and ran<=80:
39             ws1.write(q,2,中等({0}).format(ran))
40       if ran>80 and ran<=90:
41             ws1.write(q,2,良好({0}).format(ran))
42 
43 for d in range(19):                                    #对2班所有人的成绩进行随机抽取数据
44       ran=random.randint(60,91)
45       if ran<=70:
46             ws2.write(d,2,及格({0}).format(ran))
47       if ran>70 and ran<=80:
48             ws2.write(d,2,中等({0}).format(ran))
49       if ran>80 and ran<=90:
50             ws2.write(d,2,良好({0}).format(ran))
51 
52       
53 
54 wb.save(15资环1,2班地理信息系统实习成绩.xls)            #将新建的表格保存为‘15资环1,2班地理信息系统实习成绩.xls‘文件
55       

 

结果如下:

技术分享图片

 

用python在excel中读取与生成随机数写入excel中

标签:xlsx   学生   学习   image   姓名   color   而不是   好的   文件   

原文地址:https://www.cnblogs.com/jie-chen/p/8185726.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!