【python】使用python提取excel中的产品型号和对应图片

需求:

同事收到一张excel表格,一列是产品型号,一列是产品图片,长这样:
在这里插入图片描述
同事需要以产品型号名,来建立文件夹,然后把对应图片复制粘贴进去。看到表格有一百多列,同事直接就不想搞了,于是请我帮忙,想着能不能写个脚本自动化操作一下。

思路:

我们可以使用python来遍历这个excel表格,第一列作为文件夹的名字新建文件夹,然后读取图片数据,然后对应文件夹里面,即可。

说干就干:

先下载相关的库文件:

pip install pandas
pip install openpyxl
pip install Pillow

一顿操作猛如虎:

import pandas as pd
import os
from shutil import copyfile

# 读取Excel表格
excel_path = 'abc.xlsx'
df = pd.read_excel(excel_path)

# 新建文件夹
output_folder = 'output'
os.makedirs(output_folder, exist_ok=True)

# 遍历每一行,根据文件名创建子文件夹,并复制图片到子文件夹
for index, row in df.iterrows():
    file_name = row['产品SKU代码']
    image_path = row['图片URL']

    # 创建子文件夹
    subfolder_path = os.path.join(output_folder, file_name)
    os.makedirs(subfolder_path, exist_ok=True)

    # 复制图片到子文件夹
    image_name = os.path.basename(image_path)
    new_image_path = os.path.join(subfolder_path, image_name)
    copyfile(image_path, new_image_path)
    print(index)

print("操作完成,子文件夹已创建并图片已复制。")

信心满满,点击运行:
在这里插入图片描述
报错了,看信息发现,是没有正确拿到图片。仅生成了一个文件夹就戛然而止了,而且是空的:
在这里插入图片描述
仔细研究后发现,是因为我们excel中的图片,并不是以下载路径的形式保存在表格中,而是使用了WPS中的DISPIMG函数,该函数以某种方式,把图片文件在excel文件内部封装保存起来,所以刚才没有读取到文件。
于是我将图片全部选中,转换为浮动图片:
在这里插入图片描述
excel中并不是图片的下载路径,而是直接是图片文件了,所以要改动一下python代码。
two thousand years later:

import pandas as pd
import os
import openpyxl as opx


# 读取Excel表格
excel_path = 'abc.xlsx'
df = pd.read_excel(excel_path)

# 新建文件夹
output_folder = 'output'
os.makedirs(output_folder, exist_ok=True)

# 遍历每一行,根据文件名创建子文件夹,并复制图片到子文件夹
for index, row in df.iterrows():
    file_name = row['产品SKU代码']
    # image_path = row['图片URL']

    # 创建子文件夹
    subfolder_path = os.path.join(output_folder, file_name)
    os.makedirs(subfolder_path, exist_ok=True)


    # print(subfolder_path ,"-->" ,index ,"-->" ,row)
    print(index ,"-->" ,file_name)

    # 复制图片到子文件夹
    wb = opx.load_workbook('abc.xlsx')
    ws = wb.active # 当前工作表
    ws._images[index] # 图片对象
    data = ws._images[index]._data() # 图片的字节数据
    with open(subfolder_path + "/" + "image.png", "wb") as img:
        img.write(data)


print("操作完成,子文件夹已创建并图片已复制。")

然后点击运行:
在这里插入图片描述

运行结果:

运行成功了,打开文件夹看一看,已经生成了若干个文件夹,并且里面有图片文件:
在这里插入图片描述
在这里插入图片描述

至此,成功解决了同事的烦恼。

  • 10
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值