python-Excel多個表格合併

時間:2019.02.19
工具:python3.7.1
用到的模塊:xlrd(負責讀取數據)
xlsxwriter(負責寫入數據)
glob(查找符合自己目的的文件)
一·模塊安裝(pip)
注意:這裏我用的是pip模塊來安裝,部分python版本沒有此功能,可自行百度
(1)進入命令提示符窗口(按Win + R進入)
(2)直接輸入pip install+模塊名
(模塊名:xlrd)
(模塊名:xlsxwriter)
(模塊名:glob)
(3)直接輸入pip list查看安裝的模塊
這是查看的模塊列表
二.代碼
以下爲代碼及其註釋:

import xlrd
import xlsxwriter
import glob

biao_tou = "NULL"
wei_zhi = "NULL"

#獲取要合併的所有exce表格
def get_exce():
    global wei_zhi
    wei_zhi = input("請輸入Exce文件所在的目錄:")
    all_exce = glob.glob(wei_zhi + "*.xlsx")
    print("該目錄下有" + str(len(all_exce)) + "個exce文件:")
    if(len(all_exce) == 0):
        return 0
    else:
         for i in range(len(all_exce)):
             print(all_exce[i])
         return all_exce					
        


#打開Exce文件
def open_exce(name):
    fh = xlrd.open_workbook(name)
    return fh

#獲取exce文件下的所有sheet
def get_sheet(fh):
    sheets = fh.sheets()
    return sheets


#獲取sheet下有多少行數據
def get_sheetrow_num(sheet):
    return sheet.nrows
    


#獲取sheet下的數據
def get_sheet_data(sheet,row):
    for i in range(row):
        if (i == 0):
            global biao_tou
            biao_tou = sheet.row_values(i)
            continue
        values = sheet.row_values(i)
        all_data1.append(values)
        
    return all_data1
    

if __name__=='__main__':
    all_exce = get_exce()
    #得到要合併的所有exce表格數據
    if(all_exce == 0):
        print("該目錄下無.xlsx文件!請檢查您輸入的目錄是否有誤!")
        os.system('pause')
        exit()

    all_data1 = []
    #用於保存合併的所有行的數據


    #下面開始文件數據的獲取
    for exce in all_exce:
        fh = open_exce(exce)
        #打開文件
        sheets = get_sheet(fh)
        #獲取文件下的sheet數量


        for sheet in range(len(sheets)):
            row = get_sheetrow_num(sheets[sheet])
            #獲取一個sheet下的所有的數據的行數

            all_data2 = get_sheet_data(sheets[sheet],row)
            #獲取一個sheet下的所有行的數據

    all_data2.insert(0,biao_tou)
    #表頭寫入

    


    #下面開始文件數據的寫入
    new_exce = wei_zhi + "test.xlsx"
    #新建的exce文件名字

    
    fh1 = xlsxwriter.Workbook(new_exce)
    #新建一個exce表

    new_sheet = fh1.add_worksheet()
    #新建一個sheet表

    for i in range(len(all_data2)):
        for j in range(len(all_data2[i])):
            c = all_data2[i][j]
            new_sheet.write(i,j,c)
            
    fh1.close()
    #關閉該exce表
    
    print("文件合併成功,請查看“" + wei_zhi + "”目錄下的test.xlsx文件!")
            
    os.system('pause')
    os.system('pause')

三.說明
程序使用說明:
(1) 運行”Exce表格合併.exe”文件
(2) 輸入要合併的所有.xlsx表格文件所在的盤目錄**(注意不要輸錯目錄,輸錯目錄或者亂輸入則直接強制退出)**
(3) 輸入完按回車後程序自動執行,生成test.xlsx文件
注意:如果原來就存在test.xlsx文件,必須先刪除,不然合併後的數據會保存在原來的test.xlsx文件,並且程序會一閃而過

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

最後感謝各位的觀看,本人是今天剛申請的博客,第一次寫,有什麼不對的地方請各位指出。
如有侵權請轉告本人刪除次文章(看其他大佬也這樣寫就跟着寫上去了)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章