之前写过用普通python库来合并文件,现在加强读写速度用pandas库来执行。
如果只读一个多sheet的excel文件,见代码1
代码1:
#!/usr/bin/python3 # -*- coding: utf-8 -*- # @Time : 2018/5/31 0031 15:29 # @Author : 一梦南柯 # @File : data_process1.py ''' 使用pandas读取.xlxs的excel多个sheet文件,并且写出csv格式的excel文件 ''' import pandas as pd def excel_add(file_path): xls_file=pd.ExcelFile(file_path) # 显示出读入excel文件中各个sheet表的名字 sheet_names = xls_file.sheet_names df_all = pd.DataFrame() for location,i in enumerate(sheet_names): if location == 0: # skiprows=[0]代表读取跳过的行数第0行,不写代表不跳过标题 df = pd.read_excel(file_path, sheet_name=i, skiprows=1, index=False, encoding='utf8') df_all.append(df) else: df = pd.read_excel(file_path, sheet_name=i, skiprows=2, index=False, encoding='utf8') df_all = df_all.append(df) #第一个参数是说把dataframe写入到D盘下的TEST2.csv文件中,参数sep表示字段之间用’, ’分隔,header表示是否需要头部,index表示是否需要行号。 df_all.to_csv('D:\\TEST2.csv',sep=',', header=True, index=False) if __name__ == '__main__': file_path = 'D:\\5.3\\test.xlsx' excel_add(file_path)如果只读文件夹下所有多sheet的excel文件,见代码2
代码2:
#!/usr/bin/python3 # -*- coding: utf-8 -*- # @Time : 2018/5/31 0031 15:29 # @Author : 一梦南柯 # @File : data_process1.py ''' 使用pandas读取文件夹下全部带有多个sheet的.xlxs文件,并且写出csv格式的excel文件 例子:若文件夹中有2个文件,则第一个for循环后,输出为: D:\5.3\test [] ['test.xlsx', 'test2.xlsx'] ''' import pandas as pd import os def excel_add(file_path): InputDir = file_path rootdir = InputDir df_all = pd.DataFrame() for parent, dirnames, filenames in os.walk(rootdir): for loc,filename in enumerate(filenames): xls_file=pd.ExcelFile(os.path.join(parent, filename)) # 显示出读入excel文件中各个sheet表的名字 sheet_names = xls_file.sheet_names if loc == 0: for location,i in enumerate(sheet_names): #若第一张表,则保存表头 if location == 0: # skiprows=[0]代表读取跳过的行数第0行,不写代表不跳过标题 df = pd.read_excel(os.path.join(parent, filename), sheet_name=i, skiprows=1, index=False, encoding='utf8') df_all.append(df) else: df = pd.read_excel(os.path.join(parent, filename), sheet_name=i, skiprows=2, index=False, encoding='utf8') df_all.append(df) else: for location, i in enumerate(sheet_names): df = pd.read_excel(os.path.join(parent, filename), sheet_name=i, skiprows=2, index=False, encoding='utf8') df_all = df_all.append(df) #第一个参数是说把dataframe写入到D盘下的TEST2.csv文件中,参数sep表示字段之间用’, ’分隔,header表示是否需要头部,index表示是否需要行号。 df_all.to_csv('D:\\TEST9.csv',sep=',', header=True, index=False) if __name__ == '__main__': file_path = 'D:\\5.3\\test' excel_add(file_path)