Skip to main content

Excel Pixel Art

Convert images to Excel pixel art and back. Each cell becomes a pixel with its background colour matching the original image.

Installation

pip install excel-pixel-art

Or install from source:

git clone https://github.com/luigipascal/excelart.git
cd excelart
pip install -e .

Usage

Convert Image to Excel

image2xlsx photo.png
image2xlsx photo.png -o output.xlsx
image2xlsx photo.png --max-size 150

Options:

  • -o, --output: Output Excel file path (default: <input>_excel.xlsx)
  • --max-size: Maximum dimension in cells (default: 100)

Convert Excel Back to Image

xlsx2image output.xlsx
xlsx2image output.xlsx -o recovered.png
xlsx2image output.xlsx --sheet Sheet1

Options:

  • -o, --output: Output image path (default: <input>_reconstructed.png)
  • --sheet: Worksheet name to use (default: 'Image' if present, else active)
  • --background R,G,B: Background colour for missing cells (default: 0,0,0)
  • --no-autocrop: Disable auto-crop to solid-fill bounds

QA & Verification

# Compare with original for fidelity check
xlsx2image output.xlsx --compare original.png

# Generate visual diff heatmap
xlsx2image output.xlsx --compare original.png --diff-image diff.png

# CI pass/fail with threshold
xlsx2image output.xlsx --compare original.png --diff-threshold 5

Python API

from excel_pixel_art import image_to_excel, excel_to_image, compare_images

# Convert image to Excel
image_to_excel("photo.png", "output.xlsx", max_size=100)

# Convert back
excel_to_image("output.xlsx", "recovered.png")

# Compare for QA
compare_images("photo.png", "recovered.png", diff_output="diff.png", diff_threshold=5)

How It Works

  1. Image → Excel: The image is resized to fit within max_size cells, maintaining aspect ratio. Each pixel becomes a cell with a solid fill colour matching the RGB value.

  2. Excel → Image: Cells with solid fills are read back, extracting their ARGB colour values. Auto-crop detects the actual pixel bounds, ignoring stray formatting.

  3. QA Tools: The fidelity report compares reconstructed images against originals, with optional diff heatmaps and threshold-based pass/fail for CI integration.

Features

  • ARGB colour handling - Proper Excel colour format (no transparency bugs)
  • Fill caching - Fast generation even for images with thousands of unique colours
  • Auto-crop - Ignores stray formatting outside the pixel grid
  • Robust extraction - Handles both fgColor and start_color patterns
  • CI-friendly - Threshold-based pass/fail for automated testing

License

MIT

Metadata

Release files for excel-pixel-art 1.0.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for excel-pixel-art 1.0.0
File Size Uploaded
excel_pixel_art-1.0.0.tar.gz 28.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for excel-pixel-art 1.0.0
File Interpreter ABI Platform
excel_pixel_art-1.0.0-py3-none-any.whl Python 3 none any Details

Total release size: 37.9 kB

Release files / excel_pixel_art-1.0.0.tar.gz

Download URL excel_pixel_art-1.0.0.tar.gz
Size 28.6 kB
Tags Source
SHA-256 checksum
How to use checksums
c0ee16dfc8cd8f18f8073abd92cfa495de426c950ddd835ba8f6b572903d8c6c
BLAKE2b-256 checksum
How to use checksums
c2e7d8f0cf7ff1b6180d39f71d1c7061474d3fd969936c7bc3401e43234f9f04
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Dec 30, 2025.

Transparency log

Release files / excel_pixel_art-1.0.0-py3-none-any.whl

Download URL excel_pixel_art-1.0.0-py3-none-any.whl
Size 9.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
9900461b96362c4896afe40f6316e44bcaf47fea0fb529e5e15512b38466b23d
BLAKE2b-256 checksum
How to use checksums
6b0a97c45c4ff789f83433b50b32cf42104f0ea52fc19ba9771549e92f365a47
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Dec 30, 2025.

Transparency log

Release history Release notifications | RSS feed

This release

1.0.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page