做自动化的时候,需要从excel中读取数据;本文实现将excel文件数据读取成json格式,方便自动调用读取xls文件。使用xlrd读取xls文件代码:importxlrddefread_xls(file):#实例化excelbook=xlrd.open_workbook(file)#下标读取sheetsheet=book.sheet_by_index(1)#sheetnamereadsheet#sheet=book.sheet_by_name('Sheet1')#获取总行数nrows=sheet.nrows#循环读取每一行数据datas=[]foriinrange(1,nrows):#print(sheet.row_values(i))#数据组装dic+tformatdata=dict(zip(sheet.row_values(0),sheet.row_values(i)))datas.append(data)returndatas读取xlsx文件因为xlrd只能读取xls,如果遇到xlsx文件,需要使用openpyxl库读取,代码如下:fromopenpyxlimportload_workbookdefread_xlsx(file):#loadfilebook=load_workbook(file)#sheetname获取sheet:sheet=book['sheet1']#getthe总行数rows=sheet.max_row#得到总列数#cols=sheet.max_column#print(rows)#得到Headerhead=[rowforrowinsheet.iter_rows(min_row=1,max_row=1,values_only=真)][0]#数据组装datas=[]forrowinsheet.iter_rows(min_row=2,max_row=rows+1,values_only=True):data=dict(zip(head,row))datas.append(data)#print(datas)返回datas判断文件类型的方法最后自动选择根据文件后缀对应方法读取defread_excel(file:str):iffile.endswith('xls'):data=read_xls(file)eliffile.endswith('xlsx'):data=read_xlsx(file)else:data=['notsupportfile']returndatafinalcodeimportxlrdfromopenpyxlimportload_workbookdefread_xls(file):#实例化excelbook=xlrd.open_workbook(file)#下标读取sheetsheet=book.sheet_by_index(1)#sheetnamereadsheet#sheet=book.sheet_by_name('Sheet1')#获取总行数nrows=sheet.nrows#循环读取每一行数据datas=[]foriinrange(1,nrows):#print(sheet.row_values(i))#数据组装dic+t格式data=dict(zip(sheet.row_values(0),sheet.row_values(i)))datas.append(data)returndatasdefread_xlsx(file):#加载文件book=load_workbook(file)#工作表名称获取工作表:工作表=书['sheet1']#获取总行数rows=sheet.max_row#获取总列??数#cols=sheet.max_column#print(rows)#获取表头head=[rowforrowinsheet.iter_rows(min_row=1,max_row=1,values_only=True)][0]#数据组装datas=[]forrowinsheet.iter_rows(min_row=2,max_row=rows+1,values_only=True):data=dict(zip(head,row))datas.append(data)#print(datas)returndatas#获取单元格值:#data=sheet.cell(row=row,column=col).value#获取表格内容,开始从第一行第一列开始,注意不要丢失.valuedefread_excel(file:str):iffile.endswith('xls'):data=read_xls(file)eliffile.endswith('xlsx'):data=read_xlsx(file)else:data=['notsupportfile']returndataEnd刘客https://segmentfault.com/u/cnliuke
