openpyxl在excel中插入多张图片

本文介绍如何使用openpyxl库在Python中将多张图片批量插入到Excel的不同单元格内,并解决仅保存一张图片的问题。作者通过调整代码,在每次插入图片前重新加载图片,实现了批量插入的功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天在写爬虫时,希望将一些图片一并放入excel,但是使用openpyxl操作后,最后的保存结果只剩一张图。经过多次测试,最终发现每次插入图片时需要重新加载一次图片。代码如下:

import os
import openpyxl
from openpyxl.drawing.image import Image
path = os.getcwd()
wb = openpyxl.load_workbook(path+'/start/start.xlsx')   #打开excel
sheet = wb.worksheets[0]    #加载工作簿
for row in sheet.iter_rows():    #遍历每一行
    img = path+'/images/1.jpg'    #每次遍历都重新打开这张图片,以免出错
    sheet.add_image(Image(img),row[0].coordinate)  #添加图片
wb.save(path+'/final/final.xlsx')   #保存

如果需要添加不同的图片,则不能用相同的文件名来命名图片。

要在Excel插入DataFrame类型的值,我们可以使用pandas库将DataFrame转换为一个二维列表,然后使用openpyxl将其插入Excel中。以下是一个示例代码: ```python import pandas as pd from openpyxl import Workbook # 创建一个新的工作簿 wb = Workbook() # 选择活动的工作表 sheet = wb.active # 创建一个示例DataFrame df = pd.DataFrame({ "Name": ["John", "Alice", "Bob"], "Age": [25, 30, 28] }) # 将DataFrame转换为二维列表 data = df.values.tolist() # 定义要插入数据的起始单元格位置 start_row = 2 # 开始行号 start_col = 2 # 开始列号 # 插入数据到指定位置 for row_index, row_data in enumerate(data): for col_index, value in enumerate(row_data): sheet.cell(row=start_row + row_index, column=start_col + col_index, value=value) # 保存工作簿 wb.save("example.xlsx") ``` 在示例代码中,我们首先创建了一个示例的DataFrame对象`df`。然后,使用`df.values.tolist()`将DataFrame转换为一个二维列表`data`。 接下来,我们定义了要插入数据的起始单元格位置,即`start_row`和`start_col`。然后,使用嵌套循环遍历二维列表,并使用`sheet.cell()`方法将数据逐个插入到指定的单元格中。通过将起始行号和列号与循环索引相加,我们可以计算出当前要插入数据的单元格位置。 最后,使用`wb.save()`方法保存工作簿,生成包含插入数据的Excel文件。在这个例子中,DataFrame的值将被插入到从第二行第二列开始的单元格中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值