具体要求是:在一份已知的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整个放入框格中,只能放入文本或者其他框格允许的格式。如果你们有什么比较好的方法可以提出来我们一起交流学习,感激不尽。
新闻热点
疑难解答