问题:数据库中的商品价格需要统一更新,新数据存在于Excel表中,原本的思路是准备使用apache的poi Excel工具类实现,但较为麻烦,经涛神
点拨使用python实现,记录一下
实现思路与java并无区别,但具体步骤稍简单一些,Python集成了很强大的第三方库,本文使用xlrd扩展库读取Excel,(python3需要使用xlrd3扩展包)主要的一些方法如下:
- 导入扩展库
import xlrd
- 读取excel文件
data = xlrd.open_workbook('xxx.xls')
- 读取数据
#通过sheet索引获取工作表
table = data.sheets()[0]
#row和col均为数组
row = table.row_values(i)
col = table.col_values(i)
#或者
cell = table.cell.values(x,y)
nrows = table.rows
ncols = table.cols
#循环行列表数据
for i in range(nrows):
print table.row_values(i)
具体代码如下:
- 导包
import xlrd
import urllib, urllib2
import json
- 调用后台接口
def getItemBybarcode(barcode,itemBasePrice):
url = "http://localhost:8080/api/editSaleItemBasePrice"
textmod = {'barcode': barcode, 'itemBasePrice': itemBasePrice}
textmod = urllib.urlencode(textmod)
#调用后台接口
req = urllib2.Request(url='%s%s%s' % (url, '?', textmod))
res = urllib2.urlopen(req)
res = res.read()
jsones = json.loads(res)
if(jsones['code'] == 'SUCCESS'):
print u"商品条码:",barcode," ----->>> 更新成功! " , res
else:
print u"商品条码:", barcode, " ----->>> 更新失败! ",res
- 读取EXCEL数据
def main():
data = xlrd.open_workbook('item.xls')
#获取excel表中的sheets
table = data.sheets()[0]
#获取sheets中的每一行数据
nrows = table.nrows
#循环每一行数据得到每个单元格cell
for i in range(nrows):
itemName = table.cell_value(i,0)
barcode = table.cell_value(i,1)
itemBasePrice = table.cell_value(i,2)
#调用后台接口请求修改价格
getItemBybarcode(barcode, itemBasePrice)
print itemName,barcode,itemBasePrice
- 完成
if __name__ == '__main__':
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
main()