SheetPictureFinder is a pure Python utility for extracting images from Excel .xlsx files — specifically from worksheets and cell addresses. It parses the internal XML structure of Excel files and maps embedded images to their anchor locations.
Project description
📦 SheetPictureFinder
SheetPictureFinder is a pure Python utility for extracting images from Excel .xlsx files — specifically from worksheets and cell addresses. It parses the internal XML structure of Excel files and maps embedded images to their anchor locations.
✨ Features
- ✅ Extract images anchored to specific cells (e.g.,
H2,H3) - ✅ Supports file paths and
io.BytesIOstreams - ✅ Lazy image loading — images loaded only when requested
- ✅ List image-bearing cells by sheet or across workbook
- ✅ Cross-platform temporary file handling
- ✅
cleanup()method for managing resources
📦 Dependency
No need for openpyxl or openpyxl-image-loader. Just have your pillow installed.
pip install pillow
• Python 3.8+
📦 Installation
pip install sheetpicturefinder
🚀 Usage Example
from PIL import Image
from sheetpicturefinder import XLSXPictureFinder # Replace with actual import path
# Load XLSX from file path
finder = XLSXPictureFinder("/Users/ss/Downloads/SampleFile.xlsx")
# 1. List all image cells in 'EXTERIOR' sheet
image_cells = finder.list_image_cells("EXTERIOR")
print("Image cells in 'EXTERIOR':", image_cells)
# 2. Load and display an image at a specific cell
if 'H2' in image_cells:
image = finder.get_image("EXTERIOR", "H2")
if image:
image.show()
else:
print("No image found at EXTERIOR!H2")
else:
print("H2 not in image cells for EXTERIOR")
# 3. List all image-containing cells across all sheets
all_images = finder.list_all_sheet_image_cells()
print("\nAll image cells in workbook:")
for sheet, cells in all_images.items():
print(f" {sheet}: {cells}")
# 4. Clean up temporary files
finder.cleanup()
🧰 API Reference
XLSXPictureFinder(xlsx_source)
• xlsx_source: Path to .xlsx file or io.BytesIO stream
⸻
get_image(sheet_name, cell_address) → PIL.Image or None
Loads and returns the image anchored at cell_address in sheet_name.
⸻
list_image_cells(sheet_name) → List[str]
Returns a list of cell addresses that contain images in the given sheet.
⸻
list_all_sheet_image_cells() → Dict[str, List[str]]
Returns all sheets and their image-bearing cells:
{
'EXTERIOR': ['H2', 'H3'],
'APPLIANCES': ['H4']
}
📘 License
MIT License — free to use, modify, and distribute.
🧠 Author’s Note
This library bypasses heavyweight Excel parsing and directly inspects the underlying structure of .xlsx files. It’s optimized for performance, memory, and flexibility — ideal for image extraction in automation pipelines or reporting tools.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file sheetpicturefinder-1.1.0.tar.gz.
File metadata
- Download URL: sheetpicturefinder-1.1.0.tar.gz
- Upload date:
- Size: 5.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.9.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a0df2b6289913dcc2817680ac3a9cc02e70120434ff4cd01a682a04327769185
|
|
| MD5 |
0d27ccecaa787a634c6c62791e6e77bf
|
|
| BLAKE2b-256 |
76ed84f0e464c281cad40078480abfed10abb0f839edc3be68700d5a9fabf666
|
File details
Details for the file sheetpicturefinder-1.1.0-py3-none-any.whl.
File metadata
- Download URL: sheetpicturefinder-1.1.0-py3-none-any.whl
- Upload date:
- Size: 5.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.9.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e837b2ba7beb2e183c04865b23bba98930e27ea4b2f4475aa3544ef36ff79a8e
|
|
| MD5 |
cc53f55a6590d691ac02f846283c6bdc
|
|
| BLAKE2b-256 |
c2fe1362f95b1731427d494c0368e68c3cd70b29bdc0034a41247f454815f792
|