maozhipeng 发表于 2021-3-28 19:54:08

openpyxl函数 导入图片时到原有excel文件时 图片不会按照顺序导入

本帖最后由 maozhipeng 于 2021-3-28 20:38 编辑

    本人刚学习python 想简化平时的工作任务将图片按名称顺序1 2 3 4 ....18导入原有的excel表中

代码如下 出现的问题是 若导入的是已经有的excel 文件 则图片顺序会颠倒,顺序会变成1 10 11...182 3...9      只有导入新表才能按照顺序 求导入旧表按顺序排图片的解决方法

代码如下

import os
import openpyxl
filePath = 'C:\\Users\\clarance\\Desktop\\婚纱照\\70张照片'
name = os.listdir(filePath)
s=len(name)

#创建新的表格存放图片等
wb=openpyxl.Workbook()
ws=wb.active

ws['A1']="文件名称"
ws['B1']="图片位置"


for each in name:
    ws.append(each.split('\n'))

wb.save("123.xlsx")

from openpyxl import load_workbook
import openpyxl
from openpyxl.drawing.image import Image
import os

#将图片插入excel
def insertPic(ws,imgpath):
    images = os.listdir(imgpath)
    x = 0
    for img in images:
      
      
      addimg = Image('./70张照片/'+img)
      addimg.width = 380
      addimg.height = 388
      cell = 'B' + str(2+x)
      ws.add_image(addimg,cell)
      x = x+1
    return x


basepath = r'C:\Users\clarance\Desktop\婚纱照'
imgpath = r'C:\Users\clarance\Desktop\婚纱照\70张照片'
#basepath = input("请输入成果物的文件夹路径: ")
#imgpath = input("请输入保存图片路径: ")
filename = input("请输入case番号:")


#不创建新表格就需要打开久表格
#wb = openpyxl.load_workbook('原有表格名称.xlsx')
#wb = openpyxl.Workbook()
#ws=wb.active

picNum = insertPic(ws,imgpath)

n=70
y=2
while y<n:
    row=ws.row_dimensions
    row.height = 300
    y=y+1

col=ws.column_dimensions['B']
col.width=50
col=ws.column_dimensions['A']
col.width=20


wb.save(filename+'.xlsx')
wb.close()
print(picNum," pictuers insert finished.")

z5560636 发表于 2021-3-28 20:29:44

貌似以前玩EXCEL 的时候,图片的存放顺序就不是按照 表格来排序的。

好像不处理的话,是按照插入的先后顺序。

maozhipeng 发表于 2021-3-28 20:40:54

z5560636 发表于 2021-3-28 20:29
貌似以前玩EXCEL 的时候,图片的存放顺序就不是按照 表格来排序的。

好像不处理的话,是按照插入的先后 ...

如果是写入创建的新表确实是按照顺序 我给图片名称命名就是1到 18
如果写入原有旧表会得到 1 10 11 12...18   2 3 4 5 ....9 这样的图片顺序 很奇怪

z5560636 发表于 2021-3-28 20:53:42

maozhipeng 发表于 2021-3-28 20:40
如果是写入创建的新表确实是按照顺序 我给图片名称命名就是1到 18
如果写入原有旧表会得到 1 10 11...

我记得解决的办法,能获取到图片所在的单元表格,自己添加一下,然后在排序。
页: [1]
查看完整版本: openpyxl函数 导入图片时到原有excel文件时 图片不会按照顺序导入