|
需求:本案例求每个人平均分写入N列
思路1:用ws.row_values(row)方法拿到整行的值,然后利用切片【1:-1】去掉第一个姓名,和最后一个空值,再用sum函数求和除以12,round函数四舍五入。
思路2:先循环每行数据,然后再循环每列,把每个数值相加除以12保留两位
下面分别上两个思路代码:
- import xlrd #导入xls文件读取库。
- from xlutils.copy import copy #导入工作簿复制函数
- wb=xlrd.open_workbook('Chapter-5-4-1.xls') #读取工作簿。
- ws=wb.sheet_by_name('分数表') #读取工作表。
- nwb=copy(wb) #复制工作簿为副本。
- nws=nwb.get_sheet('分数表') #读取副本工作簿中的工作表。
- for row_num in range(1,ws.nrows): #循环行号。
- row_vals=ws.row_values(row_num) #根据行号读取每行的值。
- avg_score=sum(row_vals[1:-1])/12 #对每行的分数求平均值。
- fmt_score=round(avg_score,2) #将平均值四舍五入到小数点后两位。
- nws.write(row_num,13,fmt_score) #将平均值写入13列中的单元格。
- nwb.save('Chapter-5-4-1.xls') #保存副本工作簿。
复制代码- import xlrd
- from xlutils.copy import copy
- wb = xlrd.open_workbook('Chapter-5-4-1.xls')
- ws = wb.sheet_by_index(0)
- nwb = copy(wb)
- nws = nwb.get_sheet('分数表')
- for row in range(1,ws.nrows):
- avg = round(sum(ws.row_values(row)[1:-1])/12,2)
- nws.write(row,13,avg)
- nwb.save('0.xls')
复制代码
|
|