將多個excel檔案彙總到同一個excel中(包含合併單元格)
阿新 • • 發佈:2020-12-19
將多個格式相同的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()
本程式可以根據自己的需求修改