示范内容:把每行第一个单元格里的字符为大写A、大写B、大写C的数据存到新建的大写A、新建的大写B、新建的大写C工作簿中!
1.首先有这样一个execl文件,我把它放在execl_data文件夹里
2.分两个函数写,第一个函数是拿到execl表格中的数据,第二个函数是储存
import xlrd from xlutils.copy import copy def read_first(): # 打开文件 wb = xlrd.open_workbook('./execl_data/汇总数据01.xlsx') # 拿到第一个工作簿 sh = wb.sheet_by_index(0) # 把A,B,C分别建3个工作簿并把数据存放进去 raede = {'A':[],'B':[],'C':[]} # 通过便利把数据存到列表里 for r in range(sh.nrows): seelist = [] for c in range(sh.ncols): see = sh.cell_value(r, c) seelist.append(see) # 在这里做一个判断,把不同的Key所属的行存到所属的key下 if "A" in seelist: raede['A'].append(seelist) elif "B" in seelist: raede["B"].append(seelist) else: raede["C"].append(seelist) return raede def save(rea): wb = xlrd.open_workbook('./execl_data/汇总数据01.xlsx') wb1 = copy(wb) # 通过items把字典分开,key拿去建工作簿,v整合出来传入工作簿 for k,v in rea.items(): sh1 = wb1.add_sheet(k) for i1,v1 in enumerate(v): for i2,v2 in enumerate(v1): sh1.write(i1,i2,v2) # 传入写完后保存到新的execl文件 wb1.save('./execl_data/汇总数据a1.xlsx') if __name__ == "__main__": #这里执行函数 rea = read_first() save(rea)
注意:我把完成后的execl文件也储存到execl_data文件夹里
3.执行完代码后查看execl文件效果