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