一、xlrd是什么?
Python语言中,读取Excel的扩展工具。
二、使用步骤
1.安装xlrd模块
方法一:pip指定安装1.2.0版本(高版本会无法读取xlsx文件):
pip install xlrd==1.2.0
方法二:pycharm里搜索xlrd模块安装:
2.读取excel文件
表格内容如下: 代码内容如下(已将代码封装好):
# 读取excel
class ReadExcel:
# 传入excel路径和sheet名称
def __init__(self, file_path, sheet_name):
self.file_path = file_path
self.sheet_name = sheet_name
self.sheet = self.get_sheet()
# 根据sheet名称获取表格对象
def get_sheet(self):
wb = xlrd.open_workbook(self.file_path)
sheet = wb.sheet_by_name(self.sheet_name)
return sheet
# 根据行列获取单元格数据
def __get_cell_value(self, rows, cols):
cell_value = self.sheet.cell_value(rows, cols)
return cell_value
# 获取excel行
def get_rows(self):
rows = self.sheet.nrows
return rows
# 获取excel列
def get_cols(self):
cols = self.sheet.ncols
return cols
# 获取合并单元格的值,返回合并单元格的起始行,结束行,起始列,结束列
def get_merged_info(self):
merged_info = self.sheet.merged_cells
return merged_info
# 获取excel数据(处理了合并和未合并单元格的所有数据)
def get_merged_cell_value(self, row_index, col_index):
# 如果没有合并的单元格,则正常据行列获取单元格数据
if not self.get_merged_info():
cell_value = self.__get_cell_value(row_index, col_index)
# 否则遍历获取到的合并单元格的数据来取数据
else:
# 遍历合并单元格的数据
for (r_low, r_high, c_low, c_high) in self.get_merged_info():
# 如果传进来的行列处于合并单元格中
if r_low <= row_index < r_high and c_low <= col_index < c_high:
# 就取合并单元格中的数据
cell_value = self.__get_cell_value(r_low, c_low)
break
# 否则根据传进来的行列取数据
else:
cell_value = self.__get_cell_value(row_index, col_index)
return cell_value
# 将数据转化为字典
def get_sheet_data_by_dict(self):
all_data_list = []
first_row = self.sheet.row(0)
for row in range(1, self.get_rows()):
row_dict = {}
for col in range(0, self.get_cols()):
row_dict[first_row[col].value] = self.get_merged_cell_value(row, col)
all_data_list.append(row_dict)
return all_data_list
if __name__ == '__main__':
excel_path = os.path.join(os.path.dirname(__file__), '../data/user.xlsx')
excel = ReadExcel(excel_path, 'register')
print(excel.get_merged_info())
print(excel.get_merged_cell_value(1, 5))
代码运行结果如下:
|