wps合并所有sheet页_Python一键合并上千个Excel表,一天的工作量一小时搞定!下班...
生活随笔
收集整理的這篇文章主要介紹了
wps合并所有sheet页_Python一键合并上千个Excel表,一天的工作量一小时搞定!下班...
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一、老板的需求總是莫名奇妙
- 老板需求:一天老板說,嘿!放牛娃,將這些excel表合并到一個總表里,下班前交給我
老板話剛講完,我心里就想,這還不簡單么,excel不就是有合并表的功能么!!簡單的要死!哈哈哈哈哈哈
可當我拿到excel表后,自己傻眼了,上千個,一兩三個在excel里還行,這么多咋搞?????不信看下圖 - 搬救兵:
頓時我就慌了,這么多我真沒有在Excel里合并過,我就找了同事,同事說這還不簡單,就在Excel里面寫腳本呀!!,我暗暗的說,我不會,然后他甩了一句話給我,你不會你活該,誰叫你不學呀,你不會百度呀!!反正領導不是讓我做,氣死你
雖然我知道我的同事性格就是這樣,但是我在那刻我還是很想打他,真想打他一頓,但是最后我只說了一句,我就不用Excel,我也能夠搞定,你有什么可豪橫的
二、別人不幫你,你幫你自己
- 有事找度娘:
首先,我在網上,csdn找了相關的文章,大多都是魚龍混雜,可能作者自己會,但是分享給人,別人卻看不懂,完全按照作者的來操作,卻得不出結果,失敗告終 - 程序員就拿出自己的本領
尋找無果后,我決定自己寫一個python程序,將思路捋了一波后,就開始著手寫了
三、上干貨,看不懂,我買飛機票給你
- 思路分析一波:
- 所需技能包
如果上述說的不會,咋辦??沒事!!我幫你找出來了
四、上代碼:(每一步都有注釋,完全不用擔心,全網最良心)
完整代碼:
import os import xlwt import xlrd import xlutils.copy import time """ 公司老板需求:1. 將上千個Excel表合并成一個表里2. 不管你用什么方法,實現效果就行 """ # #################################### 代碼走起來呀!!! """ 思路分析:1. 創建一個空表名叫"總表",表格形式須和合并表的一樣2. 獲取需要合并文件夾中的所有excel表的名字(文件名)3. 開始遍歷excel表4. 先讀取數據,然后寫入事先創建好總表中5. 當讀取完下一個待合并表的數據,然后準備寫入到總表時,必須先獲取到總表的行數,不然之前的數據將會被覆蓋掉。6. 遍歷結束,保存總表的數據 """ """ 項目運行:1. 將所有需要合并的表放到一個文件夾中,名叫excels2. autoMerge.py文件和excels文件夾同級3. 運行該.py文件,會在把合并表放到destDir夾中 """# 1.總表初始化(不友好,還需要自行寫好表頭列表,對非程序員不友好) def initExcel(path,excelTitle,excel_sheet_Name):""":param path: 合并總表的路徑:param excelTitle: 總表的表頭:param excel_sheet_Name: 合并總表的sheet名稱:return: 返回總表是否初始化成功"""try:# 創建一個工作簿book = xlwt.Workbook(encoding="utf-8")# 創建表單sheet = book.add_sheet(excel_sheet_Name)# 寫入表頭for i in range(0,len(excelTitle)):sheet.write(0, i, excelTitle[i])book.save(path)return Trueexcept Exception as e:return False# 1.1 總表初始化(用來解決上面的問題) def initExcel2(destExcel_path, sourceExcel_path,total_sheet_name):""":param destExcel_path: 合并總表excel的路徑:param sourceExcel_path: 需要合并excel的路徑:param total_sheet_name: 合并總表后sheet的名字:return: 返回False or True"""try:# 創建一個工作簿book = xlwt.Workbook(encoding="utf-8")# 創建表單,并給表單起個名字sheet = book.add_sheet(total_sheet_name)# 獲取待需合并excel的所有文件excel_name_list = get_All_Excelname(sourceExcel_path)# 一個待合并execl的路徑excel_path = sourceExcel_path + "/" + excel_name_list[0]# 獲取excel的sheetexcel_sheet = get_excel_sheet(excel_path)# 獲取excel的表頭數據excel_title_list = excel_sheet.row_values(0)# 寫入表頭for i in range(0,len(excel_title_list)):sheet.write(0, i, excel_title_list[i])book.save(destExcel_path)return Trueexcept Exception as e:return False# 2.獲取需要合并的所有的excel文件名 def get_All_Excelname(path):""":param path: 待合并excel文件的路徑:return:"""excelName_list = os.listdir(path)# print(excelName_list)return excelName_list# 返回excel表的sheet對象 def get_excel_sheet(path):# 打開指定路徑的excle表book = xlrd.open_workbook(path)# 獲取excle中的表單sheet = book.sheet_by_index(0)# 返回sheet對象return sheet# 返回總表的wtbook,sheet對象 def get_total_excel_sheet(path):""":param path: 存放總表的path:return:"""book = xlrd.open_workbook(path, formatting_info=True)wtbook = xlutils.copy.copy(book)wtsheet = wtbook.get_sheet(0)return wtbook,wtsheet# 4. 開始遍歷(合并excel表) def writeExcel(destExcel_path,source_path,excelName_list):""":param destExcel_path: 合并總表存放的路徑:param source_path: 需要合并excel的路徑:param excelName_list: 需要合并excel表的文件名稱:return:"""# 用來記錄總表中的行數total_excel_row = 1# 獲取總表的book,sheettotal_book,total_sheet = get_total_excel_sheet(destExcel_path)for excelName in excelName_list:# 文件路徑excelPath = source_path + excelName# 獲取表的sheet對象sheet = get_excel_sheet(excelPath)# 獲取行數n_rows = sheet.nrows# 開始遍歷讀取數據,并寫入數據for row_index in range(1,n_rows):# 獲取一行的數據,列表形式row_data_list = sheet.row_values(row_index)# 將數據寫入到總表中for j in range(0,len(row_data_list)):total_sheet.write(total_excel_row,j,str(row_data_list[j]))# 每寫一行,總表行數加1total_excel_row = total_excel_row + 1total_book.save(destExcel_path)print("數據合并已完成")print("合并后的數據共有%d條" % (total_excel_row - 1))# 創建文件夾 def makeDir(path):""":param path: 傳入需要創建文件夾的路徑:return:"""if not os.path.exists(path):os.mkdir(path)def main():# 待需合并的excel文件夾路徑source_excel_path = "./excels/"# 存放合并后的excel表文件夾路徑dest_dir = "./destDir"# 創建文件夾makeDir(dest_dir)# 合并excel表名total_excel_name = "總表.xls"# 合并表存放路徑total_excel_path = dest_dir + "/" + total_excel_name# 合并總表中的sheet的名字total_excel_sheet_name = "匯總表"# 初始化表flag = initExcel2(total_excel_path,source_excel_path,total_excel_sheet_name)if flag:excelName_list = get_All_Excelname("./excels")# 打印有多少個excel表print("總共有%d個excel表需要合并" %len(excelName_list))# 寫數據writeExcel(total_excel_path,source_excel_path, excelName_list)else:print("初始化表失敗")if __name__ == '__main__':main()time.sleep(3)看到這,都不留個贊說不過去了吧吧!!!!
運行結果:
五、不是程序員,也別慌
為了顧及非程序也能夠運行這個程序,我將它打包成一個自動合并工具,即.exe程序,看圖!!
只要按照說明書那樣操作,那就完事了(非常簡單,雙擊運行即可),看到這,再不點個贊,我可要打人了哈!!!!!!!!
這么好用的工具如何獲取呢? 加群:1136192749 就可以了
總結
以上是生活随笔為你收集整理的wps合并所有sheet页_Python一键合并上千个Excel表,一天的工作量一小时搞定!下班...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 能用来写安卓吗_石粉能否用来制砂生产?能
- 下一篇: 原始尺寸_螺母尺寸检测,螺丝螺母外观检测