# 简介
自动遍历某文件夹下的图片,根据文件名一一对应插入Excel,每N个换行
# 安装
```shell script
pip install pillow
pip install xlwings
```
遍历文件夹下的图片,根据文件名一一插入Excel,每N个换行.7z
需积分: 0 173 浏览量
更新于2020-09-28
3
收藏 10KB 7Z 举报
在IT行业中,Python语言因其简洁明了的语法和强大的库支持而被广泛应用于各种场景,包括数据处理和分析。在本案例中,我们将探讨如何利用Python的第三方库xlwings来处理Excel文件,特别是如何遍历文件夹中的图片并根据文件名将其插入到Excel中,同时实现每N个图片换行的效果。
`xlwings`是一个功能强大的库,它允许开发者通过Python直接操作Excel,进行读写、公式计算以及图表创建等操作。安装xlwings可以通过pip命令完成:
```
pip install xlwings
```
在使用xlwings之前,需要确保已经安装了Microsoft Office或兼容的Excel应用,因为xlwings是通过COM接口与Excel进行交互的。接下来,我们来看如何实现描述中的功能:
1. **遍历文件夹下的图片**:Python的`os`和`glob`模块可以帮助我们轻松地遍历文件夹。例如,要获取一个文件夹中所有的`.jpg`图片文件名,可以这样写:
```python
import os
import glob
folder_path = '你的图片文件夹路径'
image_files = glob.glob(os.path.join(folder_path, '*.jpg')) + glob.glob(os.path.join(folder_path, '*.png'))
```
这里我们使用了`glob.glob()`函数匹配所有`.jpg`和`.png`文件,并用`os.path.join()`组合路径。
2. **根据文件名插入Excel**:使用xlwings,我们可以创建一个新的Excel工作簿,然后逐行写入图片文件名。创建工作簿:
```python
import xlwings as xw
wb = xw.Book()
sheet = wb.sheets[0]
```
接着,将图片文件名插入到工作表:
```python
row_num = 1 # 表格起始行
for file in image_files:
sheet.range(f'A{row_num}').value = os.path.basename(file)
row_num += 1
```
这里`os.path.basename(file)`用于获取文件的基本名(不包含路径)。
3. **每N个换行**:要在每N个图片后换行,我们可以添加一个计数器并在适当的时候跳过一行:
```python
insert_newline_after = N # 指定每N个图片换行
counter = 1
for file in image_files:
sheet.range(f'A{row_num}').value = os.path.basename(file)
row_num += 1
counter += 1
if counter % insert_newline_after == 0:
row_num += 1 # 插入空行
```
4. **插入图片**:除了插入文件名,xlwings也可以帮助我们插入图片。我们需要将图片转换为BytesIO对象,然后用`xw.Range.insert_images()`方法插入图片:
```python
from io import BytesIO
import PIL.Image
import requests
# 假设我们有一个函数get_image_bytes(file_path),返回图片的BytesIO对象
def get_image_bytes(file_path):
with open(file_path, 'rb') as f:
img = PIL.Image.open(f)
byte_arr = BytesIO()
img.save(byte_arr, format='PNG')
byte_arr = byte_arr.getvalue()
return byte_arr
# 插入图片
for file in image_files:
sheet.range(f'A{row_num}').insert_images([get_image_bytes(file)], top=row_num - 1, left=2)
row_num += 1
```
这个示例假设图片大小一致,如果大小不一,可能需要调整图片大小或位置以适应Excel。
记得保存并关闭工作簿:
```python
wb.save('output.xlsx')
wb.close()
```
通过以上步骤,我们完成了从文件夹中遍历图片、在Excel中按文件名插入图片并每N个图片换行的任务。在实际应用中,你可能需要根据具体需求对代码进行适当的修改和优化。