|
需求:本案例要求对分数比中的每个人1-12月份进行判断,对大于或等于80分的分数进行求和,然后写入汇总分数单元格。
思路:先按照每行获取数据,每一行数据生成一个列表,然后再通过【1:-1】去掉开头和末尾的数据,获取到1-12月份的数据,然后再判断数字是否大于等于80,把大于80的数字加入到新列表,对新列表求和,把汇总分数写入到N列。
先上书中代码:
- import xlrd #导入xls文件读取库。
- from xlutils.copy import copy #导入工作簿复制函数。
- wb=xlrd.open_workbook('Chapter-5-8-1.xls') #读取工作表。
- ws=wb.sheet_by_name('分数表') #读取工作表
- nwb=copy(wb);nws=nwb.get_sheet('分数表') #复制工作簿及读取副本的工作表。
- lst=[] #初始化lst变量为空列表。
- for row_num in range(1,ws.nrows): #循环读取每行数据。
- row_vals=ws.row_values(row_num)[1:-1] #通过切片获取每行的数字区域。
- for val in row_vals: #循环row_vals列表中的每个数字赋值给val变量。
- if val>=80: #如果val变量中的数字大于等于80.
- lst.append(val) #则将数字添加到lst列表。
- #lst +=[val] #则将数字累积到lst列表。与上一行代码二选一
- nws.write(row_num,13,sum(lst)) #将lst列表求和,并写入副本工作表的单元格。
- lst=[] #重置lst变量为空列表。
- nwb.save('Chapter-5-8-1.xls') #保存工作簿。
复制代码 再上我写的代码:
- import xlrd
- from xlutils.copy import copy
- wb = xlrd.open_workbook('Chapter-5-8-1.xls')
- ws = wb.sheet_by_index(0)
- nwb = copy(wb)
- nws = nwb.get_sheet('分数表')
- for row in range(1,ws.nrows):
- print(row)
- info = ws.row_values(row)
- socre = info[1:-1]
- print(info)
- print(socre)
- list = []
- for i in socre:
- if i >= 80:
- list.append(i)
- result = sum(list)
- nws.write(row,13,result)
- nwb.save('aa.xls')
复制代码
|
|