要求统计出业绩表中每个人累加业绩。大于等于1000表示达标,需要统计出开始达标的月份和业绩。

    1. import xlrd #导入读取模块
    2. from xlutils.copy import copy #导入copy模块
    3. wb=xlrd.open_workbook('业绩表.xls') #打开工作簿
    4. ws=wb.sheet_by_name('Sheet1') #打开工作表
    5. nwb=copy(wb) #复制工作簿
    6. nws=nwb.get_sheet('统计结果') #复制工作表
    7. subtotal=0 #初始化总计
    8. for r in range(1,ws.nrows): #遍历到行末
    9. for c in range(1,13): #遍历到列末
    10. subtotal+=ws.cell_value(r,c) #累加值
    11. if subtotal>=1000: #判断是否达到1000
    12. nws.write(r,0,ws.cell_value(r,0)) #写
    13. nws.write(r,1,'%d月'%c) #表
    14. nws.write(r,2,subtotal) #格
    15. break #跳出循环
    16. subtotal=0 #重置总计
    17. nwb.save('业绩表.xls') #保存工作簿

    问题:如果是不超过1000怎么办?

    1. import xlrd
    2. from xlutils.copy import copy
    3. wb=xlrd.open_workbook('业绩表.xls')
    4. ws=wb.sheet_by_name('Sheet1')
    5. nwb=copy(wb)
    6. nws=nwb.get_sheet('统计结果')
    7. r,c=0,0
    8. sub=0
    9. for r in range(1,ws.nrows):
    10. for c in range(1,ws.ncols):
    11. sub=sub+ws.cell_value(r,c)
    12. if sub>=1000:
    13. nws.write(r,0,ws.cell_value(r,0))
    14. nws.write(r, 1, '%d月'%c)
    15. nws.write(r,2,sub)
    16. break
    17. else: #包含不超过1000的人
    18. nws.write(r, 0, ws.cell_value(r, 0))
    19. nws.write(r, 1, '%d月' % c)
    20. nws.write(r, 2, sub)
    21. sub=0
    22. nwb.save('业绩表.xls')

    业绩表.xls