如图使用xlrd批量整理数据资料。数据源如下:
要提取所有excel文件里的蓝色标记的资料到一张表里 ,效果如下:
主要采用了xlrd获取xls文件的单元格数据。后面用pandas存放数据并转成了excel文件。中间又加了一点多线程的东西。其实呢这个例子只有5个文件,用不用多线程没什么影响.速度都很快.,0.1秒就可以完成了。最近一直在一点点地学习,又怕忘了,只得好好记下来了。没办法,笨鸟只能勤快点。
代码如下:
# -*- coding: utf-8 -*- """ Created on Tue Nov 20 13:40:42 2018 @author: FanXiaoLei xlrd的单元格行列索引都是从0开始的。xlrd没有关闭工作簿的函数。 """ import glob import xlrd import pandas as pd import threading import time t1=time.clock() res=[] def read_excel(f): global res wb=xlrd.open_workbook(f) ws=wb.sheet_by_index(0) res.append([ws.cell(4,2).value,ws.cell(7,2).value,ws.cell(7,6).value]) def run(spath): threads=[] xls=glob.glob(spath) if xls: for xl in xls: t = threading.Thread(target=read_excel,args=(xl,)) t.start() threads.append(t) for thread in threads: thread.join() if __name__=='__main__': run('附件/*.xls') df=pd.DataFrame(res,columns=['姓名','承包','非承包']) df.to_excel('合计.xlsx',sheet_name='合计',index=False) print('耗时:',time.clock()-t1)
效果图上面已经发过了。速度还是比较快的。平均耗时0.093秒就能完成,还可以的。