Python整理多个Excel工作表数据到一个工作表中(二)

本文使用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()

猜你喜欢

转载自blog.csdn.net/u013378642/article/details/80538103