找回密码
 立即注册
搜索
热搜: Excel discuz
查看: 1769|回复: 0

[《从excel到python》笔记案例] 字符串拆分与合并案例--汇总多表中不规范数据

[复制链接]

482

主题

7万

元宝

75万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
750848
发表于 2022-1-27 17:48:47 | 显示全部楼层 |阅读模式
00.png
需求,将四个季度,每个人的业绩汇总到一个新工作表,如下图所示
2022-01-27_173819.png
思路:循环每个季度的工作表ws,然后再循环每一行的数据,将B列拆分,求和,再与姓名拼接,然后将四个季度的数据写入新表。
知识点:其中int(ws.name)[1],做了一个巧妙运用,将表明中的季度数字截取出来,然后转换成数字,作为写入新表的行号,做了一个简单的循环。
先上书中代码:
  1. import xlrd,xlwt #导入读取和新建Excel的库。
  2. wb=xlrd.open_workbook('Chapter-4-14-1.xls') #读取工作簿。
  3. nwb=xlwt.Workbook('utf-8') #新建工作簿。
  4. nws=nwb.add_sheet('统计结果') #新建工作表。
  5. nws.write(0,0,'季度') #在新建的工作表中写入'季度'标题。
  6. nws.write(0,1,'统计结果') #在新建的工作表中写入'统计结果'标题。
  7. nums=0 #初始化nums为0。
  8. lst=[] #初始化lst为空列表,便于存放汇总结果。
  9. for ws in wb.sheets(): #循环读取ws工作簿下的每个工作表。
  10.     for row_num in range(1,ws.nrows): #循环读取每个工作表中行号。
  11.         name=ws.cell_value(row_num,0) #读取A列中的姓名。
  12.         num=ws.cell_value(row_num,1) #读取B列中的业绩。
  13.         for n in num.split('、'): #对B列单元格中的业绩进行拆分。
  14.             nums +=int(n) #转换拆分的数字为整型,然后累加到nums变量。
  15.         lst +=[name+':'+str(nums)] #将姓名与nums结果连接,然后累加到lst列表。
  16.         nums=0 #重置nums变量,便于下次循环时使用。
  17.     nws.write(int(ws.name[1]),0,ws.name) #将姓名写入新表A列。
  18.     nws.write(int(ws.name[1]),1,'\n'.join(lst)) #将每个人的总业绩合并,再写入新表B列。
  19.     lst=[] #重复lst为空列表,便于统计下一个工作表数据时使用。
  20. nwb.save('Chapter-4-14-2.xls') #保存新建的工作簿。
复制代码
我练习代码如下:
  1. import xlrd,xlwt
  2. wb = xlrd.open_workbook('Chapter-4-14-1.xls')
  3. nwb = xlwt.Workbook('utf-8')
  4. nws = nwb.add_sheet('sheet1')
  5. nws.write(0,0,'季度')
  6. nws.write(0,1,'结果')
  7. for ws in wb.sheets():
  8.     txt = ''
  9.     for row in range(1,ws.nrows):
  10.         sums = 0
  11.         name = ws.cell_value(row,0)
  12.         info = ws.cell_value(row,1)
  13.         for i in info.split('、'):
  14.             sums +=int(i)
  15.         a = f'{name}:{sums};'
  16.         txt +=a
  17.     nws.write(int(ws.name[1]),0,ws.name)
  18.     nws.write(int(ws.name[1]),1,txt)
  19. nwb.save('a.xls')
复制代码


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|五花八门论坛 ( 豫ICP备15031300号-3 )

GMT+8, 2024-4-23 16:53 , Processed in 0.099854 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表