当前位置: 首页 > news >正文

Python获取Excel内容

Python获取Excel内容

目录

  • Python获取Excel内容
    • 1.读取Excel并登陆
    • 2.下载Excel中图片 数据存储到列表
    • 3.上传到接口

需求:获取xlsx files目录下的所有Excel信息,并将数据打包成字典格式上传到接口

示例数据:

image-20240806135036076

1.读取Excel并登陆

import os
import re
import glob
import pandas as pd
from PIL import Image
import requests
from openpyxl import load_workbook# 获取当前路径
current_path = os.getcwd() 
# 定义目标文件夹和子目录 如果不存在则新建
dir_path = current_path + '\\xlsx files'
images_dir = current_path + '\\images'
target_files = glob.glob(os.path.join(dir_path, '*.xlsx'))
os.makedirs(dir_path, exist_ok=True)
os.makedirs(images_dir, exist_ok=True)
print(target_files)# 定义登陆url和接口url
login_url = 'http://127.0.0.1:8000/core/login/'
api_url = 'http://127.0.0.1:8000/revice_product/'
u_p = {'username': '123', 'password': '123'}
res = requests.post(url=login_url, data=u_p)
token = res.headers.get('Set-Cookie')
cookies = {f'{token.split('=')[0]}': f'{token.split('=', 1)[1]}'}

2.下载Excel中图片 数据存储到列表

# 存放图片名称信息
files_name = []
# 遍历目录下的所有Excel文件
for i in target_files:df = pd.read_excel(i) # 读取Excel信息 存放到dfwb = load_workbook(i) # 读取Excel函数 用于图片处理ws = wb[wb.sheetnames[0]] # 切换到第一个sheet表# 遍历获取表中所有图片for image in ws._images:image_row = image.anchor._from.row # 图片所在行image_col = image.anchor._from.col # 图片所在列# 根据图片位置获取其它信息 比如这里是产品名df_name = df.iloc[image_row, image_col - 6]# 打开图片并存储img = Image.open(image.ref).convert("RGB")# 以产品名命名图片 并存入列表img.save(os.path.join(images_dir, f'{df_name}.png'))files_name.append(df_name)df = pd.read_excel(i)db = pd.read_excel(i) # 读取Excel其它的信息 存放到db# 遍历Excel每一行数据for index, j in df.iterrows():row_dict = {}# 遍历每一列数据for col in df.columns:# 排除空数据和第一列数据 因为第一行一般没有数据if not pd.isna(j[col]) and col != 'Unnamed: 0':# 案例中的列名是 姓名(name)格式的 这里作者只取括号内的内容col_name = re.search(r'\(([^)]*)\)', col).group(1)# 下面就是对数据进行处理if col_name == 'needle_type':j[col] = re.search(r'\d+', j[col]).group(0) + 'G'if col_name == 'gram_weight':j[col] = re.search(r'\d+', str(j[col])).group(0)# 以列名作为键 内容作为值存储在row_dict字典row_dict[col_name] = j[col]  # {'name': '张三'}# 每读取好一行就将字典保存到列表data_list.append(row_dict)
print(files_name)
print(data_list)

3.上传到接口

# 遍历所有经过处理的数据
for i in data_list:# 根据已存图片 获取其对应的数据if i['name'] in files_name:with open(os.path.join(images_dir, i['name'] + '.png'), 'rb') as f:# 读取该图片 修改为符合form-data格式的键值对files = {'image': (i['name'] + '.png', f, 'image/png')}# 生成字典数据 不包括图片信息data = {k: v for k, v in i.items() if k != 'product_image'}# 通过post请求发送数据data和图片files到指定urlres = requests.post(url=api_url, cookies=cookies, data=data, files=files)
http://www.lryc.cn/news/416867.html

相关文章:

  • python实现小游戏随机猜数
  • YOLOv5与YOLOv8 训练准备工作(不包含环境搭建)
  • 字节跳动发Seed-TTS语音合成模型,可模仿任意人的声音,效果逼真
  • 微信小程序教程011-3:京西购物商城实战之Home页实现
  • 使用 Manim 创建一个二维坐标平面【NumberPlane】
  • Android.mk(TODO)
  • WPF datagrid 选中某一行后让第一列的checkbox选中
  • 洛谷 P1347 排序(福建省历届夏令营)(图论:拓扑排序)
  • Redis 缓存击穿、穿透、雪崩
  • 使用开源RustDesk部署远程控制服务
  • Coco-LIC基于ubuntu的vscode进行断点调试
  • 【Web】从TFCCTF-FUNNY浅析PHPCGI命令行注入漏洞利用
  • 对比一下在 OpenCV 和 AE 中如何实现常用效果 [精]
  • docker安装及使用
  • HTML前端面试基础(一)
  • [Git][多人协作][下]详细讲解
  • MySQL笔记(七):索引
  • JS 原型和原型链
  • 【无标题】图像增强技术:直方图均衡化、拉普拉斯算子、对数变换与伽马变换
  • 自动化专业英语
  • 如何使用 Python 进行数据可视化,比如绘制折线图?
  • PostgreSQL数据库的事务ID和事务机制
  • LeetCode 热题 HOT 100 (020/100)【宇宙最简单版】[创作中]
  • XML动态sql查询当前时间之前的信息报错
  • EMQX服务器安装MQTT测试
  • 3. 无重复字符的最长子串(滑动窗口)
  • 用javaagent和javassist实现Arthas的watch功能
  • golang 图片转1bit color bmp图片
  • Leetcode75-5 反转字符串的元音字母
  • static关键字在Java中的作用与用法