Draws an image into the background of a spreadsheet.
This was originally a learning project for Apache POI, now rewritten in Python.
For an example output, check demo_sheet.xlsx.
You can run this direct from the container registry with:
docker run -p 9731:9731 ghcr.io/metriccaution/boondoggle:latestThe quickest and easiest way of trying out this project is with Docker Compose, then go to http://localhost:9731/docs:
docker-compose up --buildIf you have uv installed, you can also run:
uv run fastapi run server.pyTo run the server watching source code for changes, run it as:
uv run fastapi dev server.pyThere is also an included tool for converting a directory of images into a single workbook:
uv run cli.py ./path/to/images/ masterpiece.xlsxIn simple terms, an image is read, pixel by pixel and the background colour of a single cell is filled in that colour.
Some image compression is done to make this take a sane amount of time
- Scaling images - Restricting the resolution of an image limits the number of cells which need writing.
- Colour quantisation - Each cell style is an entity within an XLSX file, by restricting the number of colours, and reusing these styles for each colour, write time is (significantly) reduced.