zoukankan      html  css  js  c++  java
  • xlrd读取excel数据封装

    # coding:utf-8
    import xlrd
    class ExcelUtil():
        def __init__(self, excelPath, sheetName="Sheet1"):
            self.data = xlrd.open_workbook(excelPath)
            self.table = self.data.sheet_by_name(sheetName)
            # 获取第一行作为key值
            self.keys = self.table.row_values(0)
            # 获取总行数
            self.rowNum = self.table.nrows
            # 获取总列数
            self.colNum = self.table.ncols
    
        def dict_data(self):
            if self.rowNum <= 1:
                print("总行数小于1")
            else:
                r = []
                j = 1
                for i in list(range(self.rowNum-1)):
                    s = {}
                    # 从第二行取对应values值
                    #s['rowNum'] = i+2
                    values = self.table.row_values(j)
                    for x in list(range(self.colNum)):
                        s[self.keys[x]] = values[x]
                    r.append(s)
                    j += 1
                return r
    
    
    
    if __name__ == "__main__":
        filepath = r"C:UsersAdministratorDesktop测试文件雅琪信用卡测试数据	est_data.xlsx"
        sheetName = "Sheet1"
        data = ExcelUtil(filepath, sheetName)
        print(data.dict_data())

     运行结果:

    [{'供应商名称': '艾麟222', '渠道码': 452369.0, '所属银行': '浦发银行'}]

    注:这里的渠道码应该是一个字符串,xlrd读取时把数据变成了float,需要单独处理。

    转:

    方式一:

    data  = xlrd.open_workbook(r"C:UsersAdministratorDesktop测试文件雅琪信用卡测试数据	est_data.xlsx") #打开excel
    table = data.sheet_by_name("Sheet1") #读sheet
    nrows = table.nrows
    cols = table.ncols
    nos = []
    for i in range(1,nrows):  #指定从1开始,到最后一列,跳过表头
        for j in range(cols):
            ctype = table.cell(i , j).ctype #判断python读取的返回类型  0 --empty,1 --string, 2 --number(都是浮点), 3 --date, 4 --boolean, 5 --error
            no = table.cell(i, j).value #获取单元格的值
            if ctype == 2 :
                no = str(int(no)) #将浮点转换成整数再转换成字符串
            nos.append(no)
    print(nos)

    方式二:

    把excel单元格格式设置为以文本格式显示数字

  • 相关阅读:
    VScode快捷键:单行注释和多行注释
    常见状态码的含义
    2019年10月22日 文件操作复习
    2019年10月7日 函数复习
    2019年10月4日 元类
    2019年10月2日 property补充
    2019年10月1日 实现延迟计算功能
    2019年9月30日 property流程分析
    2019年9月29日 自定制property
    2019年9月23日 类的装饰器的应用
  • 原文地址:https://www.cnblogs.com/wenm1128/p/11534205.html
Copyright © 2011-2022 走看看