本文主要讲解怎样使用Python对多个excel文件任意区域内容进行批量提取。在看这篇文章之前,默认你已经具备了python的基础知识。如果没有任何基础,建议先看看上一篇文章:【学习心得】我的Python入门之旅。
话不多说,直接上原始数据给大家看,注意,本文所使用数据全部为模拟假设数据,并非真实数据,请勿他用。本次使用数据为8个excel文件,理论上80个、800个excel都可以用本文方法进行操作…所以,主要学习方法应用…
数据说明,在文件夹里有多个excel文件如下图:
![81542c763d9257d864818247e997f461.png](https://i-blog.csdnimg.cn/blog_migrate/b24b45085e4c97a863dafb960f7ff270.jpeg)
同时,文件里的数据结构如下图,给出两个示例图:
![fe9aacd84c605192398b92410d71fb1f.png](https://i-blog.csdnimg.cn/blog_migrate/3f2f51fd2a6a96a4818a408cb63e112d.jpeg)
![48539509a8874440ff4335e45477ba1d.png](https://i-blog.csdnimg.cn/blog_migrate/e036e5652cd2e6cbcf5d4d3d04a12296.jpeg)
上面示例数据的数据结构是一样的,注意现在提出的提取要求:把上面8个城市(也就是8个文件)的2005-2010年的前5列数据提取至一个sheet表里,该怎么办呢?当然了,8个城市完全可以手动复制粘贴,那么80个、800个城市呢?显然不行,工作量太大。这里我们可以使用python进行批量提取。当然本文只是应用了python的其中一些库,还有很多种方法可以满足这个需求,暂且不论。
本文主要使用到两个python库,一个是os库,主要用来对系统内的一些处理进行响应;另一个是openpyxl库,主要对excel文件进行操作处理。接下来,我将直接上全部代码,然后再逐一分析每段代码背后的故事…
-----------------完整代码分割线---------------
#coding=utf-8
from openpyxl import Workbook
from openpyxl import load_workbook
import openpyxl
import os
wb2=openpyxl.Workbook()
wb2.save('newdata.xlsx')
print u"新建Excel文件成功"
filepath="c:czdata"
dataset=os.listdir(filepath)
wb2=openpyxl.load_workbook('newdata.xlsx')
sheets2=wb2.sheetnames
sheet2=wb2[sheets2[0]]
k=1
countnum=1
for i in dataset:
print "run the number:{0} {1}".format(countnum,i)
wb1=openpyxl.load_workbook(filepath+"{}".format(i))
sheets1=wb1.sheetnames
sheet1=wb1[sheets1[0]]
j=k
for m in range(6,12):
for n in range(1,8):
cell1=sheet1.cell(row=m,column=n).value
sheet2.cell(row=j,column=n).value=cell1
j=j+1
k=j
countnum=countnum+1
wb2.save('newdata.xlsx')
wb1.close()
wb2.close()
print "run process successfully"
-----------------完整代码分割线---------------
运行代码后,在代码py格式文件目录下会自动生成一个新的excel文件:newdata.xlsx。这就是我们需要的文件,代码运行过程如下:
![6f10b9eefd8cefb4e2755dad16f88f30.png](https://i-blog.csdnimg.cn/blog_migrate/4717291da077c2875db9a4c1eeeffa26.jpeg)
代码运行结果如下:
![e4d1746be83b1cd23a80a2554f0fe23b.png](https://i-blog.csdnimg.cn/blog_migrate/f1c8e99d37dc6d94f1d99af5676552f0.jpeg)
这里的newdata.xlsx就是我们需要的文件,打开文件如下:
![897ac819dfcd600c43288ce5c2de3e08.png](https://i-blog.csdnimg.cn/blog_migrate/78a710274eea96352f0c3ae3eda51389.jpeg)
可以想象,如果有成千上百的excel文件需要我们提取固定区域的数据的话,这段代码能够给我们减轻很大的负担。
不行,累了,先不写了,完整代码分析明天我再写个续文吧。
共同学习,一起进步!明天继续。