1. 程式人生 > 其它 >將多個excel檔案彙總到同一個excel中(包含合併單元格)

將多個excel檔案彙總到同一個excel中(包含合併單元格)

技術標籤:輕鬆辦公excelpython

將多個格式相同的excel檔案特定單元格內容彙總到同一個excel中

#修改檔名
def rename_file(rootdir,old_name):
    import re
    import os
    new_name = old_name
    #檔名修改規則-將“XX表格”從檔名中刪除
    new_name = re.sub('指令碼整理','',new_name)
    #檔名修改(若在當前程式所在資料夾,以下兩句可刪除)
    old_name = rootdir+'\\'+old_name
    new_name =
rootdir+'\\'+new_name os.rename(old_name,new_name) def SummaryTable(): import openpyxl import xlrd import os.path import time import re # 建立檔案Summary.xlsx並儲存(當前程式所在資料夾下) workbook = openpyxl.Workbook('Summary.xlsx') workbook.save('Summary.xlsx') # 讀取檔案Summary.xlsx
workbook = openpyxl.load_workbook('Summary.xlsx') # 設定寫入第0張sheet worksheet = workbook.worksheets[0] #修改檔名 rootdir = r"D:\0000資料庫\0000學習筆記與備忘錄\work\學生資訊表格彙總" files = os.listdir(rootdir) for old_name in files: rename_file(rootdir,old_name) #此時files裡面為更新後的名稱 files =
os.listdir(rootdir) print('讀取資料中...請稍等...') for file in files: # 迭代資料夾,獲取每個檔名稱,通過相對路徑讀取表格 path = rootdir +'\\'+ file sheets = xlrd.open_workbook(path) # 按序號讀取指定Sheet sheet = sheets.sheet_by_index(0) # 獲取最大行數 rows = sheet.nrows # 除去表頭,開始彙總的行數 startrow = 1 file_name = re.sub('.xlsx','',file) for row in range(startrow, rows): #通過迭代獲取每一行特定內容,並在後面新增該資料所屬檔名,方便篩選,資料核查等。 list = [] #獲取特定單元格 value = sheet.cell(row,0).value #新增至列表 list.append(value) value = sheet.cell(row,1).value list.append(value) list.append(file_name) #若當前行該資料為空,尋找上一行不為空的內容(針對合併單元格) i = row while(list[0] == ''): i = i-1 if i < 0: break value = sheet.cell(i,1).value list[0]=value #若某一個值為空,刪除當前list if list[1]=='': pass else: worksheet.append(list) workbook.save('Summary.xlsx') print('檔案儲存完成') SummaryTable()

本程式可以根據自己的需求修改