标签:get excel 显示 顺序 turn 设置 EDA sha val
import pandas as pd ‘‘‘特例说明 file1="a20201220.xlsx" sheetname=‘Sheet1‘ df=pd.read_excel(file1,sheetname,usecols="A:D")#读取第A-D四列所有内容 df=pd.read_excel(file1,sheetname,usecols=[1,3])#读取第1,第3列所有内容 df=pd.read_excel(file1,sheetname,usecols="A:B,D")#读取第A 第B 第D三列所有内容 df=pd.read_excel(file1,sheetname,usecols="A:B,D",header=3,nrows=15)#读取第A 第B 第D的第4行开始的连续15行内容 df=pd.read_excel(file1,sheetname,usecols="A:B,D",nrows=15)#读取第A 第B 第D的第1行开始的连续15行内容 print(df.values)‘‘‘ class DoExcela: def do_alldata(self,filename,sheetname,head=None):#返回列表,列表元素是某行内容 df=pd.read_excel(filename,sheetname,header=head) lb=[] for i in df.values: lb.append(i) return lb def do_hangdata(self,filename,sheetname,hang,head=None):#指定行号,返回列表,列表元素是指定行的某列内容 df=pd.read_excel(filename,sheetname,header=head) lb=[] for i in df.values[hang]: lb.append(i) return lb def do_liexhdata(self,filename,sheetname,lie,head=None):#指定列序号,返回列表,列表元素是指定行的某列内容 df=pd.read_excel(filename,sheetname,header=head) lb=[] for i in df[lie].values: lb.append(i) return lb def do_liemingdata(self,filename,sheetname,lie,head=None):#指定列名称,返回列表,列表元素是指定行的某列内容 df=pd.read_excel(filename,sheetname) lb=[] for i in df[lie]: lb.append(i) return lb def do_danyuandata(self,file_name:str,sheet_name:str,hang_name:int,lie_name:int):#返回单元格的内容,类型随数据变化 df=pd.read_excel(file_name,sheet_name,header=None)#从第0行读取 data1=df.iloc[hang_name,lie_name] return data1 def do_sheetname(self,filename):#以列表形式返回所有工作表名称 df=pd.read_excel(filename,sheet_name=None) return list(df) def do_sheetshu(self,filename):#以列表形式返回所有工作表名称 df=pd.read_excel(filename,sheet_name=None) return len(list(df)) #下面的函数是读取指定单元格区域的值存入列表 def do_quyudata(self,file_name:str,sheet_name:str,zsh_name:int,zsl_name:int,yxh_name:int,yxl_name:int): #变量依次为文件名(表名)、工作表名称、左上行、左上列、右下行、右下列 df=pd.read_excel(file_name,sheet_name,header=None)#从第0行读取 alldata=[]#定义一个装所有数据的空列表 # 获取行索引,如果设置header=None,这里应该改为(1,df.shape[0]) for i in range(zsh_name-1,yxh_name): #Erowdata={}#定义一个装每行数据的字典 for j in range(zsl_name,yxl_name):#获取列索引 # df.columns[j]获取第j列表头,df.iloc[i,j]获取第i行第j列数据 alldata.append(df.iloc[i,j]) return alldata def do_alldata1(self,file_name:str,sheet_name:str)->‘返回一个列表嵌套字典‘: ‘‘‘通过excel表格路径和表单名字获取表单完整数据,以列表内嵌套字典的方式返回‘‘‘ # 文件有表头索引是从第二行开始为0,如果设置header=None,索引从 df=pd.read_excel(file_name,sheet_name)#读取 alldata=[]#定义一个装所有数据的空列表 # 获取行索引,如果设置header=None,这里应该改为(1,df.shape[0]) for i in range(df.shape[0]): rowdata={}#定义一个装每行数据的字典 for j in range(df.shape[1]):#获取列索引 # df.columns[j]获取第j列表头,df.iloc[i,j]获取第i行第j列数据 rowdata[df.columns[j]]=df.iloc[i,j] alldata.append(rowdata) # print(alldata) return alldata def do_liedata(self,file_name:str,sheet_name:str,lie_name:int)->‘返回一个列表嵌套字典‘: ‘‘‘通过excel表格路径和表单名字获取表单完整数据,以列表内嵌套字典的方式返回‘‘‘ # 文件有表头索引是从第二行开始为0,如果设置header=None,索引从 df=pd.read_excel(file_name,sheet_name,header=None)#从第一行开始读取 #df=pd.read_excel(file_name,sheet_name)#从第二行开始读取 alldata=[]#定义一个装所有数据的空列表 # 获取行索引,如果设置header=None,这里应该改为(1,df.shape[0] rowdata=[]#定义一个装每行数据的字典 for i in range(df.shape[0]): rowdata.append(df.iloc[i,lie_name]) # print(alldata) return rowdata def do_hangdata1(self,file_name:str,sheet_name:str,hang_name:int)->‘返回一个列表嵌套字典‘: ‘‘‘通过excel表格路径和表单名字获取表单完整数据,以列表内嵌套字典的方式返回‘‘‘ # 文件有表头索引是从第二行开始为0,如果设置header=None,索引从 df=pd.read_excel(file_name,sheet_name,header=None)#从第0行读取 #df=pd.read_excel(file_name,sheet_name)#从第一行读取 alldata=[]#定义一个装所有数据的空列表 # 获取行索引,如果设置header=None,这里应该改为(1,df.shape[0] rowdata=[]#定义一个装每行数据的字典 for i in range(df.shape[1]): rowdata.append(df.iloc[hang_name,i]) # print(alldata) return rowdata #下面的函数是读取指定单元格区域的值存入字典:键是显示列的顺序,值是单元格的值 def do_quyudatazj(self,file_name:str,sheet_name:str,zsh_name:int,zsl_name:int,yxh_name:int,yxl_name:int): #变量依次为文件名(表名)、工作表名称、左上行、左上列、右下行、右下列 df=pd.read_excel(file_name,sheet_name,header=None)#从第0行读取 alldata=[]#定义一个装所有数据的空列表 # 获取行索引,如果设置header=None,这里应该改为(1,df.shape[0]) for i in range(zsh_name-1,yxh_name): rowdata={}#定义一个装每行数据的字典 for j in range(zsl_name,yxl_name):#获取列索引 # df.columns[j]获取第j列表头,df.iloc[i,j]获取第i行第j列数据 rowdata[df.columns[j]]=df.iloc[i,j] alldata.append(rowdata) return alldata #openpyxl读取excel from openpyxl import load_workbook class DoExcel: def get_data(self, file_name, sheet_name): wb = load_workbook(file_name) # linux路径 sheet = wb[sheet_name] test_data = [] for i in range(2, sheet.max_row + 1): row_data = {} for j in range(1, sheet.max_column + 1): row_data[sheet.cell(1, j).value] = sheet.cell(i, j).value test_data.append(row_data) return test_data file1="a20201220.xlsx" af=DoExcela() all=af.do_alldata1(file_name=file1,sheet_name="Sheet1") lie=af.do_liedata(file_name=file1,sheet_name="Sheet1",lie_name=0) hang=af.do_hangdata1(file_name=file1,sheet_name="Sheet1",hang_name=0) danyuan=af.do_danyuandata(file_name=file1,sheet_name="Sheet1",hang_name=0,lie_name=3) quyu=af.do_quyudata(file_name=file1,sheet_name="Sheet1",zsh_name=1,zsl_name=1,yxh_name=4,yxl_name=4) print(type(hang)) quyu1=af.do_quyudatazj(file_name=file1,sheet_name="Sheet1",zsh_name=1,zsl_name=1,yxh_name=4,yxl_name=4) for i in hang: print(type(i)) break print(danyuan) for i in quyu: print("quyu",i) for i in quyu1: print("quyu1",i) print("单行") for i in hang: print(i) #break hang1=af.do_hangdata(file1,"Sheet1",0) print("第0行",hang1,type(hang1)) sheet1=af.do_sheetname(file1) print(sheet1) sheet2=af.do_sheetshu(file1) print(sheet2) all1=af.do_alldata(file1,"Sheet1") print(all1,type(all1)) lie1=af.do_liexhdata(file1,"Sheet1",0) print(lie1,type(lie1)) dany=af.do_danyuandata(file1,"Sheet1",2,3) print(dany,type(dany))
标签:get excel 显示 顺序 turn 设置 EDA sha val
原文地址:https://www.cnblogs.com/xkdn/p/14263683.html