【Python】将图片批量插入execl单元格中
import os
from openpyxl import Workbook
from openpyxl.drawing.image import Image
from openpyxl.utils import get_column_letter
def insert_images_to_excel(folder_path, output_excel="images.xlsx", img_width=100, img_height=100):
"""
将文件夹中的图片名和图片插入到Excel中
参数:
folder_path: 图片文件夹路径
output_excel: 输出Excel文件名
img_width: 图片宽度(像素)
img_height: 图片高度(像素)
"""
# 支持的主要图片格式
image_extensions = ['.jpg', '.jpeg', '.png', '.gif', '.bmp', '.tiff', '.webp']
# 创建Excel工作簿
wb = Workbook()
ws = wb.active
ws.title = "图片列表"
# 设置标题
ws['A1'] = "序号"
ws['B1'] = "图片名称"
ws['C1'] = "图片"
# 调整列宽
ws.column_dimensions['A'].width = 10
ws.column_dimensions['B'].width = 30
ws.column_dimensions['C'].width = 20
ws.column_dimensions['D'].width = 20
# 获取文件夹中的所有图片文件
image_files = []
for filename in os.listdir(folder_path):
file_ext = os.path.splitext(filename)[1].lower()
if file_ext in image_extensions:
image_files.append(filename)
if not image_files:
print("未找到图片文件!")
return
print(f"找到 {len(image_files)} 张图片")
# 插入图片和文件名
row = 2 # 从第2行开始(第1行是标题)
for idx, filename in enumerate(sorted(image_files), 1):
# 插入序号
ws[f'A{row}'] = idx
# 插入图片名
ws[f'B{row}'] = filename
# 图片路径
img_path = os.path.join(folder_path, filename)
try:
# 插入图片
img = Image(img_path)
# 调整图片大小
img.width = img_width
img.height = img_height
# 将图片插入到C列
ws.add_image(img, f'C{row}')
# 调整行高以适应图片
ws.row_dimensions[row].height = img_height * 0.75
print(f"已插入: {filename}")
except Exception as e:
print(f"插入图片 {filename} 时出错: {str(e)}")
ws[f'C{row}'] = "插入失败"
row += 1
# 保存Excel文件
wb.save(output_excel)
print(f"\nExcel文件已保存为: {output_excel}")
print(f"共处理 {len(image_files)} 张图片")
if __name__ == "__main__":
# 设置参数
folder_path = input("请输入图片文件夹路径: ").strip()
output_name = r"demo.xlsx"
if not os.path.exists(folder_path):
print("文件夹不存在!")
else:
# 可选:自定义输出文件名和图片大小
# output_name = input("请输入输出Excel文件名(默认为 images.xlsx): ").strip()
# output_name = output_name if output_name else "images.xlsx"
# 调用函数
insert_images_to_excel(
folder_path=folder_path,
output_excel=output_name,
# img_width=120, # 可调整
# img_height=120 # 可调整
)
-------------------------------------------------------------------------------------
如果万事开头难 那请结局一定圆满 @ Phoenixy
-------------------------------------------------------------------------------------
浙公网安备 33010602011771号