Python读excel(个人写法经验)

2025-10-26 12:46:17

1、先导入:

import xlrd

import sys

reload(sys)

sys.setdefaultencoding('utf-8')

Python读excel(个人写法经验)

2、class OpExcel(object):

"""读取excel"""

def __init__(self, file_path):

super(OpExcel, self).__init__()

self.file_path=file_path

self.Excel = xlrd.open_workbook(file_path)

self.tables = self.Excel.sheet_names()

def get_tableindex(self,table):

#获取excel需要操作的sheet的索引值

if table in self.tables:

index_data=self.tables.index(table)

return (index_data)

else:

print (table+u'不是excel的sheet名称')

return False

Python读excel(个人写法经验)

3、def get_data(self):

#获取excel所有数据已字典形式保存,按行取

excle={}

for table in self.tables:

all_value=[]

self.sheet=self.Excel.sheet_by_name(table)

for i in range(self.sheet.nrows):

all_value.append(self.sheet.row_values(i))

excle[table]=all_value

return excle

Python读excel(个人写法经验)

4、def get_nrows(self,table):

#获取表行数

self.sheet=self.Excel.sheet_by_name(table)

self.nrows=self.sheet.nrows

return self.nrows

def get_mcols(self,table):

#获取表列数

self.sheet=self.Excel.sheet_by_name(table)

self.mcols=self.sheet.mcols

return self.mcols

Python读excel(个人写法经验)

5、def get_rowdate(self,table,nrow=0,mcol=0):

#从M列开始获取第N行数据

self.sheet=self.Excel.sheet_by_name(table)

data=self.sheet.row_values(nrow)

return (data[mcol:])

def get_coldate(self,table,nrow=0,mcol=0):

#从N行开始获取第M列数据

self.sheet=self.Excel.sheet_by_name(table)

data=self.sheet.col_values(mcol)

return (data[nrow:])

Python读excel(个人写法经验)

6、def get_cellate(self,table,nrow=0,mcol=0):

#获取某个单元格数据和类型

#ctype : 0 empty,1 string, 2 number, 3 date, 4 boolean, 5 error

self.sheet=self.Excel.sheet_by_name(table)

type=self.sheet.cell(nrow,mcol).ctype

if (type == 3):

data_value = xlrd.xldate_as_tuple(self.sheet.cell(nrow,mcol).value,self.Excel.datemode)

value = datetime(*data_value).strftime('%Y/%m/%d %H:%M:%S') 

else:

value=self.sheet.cell(nrow,mcol).value

data=[type,value]

return (data)

def get_mergedcell(self,table):

#获取合并单元格有值得行和列

self.sheet=self.Excel.sheet_by_name(table)

data = []

for (nrow,rowhigh,mcol,colhigh) in self.sheet.merged_cells:

data.append([nrow,mcol])

return (data)

Python读excel(个人写法经验)

7、def get_ctype3(self,table):

#检查每一个单元格的ctype:0 empty,1 string, 2 number, 3 date, 4 boolean, 5 error

#输出ctype=3的单元格

nrows=self.get_nrows(table)

mcols=self.get_mcols(table)

data=[]

for nrow in range(nrows):

for mcol in range(mcols):

type=self.sheet.cell(nrow,mcol).ctype

if (type==3):

data.append([nrow,mcol])

if data !=[]:

return data

else:

return False

Python读excel(个人写法经验)

8、def get_datarow(self,table,data,cols=0):

#根据内容查找nrow行

if type(data)==str or type(data)==unicode:

mcol=None

nlist=[]

datanrow={}

table_data=self.get_coldate(table,0,cols)

print(u'开始查找数据')

for nrow,row_data in enumerate(table_data):

if row_data == data:

nlist.append(nrow)

print ('%s is in the %s Row'%(data,str(nrow)))

if nlist!=[] :

datanrow[data]=nlist

return (datanrow)

else:

print (u'没匹配到数据')

return False

else:

print('Value type is wrong')

return False

Python读excel(个人写法经验)

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢