• python读取excel


    # -*- coding:utf-8 -*-
    import xlrd

    class ExcelControl(object):
    def __init__(self):
    self.mod = 0

    def open_excel(self,file,mod=0):
    '''
    *打开指定路径的Excel文件*

    | *参数*  | *类型* | *描述* |
    | file | string | 要读的Excel路径 |
    | mod | int | mod用来区分后面获取Excel表格的值是根据行号和列号获取还是 根据指定的Key,默认值是0,
    即获取值是根据 (1,2)即表示获取一行二列单元格的值,如果mod是1,获取值应该是('key1','key2')即表示从行中key1和列中的key2获取单元格的值 |
    '''
    self.workbook = xlrd.open_workbook(file,encoding_override='utf-8')
    self.mod = int(mod)

    def getNormalNum(self,num):
    value = int(num)
    value = value -1
    return value

    def read_excel_sheet_value_with_key_name(self,sheetName,rowKeyName,colKeyName):
    '''
    *获取在指定Sheet下的指定行的Key和指定列的Key的单元格值(mod必须等于1)*

    | *参数*  | *类型* | *描述* |
    | sheetName | string | 指定 Sheet |
    | rowKeyName | string | 指定行的Key,第一列的值 |
    | colKeyName | string | 指定列的Key,第一行的值 |
    '''
    if self.mod != 1:
    raise AssertionError("The operate excel mod should be '1',current mod is %s" % self.mod)
    worksheet = self.workbook.sheet_by_name(sheetName)
    rown = self.getRowKeyName(rowKeyName,worksheet)
    coln = self.getColKeyName(colKeyName,worksheet)

    cell = worksheet.cell_value(rown, coln)
    return cell

    def getRowKeyName(self,rowKeyName,worksheet):
    rown = -1
    for num in range(0, 100):
    cell = worksheet.cell_value(num, 0)
    if cell == rowKeyName:
    rown = num
    break
    if rown == -1:
    raise AssertionError("Can not find the row,keyName is %s" % rowKeyName)
    return rown

    def getColKeyName(self,colKeyName,worksheet):
    coln = -1
    for num in range(0, 100):
    cell = worksheet.cell_value(0, num)
    if cell == colKeyName:
    coln = num
    break
    if coln == -1:
    raise AssertionError("Can not find the col,keyName is %s" % colKeyName)
    return coln

    def read_excel_sheet_value(self,sheetName,rown,coln):
    '''
    *获取在指定Sheet下的指定行号和指定列号的单元格值(mod必须等于0)*

    | *参数*  | *类型* | *描述* |
    | sheetName | string | 指定 Sheet |
    | rown | string | 行号 |
    | coln | string | 列号 |
    '''
    if self.mod != 0:
    raise AssertionError("The operate excel mod should be '0',current mod is %s" % self.mod)
    worksheet = self.workbook.sheet_by_name(sheetName)
    cell = worksheet.cell_value(self.getNormalNum(rown), self.getNormalNum(coln))
    return cell

    def read_excel_sheet_values_with_columns(self,sheetName,rown,colns):
    if self.mod != 0:
    raise AssertionError("The operate excel mod should be '0',current mod is %s" % self.mod)
    worksheet = self.workbook.sheet_by_name(sheetName)
    data = []
    for coln in colns:
    value = worksheet.cell_value(self.getNormalNum(rown), self.getNormalNum(coln))
    data.append(value)
    return data

    def read_excel_sheet_values_with_rows_columns(self,sheetName,rowns,colns):
    if self.mod != 0:
    raise AssertionError("The operate excel mod should be '0',current mod is %s" % self.mod)
    worksheet = self.workbook.sheet_by_name(sheetName)
    datas = []
    for row in rowns:
    data = []
    for coln in colns:
    value = worksheet.cell_value(self.getNormalNum(row), self.getNormalNum(coln))
    data.append(value)
    datas.append(data)
    return datas

    if __name__ == '__main__':
    excelControl = ExcelControl()
    excelControl.open_excel('E:/test.xlsx')
    #value = excelControl.read_excel_sheet_value('Sheet1',1,2)
    #print value

    value = excelControl.read_excel_sheet_values_with_columns('Sheet1', 1, [1,2])
    for v in value:
    print v
  • 相关阅读:
    OD: Kernel Vulnerabilities
    newInstance()和new的区别
    原型模式
    工厂模式
    代理模式
    策略模式
    简单工厂模式
    C#操作符的重载
    旅行之舌尖上的中国
    模式和原则[转载]
  • 原文地址:https://www.cnblogs.com/jack1989/p/9832453.html
Copyright © 2020-2023  润新知