1. 程式人生 > >使用openpyxl合併多個excel檔案

使用openpyxl合併多個excel檔案

使用openpyxl合併多個excel檔案

自office 2016後,便可以合併多個excel檔案,但是當excel檔案過多時,office2016效率並不高,雨是我自己寫了個合併excel檔案的程式碼,這裡我們需要用到openpyxl 這個第三方庫 ,如從未接觸過openpyxl這個第三方庫,我建議你先去了解一下,這個庫的一些知識,當然,你可以跳過這些知識,直接使用以下程式碼,但我覺得還是先了解一下為好。

如想使用程式碼,更換資料夾路徑即可。

值得注意的是這是合併多個excel文件,且文件只有一個相同結構sheet表,才可使用的程式碼!

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# time 2018-11-23
# Author fcj
# message 處理資料

from openpyxl import load_workbook
import os
from openpyxl import Workbook
from openpyxl.drawing.image import Image  # 注意當你想往excel寫入圖片時,可使用這個方法。


def del_excel():
    file_list = os.walk('D:/集合/銀行/')  # 獲取這個資料夾下所有的excel文件。

    for file in file_list:
    
        path_list = file[2]
        wb = Workbook()
        ws1 = wb.create_sheet('銀行', index=0) 創造合併之後的sheet表的名字
        title_list = ['名字','個人照片', '二維碼']  # sheet表的表頭建立
        ws1.append(title_list)
        
        for ph in path_list:  #  迭代遍歷所有excel 文件
            print('ph %s' % ph)
            ph = ph.replace('~$', '')
            if str(ph).endswith('sx'):
                res = find_excel(path='D:/集合/銀行/' + ph)   # 構建單個文件路徑
                ws1.append(res)
                wb.save('D:/FX.xlsx')


def find_excel(path):  #  獲取excel文件內容的方法
    wb = load_workbook(path)
    sheet = wb.active
    content = []
    
    for index, row in enumerate(sheet.rows):
        if index > 0:  # 因為 index = 0時,獲取到的為表格的值。
            # print(row)
            for item in row:   #  這個迭代無特殊情況 可簡化一下
                # print(item.value)
                content.append(item.value)    #  注意,獲取到的是一行的值

    return content


if __name__ == '__main__':
    del_excel()

最近CSDN的系統出現了問題,評論看不到了,如有疑問,可以新增我的個人聯絡方式。

郵箱:[email protected]

有問題請聯絡我,或者評論即可。