python 項目中xlrd模塊讀取數據樣例


1.讀取數據整理成列表,可以兼容表格里日期,字符串等字符,詳細請看代碼:

    def get(self, sheetname,data_count): #接收兩個值,第一個是表單名稱,第二個是從第幾行還是讀
        workbook = xlrd.open_workbook(self.file) #文件名以及路徑,如果路徑或者文件名有中文給前面加一個r拜師原生字符。
        sheet = workbook.sheet_by_name(sheetname)  # 通過名稱獲取,讀取第一個接收的表格
        nrows = sheet.nrows  # 獲取該sheet中的有效行數
        first_row_values = sheet.row_values(1)  # 去讀表格第一行數據,如果是字典模式可以當做key使用,列表可用戶那單元格數據判斷使用
        list_all = []
        num = data_count  #從表格第幾行開始讀取
        for row_num in range(1, nrows): # 循環根據拿到的行數循環多少次,拿完為止
            if row_num ==2:
                continue
            row_values = sheet.row_values(row_num)  #返回由該行中所有單元格的數據組成的列表
            if row_values:
                str_obj = []
            for i in range(len(first_row_values)): #循環取單元格里的值
                ctype = sheet.cell(num, i).ctype       #返回單元格對象
                cell = sheet.cell_value(num, i)        #返回單元格中的數據
                if ctype == 2 and cell % 1 == 0.0:     # ctype為2且為浮點
                    cell = int(cell)                   # 浮點轉成整型
                    cell = str(cell)                   # 轉成整型后再轉成字符串,如果想要整型就去掉該行
                elif ctype == 3:
                    date = datetime(*xldate_as_tuple(cell, 0))
                    cell = date.strftime('%Y/%m/%d %H:%M:%S')
                elif ctype == 4:
                    cell = True if cell == 1 else False
                str_obj.append(cell)
            list_all.append(str_obj)
            num = num + 1
        return list_all

  

2.讀取數據整理成字典,(num=1,讀取第一行作為字典key使用,索引從0開始計算)可以兼容表格里日期,字符串等字符,詳細請看代碼:

    def get(self, sheetname): #接收兩個值,第一個是表單名稱,第二個是從第幾行還是讀
        workbook = xlrd.open_workbook(self.file) #文件名以及路徑,如果路徑或者文件名有中文給前面加一個r拜師原生字符。
        sheet = workbook.sheet_by_name(sheetname)  # 通過名稱獲取,讀取第一個接收的表格
        nrows = sheet.nrows  # 獲取該sheet中的有效行數
        first_row_values = sheet.row_values(1)  # 去讀表格第一行數據,如果是字典模式可以當做key使用,列表可用戶那單元格數據判斷使用
        list_all = []
        num = 1  #讀取的第一行用作字典的key使用
        for row_num in range(1, nrows): # 循環根據拿到的行數循環多少次,拿完為止
            if row_num ==2:
                continue
            row_values = sheet.row_values(row_num)  #返回由該行中所有單元格的數據組成的列表
            if row_values:
                str_obj = {}
            for i in range(len(first_row_values)): #循環取單元格里的值
                ctype = sheet.cell(num, i).ctype       #返回單元格對象
                cell = sheet.cell_value(num, i)        #返回單元格中的數據
                if ctype == 2 and cell % 1 == 0.0:     # ctype為2且為浮點
                    cell = int(cell)                   # 浮點轉成整型
                    cell = str(cell)                   # 轉成整型后再轉成字符串,如果想要整型就去掉該行
                elif ctype == 3:
                    date = datetime(*xldate_as_tuple(cell, 0))
                    cell = date.strftime('%Y/%m/%d %H:%M:%S')
                elif ctype == 4:
                    cell = True if cell == 1 else False
                str_obj[first_row_values[i]] = cell  
            list_all.append(str_obj)
            num = num + 1
        return list_all

 

3.讀取給定列數,如讀取該表中第3列~5列

    def read_ncols(self, sheetname, ncols, n=1, num=1000):  # i,sheet索引
        ExcelFile = xlrd.open_workbook(self.file)
        table = ExcelFile.sheet_by_name(sheetname)
        nrows = table.nrows  # 行數
        ncols = table.ncols  # 列數
        j = 0  # 循環次數
        for row in range(1, nrows):
            j += 1
            line = []
            if self.tag == 'True':
                for col in range(0, ncols):
                    line.append(table.cell(row, col).value)
                yield line
            elif self.tag == 'False':
                if j >= n and j < n + num:
                    for col in range(0, ncols):
                        line.append(table.cell(row, col).value)
                    yield line

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM