要求统计出业绩表中每个人累加业绩。大于等于1000表示达标,需要统计出开始达标的月份和业绩。
import xlrd #导入读取模块
from xlutils.copy import copy #导入copy模块
wb=xlrd.open_workbook('业绩表.xls') #打开工作簿
ws=wb.sheet_by_name('Sheet1') #打开工作表
nwb=copy(wb) #复制工作簿
nws=nwb.get_sheet('统计结果') #复制工作表
subtotal=0 #初始化总计
for r in range(1,ws.nrows): #遍历到行末
for c in range(1,13): #遍历到列末
subtotal+=ws.cell_value(r,c) #累加值
if subtotal>=1000: #判断是否达到1000
nws.write(r,0,ws.cell_value(r,0)) #写
nws.write(r,1,'%d月'%c) #表
nws.write(r,2,subtotal) #格
break #跳出循环
subtotal=0 #重置总计
nwb.save('业绩表.xls') #保存工作簿
问题:如果是不超过1000怎么办?
import xlrd
from xlutils.copy import copy
wb=xlrd.open_workbook('业绩表.xls')
ws=wb.sheet_by_name('Sheet1')
nwb=copy(wb)
nws=nwb.get_sheet('统计结果')
r,c=0,0
sub=0
for r in range(1,ws.nrows):
for c in range(1,ws.ncols):
sub=sub+ws.cell_value(r,c)
if sub>=1000:
nws.write(r,0,ws.cell_value(r,0))
nws.write(r, 1, '%d月'%c)
nws.write(r,2,sub)
break
else: #包含不超过1000的人
nws.write(r, 0, ws.cell_value(r, 0))
nws.write(r, 1, '%d月' % c)
nws.write(r, 2, sub)
sub=0
nwb.save('业绩表.xls')