xlrd批量读取xls格式excel文件数据。
如图使用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秒就能完成,还可以的。