python實現Excel數據的批量(546個數據文件)合併及windows批量改名(附源代碼)

一、你們有沒有遇到這種情況?

在這裏插入圖片描述
546個excel文件需要合併,怎麼辦?

一個一個複製?時間來不及!

還是。。。想 想 別 的 招!

人 生 苦 短,我 有 python!

這個問題如果使用python做批處理,會有意想不到的效果!

往下看。。。。。。

二、基於windows系統的文件命名批處理

程序實現固然方便,但也是很笨拙的,我們需要對文件進行批處理,使得命名具有一定的規則,剛好,windows系統提供了一個解決方案。
1、將文件全部選中
2、右鍵單擊第一個文件→重命名
3、輸入文件名稱(比如:test)
4、形成test (1)→test (546),546個文件
在這裏插入圖片描述

三、基於python實現文件合併(附源代碼講解,直接複製即可)

import xlrd,xlsxwriter

url = "C:/Users/你傑哥/Desktop/python/excel"#修改爲你的文件所在路徑
office_file_name = "test"#修改爲你使用的文件名,如前文
file_format = 'xlsx'#修改爲你的數據格式
quantity = 546#修改爲你的數據文件數量
allxls = []#列表
for i in range(1,quantity+1):#for循環實現多文件路徑
    url_build = str(url) + "/" + str(office_file_name) + " (" + str(i) + ")." + str(file_format)
    allxls.append(url_build)
print(allxls)#先打印下看看對不對,也可刪去


#目標excel
end_xls=url + "/final_excel.xlsx"#最終文件的存儲路徑

#函數,打開文件
def open_xls(file):
    try:
        fh=xlrd.open_workbook(file)
        return fh
    except Exception as e:
        print("打開文件錯誤:"+e)


#根據excel名以及第幾個標籤信息就可以得到具體標籤的內容
def get_file_value(filename,sheetnum):
    rvalue=[]
    fh=open_xls(filename)
    sheet=fh.sheets()[sheetnum]
    row_num=sheet.nrows
    for rownum in range(0,row_num):
        rvalue.append(sheet.row_values(rownum))
    return rvalue
#獲取第一個excel的sheet個數以及名字作爲標準
first_file_fh=open_xls(allxls[0])
first_file_sheet=first_file_fh.sheets()
first_file_sheet_num=len(first_file_sheet)
sheet_name=[]
for sheetname in first_file_sheet:
    sheet_name.append(sheetname.name)
#定義一個目標excel
endxls=xlsxwriter.Workbook(end_xls)
all_sheet_value=[]
#把所有內容都放到列表all_sheet_value中
for sheet_num in range(0,first_file_sheet_num):
    all_sheet_value.append([])
    for file_name in allxls:
        print("正在讀取"+file_name+"的第"+str(sheet_num+1)+"個標籤...")
        file_value=get_file_value(file_name,sheet_num)
        all_sheet_value[sheet_num].append(file_value)


num=-1
sheet_index=-1

#將列表all_sheet_value的內容寫入目標excel
for sheet in all_sheet_value:
    sheet_index+=1
    end_xls_sheet=endxls.add_worksheet(sheet_name[sheet_index])
    num+=1
    num1=-1
    for sheet1 in sheet:
        for sheet2 in sheet1:
            num1+=1
            num2=-1
            for sheet3 in sheet2:
                num2+=1
                end_xls_sheet.write(num1,num2,sheet3)


endxls.close()

四、運行結果

1、ctrl+B
在這裏插入圖片描述
2、Excel文件在這裏插入圖片描述
在這裏插入圖片描述
用時16.9s,複製的話,得半小時。。。
不說了,做了半天,頭疼!!!希望大家能用得上!!!

五、總結

Python的設計哲學是“優雅”、“明確”、“簡單”,讓代碼具備高度的可閱讀性和觀賞性。即使完全沒有編程基礎,python的邏輯和語言表達也能很快接受,並應用於日常的工作和學習中。
關於本文,有什麼問題,請在下方留言提問!

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