本文使用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): # 遍历每一个Excel文件
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()
sheetnum = len(wsheets)
for s in range(sheetnum): # 遍历每一个worksheet
ws = wb.get_sheet_by_name(wsheets[s]) # 获取第s个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()