1. 程式人生 > >python學習-windows下使用python27將合並多個xlsx文件

python學習-windows下使用python27將合並多個xlsx文件

res mar def 主函數 忽略 單元格 .com 模塊 一個


有時候需要處理很多報表,將一個目錄下的所有excel格式報表合並,手工操作費事費力如果能使用python,將多個.xlsx同時能夠合並多個excel表的話,多麽方便。

技術分享圖片

1、windows上python配置

windows上安裝的是python2.7,需要使用pip安裝一些第三方包,所以需要配置一下。在linux上修改Pip源很簡單,但是在windows上很麻煩,所以我就直接單次指定pip源下載包

#windows上pip執行路徑為C:\Python27\Scripts
pip install -U pip -i https://pypi.douban.com/simple/ #升級pip
pip install -i  openpyxl #處理excel表格

技術分享圖片


2.合並多個xlsx表格

編寫腳本,將E:\excel\目錄下所有xlsx文件合並

#!/env/python
#coding=utf-8

##合並多個excel表格##

import os
import glob
import openpyxl


def merge_xlsx_files(xlsx_files):  #定義函數合並xlsx文件
    wb = openpyxl.load_workbook(xlsx_files[0]) #調用openpyxl模塊loda_workbook函數
    ws = wb.active                              #獲取活躍的Worksheet
    ws.title = "merged result"                  #定義工作表標題

    for filename in xlsx_files[1:]:            #循環xlsx_files參數,獲取第一個工作表(只有一個)
        workbook = openpyxl.load_workbook(filename)  #調用函數
        sheet = workbook.active                   #獲取活躍的表格
        for row in sheet.iter_rows(min_row=2): #遍歷其他文件,忽略首行內容
            values = [cell.value for cell in row] #循環獲取單元格的值
            ws.append(values)                      #將值依次添加末尾    
    return wb                                     #返回

def get_all_xlsx_files(path):                        #定義獲取所有xlsx文件
    xlsx_files = glob.glob(os.path.join(path,'*.xlsx')) #采用glob方法指定路徑下所有.xlsx的文件
    sorted(xlsx_files,key=str.lower)                     #按照關鍵字字符串小寫排序
    return xlsx_files

def main():                                        #定義主函數
    xlsx_files = get_all_xlsx_files(os.path.expanduser ("E:\\excel\\")) #定義變量xlsx_files為get_all_xlsx_files函數,指定參數為指定目錄
    wb = merge_xlsx_files(xlsx_files)                            #定義wb為merge_xlsx_files函數,指定參數為遍歷
    wb.save('merged_form.xlsx')                                  #save方法將匯總表保存到merged_form.xlsx

if __name__ =='__main__':
    main()

完成合並後如下所示

技術分享圖片


python學習-windows下使用python27將合並多個xlsx文件