1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > 合并数据 - 合并多个Excel文件并转成CSV - Python代码

合并数据 - 合并多个Excel文件并转成CSV - Python代码

时间:2019-01-10 12:59:19

相关推荐

合并数据 - 合并多个Excel文件并转成CSV - Python代码

在工作中,有时候因为部门间的数据权限问题,推送数据的时候往往是通过邮件完成,对于量大的数据,往往会拆成很多个excel发送,到下一个部门导入数据库之前,总是需要先将所有excel合成一个excel,再导入数据库。手动操作往往受限于各种因素,嫌麻烦?打开excel太慢浪费时间?需要上班之前导好表又不想每天都提前来上班?总之下面这个代码可以解救你:

# -*- coding: utf-8 -*-#合并Excel文件import xlrdimport 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表的行数#按行读取文件内容并依次写入datavaluedef 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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。