当前位置: 首页 > 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)

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 用Manim计算和可视化某个函数图的微分切割线
  • 网站或者网页Cookie 启用说明
  • 成都云飞浩容文化传媒有限公司共绘电商服务新蓝图
  • Mistral AI:欧洲AI新星的崛起之路
  • 笔记:Java生产环境服务器卡顿排查
  • AppBoot:像 Django 一样使用 FastAPI
  • 记录|如何统一管理多个同一个对象?
  • Apache Kylin 系列入门教程
  • datawind可视化查询-日期函数
  • 基于XxlCrawler的Java执行JS渲染方式实战-以获取商飞C919飞行照片为例
  • 【学习笔记】Day 4 - Day 5
  • Javascript常见算法(二)【学习】
  • 常见中间件漏洞复现之【Jboss】!
  • React18+Vite+Eectron从入门到实战系列之一环境安装篇
  • 为Python添加模块搜索路径
  • CentOS从零开始部署Nodejs项目
  • CSS实用技巧
  • es6要点
  • JavaScript函数式编程(一)
  • MySQL-事务管理(基础)
  • Netty+SpringBoot+FastDFS+Html5实现聊天App(六)
  • windows下使用nginx调试简介
  • 不用申请服务号就可以开发微信支付/支付宝/QQ钱包支付!附:直接可用的代码+demo...
  • 机器学习中为什么要做归一化normalization
  • 精益 React 学习指南 (Lean React)- 1.5 React 与 DOM
  • 实战|智能家居行业移动应用性能分析
  • 移动端唤起键盘时取消position:fixed定位
  • 曜石科技宣布获得千万级天使轮投资,全方面布局电竞产业链 ...
  • ### Error querying database. Cause: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException
  • #VERDI# 关于如何查看FSM状态机的方法
  • $refs 、$nextTic、动态组件、name的使用
  • %check_box% in rails :coditions={:has_many , :through}
  • (C语言)fread与fwrite详解
  • (Redis使用系列) Springboot 使用redis实现接口Api限流 十
  • (博弈 sg入门)kiki's game -- hdu -- 2147
  • (二) 初入MySQL 【数据库管理】
  • (二)JAVA使用POI操作excel
  • (二)Pytorch快速搭建神经网络模型实现气温预测回归(代码+详细注解)
  • (每日持续更新)信息系统项目管理(第四版)(高级项目管理)考试重点整理第3章 信息系统治理(一)
  • (太强大了) - Linux 性能监控、测试、优化工具
  • (转)创业家杂志:UCWEB天使第一步
  • (转)全文检索技术学习(三)——Lucene支持中文分词
  • (自适应手机端)响应式服装服饰外贸企业网站模板
  • .[hudsonL@cock.li].mkp勒索病毒数据怎么处理|数据解密恢复
  • .L0CK3D来袭:如何保护您的数据免受致命攻击
  • .net dataexcel winform控件 更新 日志
  • .net websocket 获取http登录的用户_如何解密浏览器的登录密码?获取浏览器内用户信息?...
  • .net 程序发生了一个不可捕获的异常
  • .Net(C#)自定义WinForm控件之小结篇
  • .NET3.5下用Lambda简化跨线程访问窗体控件,避免繁复的delegate,Invoke(转)
  • .NET是什么
  • .skip() 和 .only() 的使用
  • 。。。。。
  • /使用匿名内部类来复写Handler当中的handlerMessage()方法
  • ??eclipse的安装配置问题!??