1. 封装类出来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

    封装类出来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

    封装类出来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

    封装类出来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:])

    封装类出来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)

    封装类出来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

    封装类出来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

    封装类出来excel

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2022-01-03
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-08-03
  • 2022-12-23
猜你喜欢
  • 2021-11-23
  • 2021-11-27
  • 2021-08-19
  • 2022-12-23
  • 2021-07-26
  • 2022-12-23
相关资源
相似解决方案