合并数据 - 合并多个Excel文件并转成CSV - Python代码
生活随笔
收集整理的這篇文章主要介紹了
合并数据 - 合并多个Excel文件并转成CSV - Python代码
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
在工作中,有時候因為部門間的數據權限問題,推送數據的時候往往是通過郵件完成,對于量大的數據,往往會拆成很多個excel發送,到下一個部門導入數據庫之前,總是需要先將所有excel合成一個excel,再導入數據庫。手動操作往往受限于各種因素,嫌麻煩?打開excel太慢浪費時間?需要上班之前導好表又不想每天都提前來上班?總之下面這個代碼可以解救你:
# -*- coding: utf-8 -*- #合并Excel文件import xlrd import xlsxwriter#打開excel文件 def open_xls(file):fh=xlrd.open_workbook(file)#打開文件file,并讀取到fh中return fh#獲取excel中所有的sheet表 def getsheet(fh):return fh.sheets()#獲取文件fh中所有的工作表#獲取sheet表的行數 def getnrows(fh,sheet):table=fh.sheets()[sheet]return table.nrows#.nrows獲取table表的行數#按行讀取文件內容并依次寫入datavalue def getFilect(file,shnum):fh=open_xls(file)#調用open_xls函數,打開excel文件table=fh.sheets()[shnum]num=table.nrows#num表示table表的行數for row in range(num):rdata=table.row_values(row)#獲取table表的第row行的數據,賦給rdatadatavalue.append(rdata)#依次將rdata添加到datavalue的末尾,每讀取一行就寫入一行return datavalue#獲取fh文件中sheet表的個數 def getshnum(fh):x=0sh=getsheet(fh)for sheet in sh:x+=1return xif __name__=='__main__':#將需要合并的excel文件形成列表allxlsallxls=['E:\\pythondata\\union\\test_0.xlsx','E:\\pythondata\\union\\test_1.xlsx']#存儲所有讀取的結果datavalue=[]for fl in allxls:#遍歷所有需要合并的excel文件fh=open_xls(fl)#打開excel文件x=getshnum(fh)#獲取文件中sheet表的個數for shnum in range(x):#遍歷當前excel文件的所有sheet表print("正在讀取文件:"+str(fl)+"的第"+str(shnum)+"個sheet表的內容...")#提示進度rvalue=getFilect(fl,shnum)#將從當前sheet表中讀取的所有數據寫入rvalue#定義最終合并后生成的新文件endfile='E:\\pythondata\\union\\test_3.xlsx'#合并文件所處的位置與定義文件名wb1=xlsxwriter.Workbook(endfile)#創建一個sheet工作對象ws=wb1.add_worksheet()#遍歷rvalue中的所有單元格,并將讀取的單元格的值寫入合并后的文件中for a in range(len(rvalue)):#遍歷rvalue所有行for b in range(len(rvalue[a])):#遍歷rvalue的第a行的所有列,即實現所有單元格的遍歷c=rvalue[a][b]#獲取第a行第b列的值ws.write(a,b,c)#將第a行第b列的值c寫入wswb1.close()#寫入完成后關閉excel文件print("\n文件合并完成!!!\nExcel文件所處位置:"+str(endfile))#提示合并結束合并完成后的excel文件往往是很大的,直接使用excel文件導入數據庫的時候,容易出現各種漏數據的問題。那么就把它轉化成csv吧:
#將合并后的excel文件轉化成csv,方便導入數據庫 import pandas as pdfile='E:\\pythondata\\union\\test_3.xlsx' outfile='E:\\pythondata\\union\\test_3.csv'def xlsx_to_csv_pd():data_xls = pd.read_excel(file, index_col=0)data_xls.to_csv(outfile, encoding='utf-8')if __name__ == '__main__':xlsx_to_csv_pd() print("\n轉化完成!!!\nCSV文件所處位置:"+str(outfile))運行結果:
正在讀取文件:E:\pythondata\union\test_0.xlsx的第0個sheet表的內容... 正在讀取文件:E:\pythondata\union\test_0.xlsx的第1個sheet表的內容... 正在讀取文件:E:\pythondata\union\test_1.xlsx的第0個sheet表的內容...文件合并完成!!! Excel文件所處位置:E:\pythondata\union\test_3.xlsx轉化完成!!! CSV文件所處位置:E:\pythondata\union\test_3.csv總結
以上是生活随笔為你收集整理的合并数据 - 合并多个Excel文件并转成CSV - Python代码的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php raabitmq中间件_rabb
- 下一篇: 分组统计 - DataFrame.gro