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())