背景
业务给了个excel,需要从生产捞数据,就是对应关系,写python自动读值调用生产环境的接口,并把返回值写回excel。(主要是不想去机房查数据库)
代码挺简单的,就把注释写完整发上来了,可以适合新手练习
代码
from openpyxl import load_workbook
#导入请求包
import requests
#导入json包
import json
#设置要访问的地址fileName = 'D:/project/python-program/xxx.xlsx'
wb = load_workbook(fileName)# 获取所有工作表名称
# print(wb.sheetnames)# 获取工作表对象,三种方法
sheet1 = wb.worksheets[0]
sheet2 = wb['sheet']
sheet3 = wb[wb.sheetnames[0]]
# print(sheet1, sheet2, sheet3)# 获取工作表名称
title = sheet1.title
# print(title)# 获取工作表总行数
rows = sheet1.max_row
# 获取工作表总列数
cols = sheet1.max_column
# 总行,总列
# print(rows, cols)# 获取某一单元格内容(行, 列),例:2行1列,列表从1开始;也可以直接sheet1.cell(2, 1).value
# cell = sheet1.cell(row=2, column=1).value
# print(cell)# 读取第一行的所有内容
row_list = []
url = '你请求的'
for i in range(2, rows + 2):cell_value = sheet1.cell(row=i, column=2).valueif not cell_value is None:cell_value = cell_value[0: -4]#这里得给设置请求头,tokenheaders = {'User-Agent': 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)','Authorization': 'Bearer__606a439225a125884de5e32effd51b2b'}
# print(url + cell_value)#直接请求r = requests.get(url + cell_value, headers=headers)#这里是输出了一个字符串
# print(r.text)#用自带的json工具把字符串转成字典list_json = json.loads(r.text)#处理逻辑,把json获取想要的数据放入excel# for list_jsonif len(list_json) > 1:for item in list_json[1:]:name = item['name']if name == cell_value:print(name)code = item['code']print(code)
# 把结果写入excelsheet1.cell(row=i,column=4,value=code)# 保存并关闭
wb.save(fileName)
wb.close()