import os from PIL import Image from openpyxl import Workbook from openpyxl.drawing.image import Image as ExcelImage # 创建Excel文件 wb = Workbook() ws = wb.active # 设置单元格宽度和高度 ws.column_dimensions['A'].width = 10 ws.row_dimensions[1].height = 100 # 图片文件夹路径 folder_path = r"D:\迅雷下载\新建文件夹\01-柱状图\新建文件夹\新建文件夹\music" # 逐个处理文件夹下的图片文件 for i, filename in enumerate(os.listdir(folder_path)): if filename.endswith(".jpg") or filename.endswith(".png"): # 可以根据需要修改图片格式 image_path = os.path.join(folder_path, filename) # 调整图片大小为单元格大小 img = Image.open(image_path) img.thumbnail((100, 100)) # 修改为单元格大小,这里假设单元格大小为100x100 # 将图片保存到Excel文件中 excel_img = ExcelImage(img) ws.add_image(excel_img, f"A{i + 1}") # 每处理100张图片保存一次Excel文件 if (i + 1) % 100 == 0: wb.save("aaa.xlsx") # 保存最终的Excel文件 wb.save("aaa.xlsx")显示Traceback (most recent call last): File "D:\python+pycharm\venv\rrr.py", line 35, in <module> wb.save("aaa.xlsx") File "C:\Users\78776\AppData\Roaming\Python\Python39\site-packages\openpyxl\workbook\workbook.py", line 386, in save save_workbook(self, filename) File "C:\Users\78776\AppData\Roaming\Python\Python39\site-packages\openpyxl\writer\excel.py", line 294, in save_workbook writer.save() File "C:\Users\78776\AppData\Roaming\Python\Python39\site-packages\openpyxl\writer\excel.py", line 275, in save self.write_data() File "C:\Users\78776\AppData\Roaming\Python\Python39\site-packages\openpyxl\writer\excel.py", line 79, in write_data self._write_images() File "C:\Users\78776\AppData\Roaming\Python\Python39\site-packages\openpyxl\writer\excel.py", line 116, in _write_images self._archive.writestr(img.path[1:], img._data()) File "C:\Users\78776\AppData\Roaming\Python\Python39\site-packages\openpyxl\drawing\image.py", line 51, in _data img.fp.seek(0) AttributeError: 'NoneType' object has no attribute 'seek' Process finished with exit code 1
时间: 2023-07-22 18:08:23 浏览: 355
这个错误通常是由于无法打开或读取某些图片文件导致的。请确保指定文件夹下的所有图片文件都是有效的。
您可以尝试添加一些错误处理机制,以便在遇到无效的图片文件时跳过它们并继续处理其他图片。例如,可以使用`try-except`块来捕获异常并打印出错误信息。修改后的代码如下所示:
```python
import os
from PIL import Image
from openpyxl import Workbook
from openpyxl.drawing.image import Image as ExcelImage
# 创建Excel文件
wb = Workbook()
ws = wb.active
# 设置单元格宽度和高度
ws.column_dimensions['A'].width = 10
ws.row_dimensions[1].height = 100
# 图片文件夹路径
folder_path = r"D:\迅雷下载\新建文件夹\01-柱状图\新建文件夹\新建文件夹\music"
# 逐个处理文件夹下的图片文件
for i, filename in enumerate(os.listdir(folder_path)):
if filename.endswith(".jpg") or filename.endswith(".png"): # 可以根据需要修改图片格式
image_path = os.path.join(folder_path, filename)
try:
# 调整图片大小为单元格大小
img = Image.open(image_path)
img.thumbnail((100, 100)) # 修改为单元格大小,这里假设单元格大小为100x100
# 将图片保存到Excel文件中
excel_img = ExcelImage(img)
ws.add_image(excel_img, f"A{i + 1}")
# 每处理100张图片保存一次Excel文件
if (i + 1) % 100 == 0:
wb.save("aaa.xlsx")
except Exception as e:
print(f"无法处理图片文件 {filename}: {e}")
# 保存最终的Excel文件
wb.save("aaa.xlsx")
```
这样,当遇到无法处理的图片文件时,会打印出错误信息,并继续处理其他图片。您可以根据错误信息进行排查,确认是否有某些图片文件损坏或格式不支持。
希望这次能成功运行!如有其他问题,请随时提问。
阅读全文
相关推荐


















