Skip to main content

Schema-driven Python library for typed Excel import/export workflows with Pydantic and locale-aware workbooks.

Project description

ExcelAlchemy

Schema-driven Python library for typed Excel import/export workflows with Pydantic and locale-aware workbooks.

ExcelAlchemy turns Pydantic models into typed workbook contracts:

  • generate Excel templates from code
  • validate uploaded workbooks
  • map failures back to rows and cells
  • render workbook-facing output in zh-CN or en
  • keep storage pluggable through ExcelStorage

GitHub Repository · Full README · Architecture · Migration Notes

Screenshots

Template

Excel template screenshot

Import Result

Excel import result screenshot

Install

pip install ExcelAlchemy

Optional Minio support:

pip install "ExcelAlchemy[minio]"

Minimal Example

from pydantic import BaseModel

from excelalchemy import ExcelAlchemy, FieldMeta, ImporterConfig, Number, String


class Importer(BaseModel):
    age: Number = FieldMeta(label='Age', order=1)
    name: String = FieldMeta(label='Name', order=2)


alchemy = ExcelAlchemy(ImporterConfig(Importer, locale='en'))
template = alchemy.download_template_artifact(filename='people-template.xlsx')

excel_bytes = template.as_bytes()

Modern Annotated Example

from typing import Annotated

from pydantic import BaseModel, Field

from excelalchemy import Email, ExcelAlchemy, ExcelMeta, ImporterConfig


class Importer(BaseModel):
    email: Annotated[
        Email,
        Field(min_length=10),
        ExcelMeta(label='Email', order=1, hint='Use your work email'),
    ]


alchemy = ExcelAlchemy(ImporterConfig(Importer, locale='en'))
template = alchemy.download_template_artifact(filename='people-template.xlsx')

Why ExcelAlchemy

  • Pydantic v2-based schema extraction and validation
  • locale-aware workbook comments and result workbooks
  • pluggable storage instead of a hard-coded backend
  • openpyxl-based runtime path without pandas
  • contract tests, Ruff, and Pyright in the development workflow

Learn More

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

excelalchemy-2.2.2.tar.gz (54.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

excelalchemy-2.2.2-py3-none-any.whl (82.6 kB view details)

Uploaded Python 3

File details

Details for the file excelalchemy-2.2.2.tar.gz.

File metadata

  • Download URL: excelalchemy-2.2.2.tar.gz
  • Upload date:
  • Size: 54.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for excelalchemy-2.2.2.tar.gz
Algorithm Hash digest
SHA256 fdf728dc465c361a65c494298e1a2649c6b23b05bd69e75d6f1bdd53f8e9c5f5
MD5 8d63d625d331144dd9b5315b1e918ec2
BLAKE2b-256 35a2d4a71f3b4f1729e71202d9494baf97281b534a5de00565b0b36cd9e85e9b

See more details on using hashes here.

Provenance

The following attestation bundles were made for excelalchemy-2.2.2.tar.gz:

Publisher: python-publish.yml on RayCarterLab/ExcelAlchemy

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file excelalchemy-2.2.2-py3-none-any.whl.

File metadata

  • Download URL: excelalchemy-2.2.2-py3-none-any.whl
  • Upload date:
  • Size: 82.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for excelalchemy-2.2.2-py3-none-any.whl
Algorithm Hash digest
SHA256 627bfd27db61f7f949505468c12657f8e97ba692a4640dadc2c4c05ca2b2ed9e
MD5 22ef8b32a15b682ac422b064ed1c35c9
BLAKE2b-256 c32fc15c918c4c13c112f15c8afb739229eebfaa37480340755353c9856cd9a0

See more details on using hashes here.

Provenance

The following attestation bundles were made for excelalchemy-2.2.2-py3-none-any.whl:

Publisher: python-publish.yml on RayCarterLab/ExcelAlchemy

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page