python pandas 读excel类
2021-03-07 11:30
标签:get excel 显示 顺序 turn 设置 EDA sha val python pandas 读excel类 标签:get excel 显示 顺序 turn 设置 EDA sha val 原文地址:https://www.cnblogs.com/xkdn/p/14263683.htmlimport 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))
下一篇:Java包机制
文章标题:python pandas 读excel类
文章链接:http://soscw.com/index.php/essay/61320.html