在实现从excel中读取数据作为接口参数遇到的问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在实现从excel中读取数据作为接口参数遇到的问题相关的知识,希望对你有一定的参考价值。
这个算我自己第一次使用python语言实现 一个功能
一、首先我们先要代码实现如何从excel上读取数据python实现还是比较简单的
1.我使用的是xlrd模块,我们先要安装这个包,这样我们才可以使用它
安装方法:
a.可以直接把文件拷贝到 $python_dir/Lib,这方法我试了一下不可以,我也不知道为什么
b.我下载了xlrd模块,在目录下运行了python setup.py install,成功了
另外还有很多方式,你可以自己去百度搜索
2.就可以代码实现了
1 import xlrd 2 class ExcelHandleImpl(object): 3 ‘‘‘ 4 classdocs 5 ‘‘‘ 6 7 def __init__(self): 8 ‘‘‘ 9 Constructor 10 ‘‘‘ 11 self.filename = None 12 #打开excel 13 def open_excel(self,filename): 14 try: 15 data = xlrd.open_workbook(filename) 16 return data 17 except Exception,e: 18 print str(e) 19 #根据sheet名字获取信息 20 def excel_table_byname(self,filename,colnameindex=0,by_name=u‘merchant‘): 21 # 实例化类 22 bswi = ExcelHandleImpl() 23 data = bswi.open_excel(filename) 24 table = data.sheet_by_name(by_name) 25 #得到表格行数 26 nrows = table.nrows 27 #得到第一行的数据 28 colnames = table.row_values(colnameindex) 29 print colnames 30 list = [] 31 for rownum in range(1,nrows): 32 row = table.row_values(rownum) 33 if row: 34 app = {} 35 #组成字典 36 for i in range(len(colnames)): 37 app[colnames[i]] = row[i] 38 list.append(app) 39 return list
这段代码我也参考网上的一位大神的,要是你搜关于python实现excel应该可以搜到哪位大神的,他还有另外几种方式的实现
调用这段代码:
1 excel = ExcelHandleImpl() 2 tables = excel.excel_table_byname(‘C:\Users\BG302224\Desktop\datasetup.xlsx‘,0,‘goods‘)
我主要想说一下读取的字符串和接口的传参,这边主要我是第一次实现所以遇到了序列化的问题
1.比如我们需要的传参是这样的:{message: {"merchantstatus": "1", "alipayaccount": "", "contactphone": "33", "merchantname": "Test", "remark": "Test", "memberstatus": "0", "alipayname": "", "contactaddress": "Test", "principal": "SDET-Test"}}
a.我们序列化的内容应该是message之后的内容,先把取出来的表格内容序列化,之后再与message拼装
excel = ExcelHandleImpl() tables = excel.excel_table_byname(‘C:\Users\BG302224\Desktop\datasetup.xlsx‘) for row in tables: print row row = json.dumps(row)
row = {"message":row}
b.你看到了请求的数据都是字符串的形式,要是你直接在表格填写1,这样你读取出来的内容会是数据,还会带有小数据点,所以我都是把把表格中数据的单元格的格式转化成文本格式,这个读出来就是字符串的形式了,还有要是你就要数据的话,但是数据不包含小数点,这时候你需要在代码中实现转化
row[‘merchantstatus‘] = eval(row[‘merchantstatus‘])
经过这样的转化就不会包含小数点了
c.还有一种就是传的参数是null,但是python没有null,我们之前有提到我们是将表格的数据以字典的形式,这时候你就可以利用key,修改vlue值,
row[‘alipayaccount‘] = ‘‘
改成这种形式,请求给后台就会变成null,是什么原因我也不知道,要是哪位知道的话也可以告诉我。
d.还有一种就是参数中包含数组,因为我们从表格中获取的话,取出来的都是字符串,
我也进行了转化
row[‘merchantstatus‘] = eval(row[‘merchantstatus‘])
e.要是请求参数是以这种方式的:id:“1234”,name:“三生三世十里桃花”
是将冒号后面的字符串序列 话
id = "1234" name = "0001" data = {"id":json.dumps(id),"name":json.dumps(name)}
要是有更好的建议可以告诉我!!!!
以上是关于在实现从excel中读取数据作为接口参数遇到的问题的主要内容,如果未能解决你的问题,请参考以下文章
Java 实现Excel表数据的读取和写入 以及过程中可能遇到的问题