- 安装模块
- 导入模块
- 打开excel文件,获取数据
- 获取数据表的数据(某一个具体的sheet)
- 获取表名称
- 获取行,列数量
- 获取行,列的值
- 获取单元格的值
- 综合示例
1、安装模块
pip install xlrd
2、导入模块
import xlrd
3、打开excel文件
data=xlrd.open_workbook(self.file_name)
4、获取数据表的数据
tables=data.sheets()[self.sheet_id]
5、获取表名称
name=table.name
6、获取行、列数量
nrows = table.nrows
nclos = table.ncols
7、获取某行、列的值
row_value=tables.row_value(i)
col_value=tables.col_value(i)
8、获取单元格的值
cellvalue = table.cell(row,col).value
cellvalue = table.cell_value(row,col)
9、综合示例
import xlrd
from xlutils.copy import copy
class OperateExcel:
def __init__(self,sheet_id=None,file_name=None):
if file_name:
self.file_name=file_name
self.sheet_id=sheet_id
# self.tables=self.get_data()
else:
self.file_name='../dataconfig/case1.xls'
self.sheet_id=0
self.data=self.get_data()
#获取表格数据(sheet的内容)
def get_data(self):
data=xlrd.open_workbook(self.file_name)
tables=data.sheets()[self.sheet_id]
return tables
#获取行数
def get_lines(self):
lines=self.get_data().nrows
return lines
#获取某一个单元格内容
def get_cellValue(self,row,col):
value=self.get_data().cell(row,col).value
return value
#写入数据
def write_value(self,row,col,value):
ori_data=xlrd.open_workbook(self.file_name)
copy_data=copy(ori_data)
sheet_data=copy_data.sheets()[0]
sheet_data.write(row,col,value)
copy_data.save(self.file_name)
#根据对应的case_id找到对应行的内容(需要先找到行号)
def get_row_data(self,case_id):
row_num=self.get_row_data(case_id)
row_data=self.data.row_values(row_num)
return row_data
#根据对应的case_id找到对应的行号
def get_row_num(self,case_id):
num=0
col_value=self.get_col_data()
for item in col_value:
if case_id in item:
return num
num+=1
def get_col_data(self,col_id=None):
if col_id != None:
cols = self.data.col_values(col_id)
else:
cols = self.data.col_values(0)
return cols
if __name__=="__main__":
opers=OperateExcel()
print(opers.get_data())
print(opers.get_lines())
print(opers.get_cellValue(1,3))
print(opers.get_col_data(2))
print(opers.get_row_num(2))
10、总结
综合示例中的copy是为了实现可以在表格中写入数据,xlrd没有读的功能,xlwt有,但是会覆盖之前的原文件,所有可以先copy,再实现副本中实现写入数据