我們在對每周魂角,每月昵济,季度,年度等各區(qū)銷售數(shù)據(jù)或者個人工作匯總時野揪,會涉及將每個地區(qū)或者每個人的工作表匯總的情況访忿,一個一個復(fù)制是可以的,但表格較多的時候每次都這樣操作顯然是很浪費時間的 斯稳,這里介紹使用python批量將各單獨的excel帶格式復(fù)制到新表格的方法海铆。
以下是某款A(yù)PP每年各月的用戶活躍情況表,我們需要將每年的數(shù)據(jù)匯總到一張總表格中挣惰,原始數(shù)據(jù)如下:
示例代碼如下:
from win32com.client import Dispatch # 導(dǎo)入win32com模塊
import os # 導(dǎo)入操作系統(tǒng)模塊
'''
復(fù)制Sheet頁到另一個Excel文件
filepath:要遍歷的目錄
filelist:要復(fù)制的Excel文件列表
targetfilename:新生成的Excel文件的名稱
'''
def copysheet(filepath, filelist,targetfilename):
excelapp = Dispatch('Excel.Application') # 創(chuàng)建Excel應(yīng)用對象
excelapp.visible = 1 # 此行設(shè)置打開的Excel表格為可見狀態(tài)卧斟;忽略則Excel表格默認(rèn)不可見
targetfile = excelapp.Workbooks.Add() #新建Excel文件
targetws_list = targetfile.Worksheets
for filename in filelist: # 遍歷Excel文件列表
filesplit = filename.split('.')
if filesplit[-1] == 'xlsx' or filesplit[-1] == 'xls': # 判斷是否為Excel文件
excelfile = excelapp.Workbooks.Open(filepath + '\\' + filename) # 打開一個Sheet頁
ws = excelfile.Worksheets
ws.Copy(None,targetws_list(1)) #跨表復(fù)制,插入到第一個Sheet頁之后
excelfile.Close(SaveChanges=1)
else:
pass # 占位符殴边,不執(zhí)行操作
targetws_list[0].Delete() # 刪除默認(rèn)創(chuàng)建的Sheet1
targetfile.SaveAs(filepath + targetfilename) # 保存Sheet頁到新Excel文件中
targetfile.Close(SaveChanges=1) # 關(guān)閉Excel文件
excelapp.quit() # 退出Excel應(yīng)用對象
'''獲取指定目錄下的文件
filepath:要遍歷的目錄
filelist_out:輸出文件列表
file_ext:文件的擴(kuò)展名,默認(rèn)為任何類型的文件
'''
def getfilenames(filepath='',filelist_out=[],file_ext='all'):
# 遍歷filepath下的文件
for filename in os.listdir(filepath):
if file_ext == '.xlsx': # 遍歷Word文檔文件
if os.path.splitext(filename)[1] in ['.xlsx','.xls']:
filelist_out.append(filename) # 添加到路徑列表中
else:
if file_ext == 'all': # 遍歷全部文件
filelist_out.append(filename) # 添加到路徑列表中
elif os.path.splitext(filename)[1] == file_ext:
filelist_out.append(filename) # 添加到路徑列表中
else:
pass
filelist_out.sort(reverse=True) # 對列表進(jìn)行排序
return filelist_out # 返回文件完整路徑列表
if __name__ == '__main__':
filepath = r"C:\data" # Excel文件保存的路徑
copysheet(filepath, getfilenames(filepath, [], '.xlsx'), r'\近6年數(shù)據(jù)匯總.xlsx') # 合并多個Sheet頁
運行結(jié)果如下 珍语,能快速將各excel表匯總到一個總表中:
注:這里沒有進(jìn)行表格名字排序锤岸,或者重命名,后續(xù)更新~
參考資料:《python編程錦囊》明日科技廊酣。