【学习心得】Python批量提取多个Excel文件内容-xlsx文件怎么打开

本文主要讲解怎样使用Python对多个excel文件任意区域内容进行批量提取。在看这篇文章之前,默认你已经具备了python的基础知识。如果没有任何基础,建议先看看上一篇文章:【学习心得】我的Python入门之旅。

话不多说,直接上原始数据给大家看,注意,本文所使用数据全部为模拟假设数据,并非真实数据,请勿他用。本次使用数据为8个excel文件,理论上80个、800个excel都可以用本文方法进行操作…所以,主要学习方法应用…

数据说明,在文件夹里有多个excel文件如下图:

【学习心得】Python批量提取多个Excel文件内容

同时,文件里的数据结构如下图,给出两个示例图:

【学习心得】Python批量提取多个Excel文件内容

【学习心得】Python批量提取多个Excel文件内容

上面示例数据的数据结构是一样的,注意现在提出的提取要求:把上面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:\\cz\\data"

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。这就是我们需要的文件,代码运行过程如下:

【学习心得】Python批量提取多个Excel文件内容

代码运行结果如下:

【学习心得】Python批量提取多个Excel文件内容

这里的newdata.xlsx就是我们需要的文件,打开文件如下:

【学习心得】Python批量提取多个Excel文件内容

可以想象,如果有成千上百的excel文件需要我们提取固定区域的数据的话,这段代码能够给我们减轻很大的负担。

不行,累了,先不写了,完整代码分析明天我再写个续文吧。

共同学习,一起进步!明天继续。

推荐阅读