Python-接口自動化- 封裝操作excel表格類

import xlrd

data = xlrd.open_workbook('../dataconfig/case1.xls')
tables = data.sheets()[0]   #將第一頁的表格數據賦給tables
print(tables.nrows) #打印出表格有多少行
print(tables.cell_value(2,3))   #打印出表格第二行第三列,列是從0開始計算
# -*- coding: utf-8 -*-
import xlrd
from xlutils.copy import copy
#row是行
#col是列
class Operation_excel:  #operation是操作的意思
    def __init__(self,file_name=None,sheet_id=None):    #初始化函數
        if file_name:
            self.file_name = file_name
            self.sheet_id = sheet_id
        else:
            self.file_name = 'C:/Users/XY/PycharmProjects/MDGQ/dataconfig/case1.xls' #excel表的絕對路徑,相對路徑在命令行執行時有問題
            self.sheet_id = 0   #第0頁,也就是第一頁,0123456、、、、
        self.data = self.get_data()  #初始化,首先調用獲取數據的函數

    #獲取sheets的內容
    def get_data(self):
        data = xlrd.open_workbook(self.file_name)   #打開excel,open_workbook
        tables = data.sheets()[self.sheet_id]   #將第一頁的表格數據賦給tables
        return tables

    #獲取單元格的行數
    def get_lines(self):
        #tables = self.data
        #return tables.nrows
        return  self.data.nrows     #第二種寫法

    #獲取某一單元格的內容
    def get_cell_value(self,row,col):
        return self.data.cell_value(row,col) #行和列的值傳進去獲取對應單元格的值

    #寫入數據
    def write_value(self,row,col,value):    #這個函數主要實現返回實際結果的值到excel中
        '''
        寫入Excel數據
        :param row:
        :param col:
        :param value:
        '''
        read_data = xlrd.open_workbook(self.file_name)
        write_data = copy(read_data)
        sheet_data = write_data.get_sheet(0)
        sheet_data.write(row,col,value) #通過行列把值寫入對應的單元格
        write_data.save(self.file_name) #保存到對應地址的文件上

    #調用下邊幾個函數,根據對應的caseid找到對應行的內容
    def get_rows_data(self,case_id):
        row_num = self.get_row_num(case_id) #通過依賴的case_id查到行號
        row_data = self.get_row_values(row_num) #通過行號查到所在行data
        return  row_data

    #第二步、根據依賴的caseid,遍歷第一步獲取的第零列數據,查到caseid所在行,拿到行號
    def get_row_num(self,case_id):
        num = 0
        clols_data = self.get_cols_data()
        for col_data in clols_data:
            if case_id in col_data:
                return num
            num += 1

    #第三步、根據第二步獲得的行號,拿到該行的內容。通過這行的內容就可以執行該接口,拿到返回值
    def get_row_values(self,row):
        tables = self.data
        row_data = tables.row_values(row)
        return row_data

    #第一步、獲取某列的內容,本代碼固定查找第零列,也就是第一列
    def get_cols_data(self,col_id=None):
        if col_id != None:
            cols = self.data.col_values(col_id)
        else:
            cols = self.data.col_values(0)  #通過列號,獲取該列所有值,col_values(這裏放列號)
        return cols


if __name__ =='__main__':
    opers = Operation_excel()
    print(opers.get_lines())


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章