python辦公自動化之——批量復(fù)制帶格式的excel到匯總表

我們在對每周,每月,季度,年度等各區(qū)銷售數(shù)據(jù)或者個人工作匯總時,會涉及將每個地區(qū)或者每個人的工作表匯總的情況,一個一個復(fù)制是可以的,但表格較多的時候每次都這樣操作顯然是很浪費時間的 ,這里介紹使用python批量將各單獨的excel帶格式復(fù)制到新表格的方法。
以下是某款A(yù)PP每年各月的用戶活躍情況表,我們需要將每年的數(shù)據(jù)匯總到一張總表格中,原始數(shù)據(jù)如下:


最近6年的原始數(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:文件的擴展名,默認(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)  # 對列表進行排序
    return filelist_out  # 返回文件完整路徑列表

if __name__ == '__main__':
    filepath = r"C:\data"  # Excel文件保存的路徑
    copysheet(filepath, getfilenames(filepath, [], '.xlsx'), r'\近6年數(shù)據(jù)匯總.xlsx')  # 合并多個Sheet頁

運行結(jié)果如下 ,能快速將各excel表匯總到一個總表中:


匯總后的年度數(shù)據(jù)

注:這里沒有進行表格名字排序,或者重命名,后續(xù)更新~

參考資料:《python編程錦囊》明日科技。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容