在实现从excel中读取数据作为接口参数遇到的问题

时间:2021-10-31 09:03:44
这个算我自己第一次使用python语言实现 一个功能 一、首先我们先要代码实现如何从excel上读取数据python实现还是比较简单的 1.我使用的是xlrd模块,我们先要安装这个包,这样我们才可以使用它 安装方法: a.可以直接把文件拷贝到 $python_dir/Lib,这方法我试了一下不可以,我也不知道为什么 b.我下载了xlrd模块,在目录下运行了python setup.py install,成功了 可以去https://pypi.python.org/pypi/xlrd   官网下载 另外还有很多方式,你可以自己去百度搜索 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)}

要是有更好的建议可以告诉我!!!!