本文使用openpyxl实现将同一文件夹下的所有Excel文件中的数据整理到一个新的Excel工作表中,待整理的数据都在Excel工作簿的第一个sheet中,且具有相同的表头结构。
代码如下:
# -*- coding: utf-8 -*-
__author__ = 'Ceres'
import openpyxl
import os.path
import os
def main():
rootdir = "./SortExcel" # 提前将待整理的Excel文件放在SortExcel文件夹下
files = os.listdir(rootdir) # 获得文件夹下的所有Excel文件
num = len(files) # 获取文件数量
finalWB = openpyxl.Workbook() # 新建工作簿用来汇总数据
sheet = finalWB.active
sheet.title = "allcase" # 修改工作表名字
print("Reading data...Please wait")
crow=1 # 从新表的第一行开始填入数据
k=1
for i in range(num):
path = os.path.join(rootdir, files[i])
if os.path.isfile(path):
if files[i] == "allcase.xlsx":
continue
else:
wb = openpyxl.load_workbook(filename=path)
wsheets=wb.get_sheet_names()
ws = wb.get_sheet_by_name(wsheets[0]) # 获取第一个sheet
end_row=ws.max_row
end_column=ws.max_column
start_row=2 # 从第二行开始取数据(第一行是表头)
start_column=1 # 从第一列开始取数据
if k==1: # 在新工作表的第一行填入表头
for j in range(start_column, end_column+1):
sheet.cell(row=crow, column=j).value=ws.cell(row=1,column=j).value
crow+=1
k+=1
for m in range(start_row, end_row+1):
for n in range(start_column, end_column+1):
sheet.cell(row=crow, column=n).value=ws.cell(row=m,column=n).value
crow+=1
print(files[i])
print("Saving...")
finalWB.save("./SortExcel/allcase.xlsx") # 整理后的文件命名为allcase.xlsx,保存到SortExcel文件夹下
print("Complete! Saved to ./SortExcel/allcase.xlsx")
main()