pycel
A library for compiling excel spreadsheets to python code & visualizing them as a graph
What it is and what it does
Pycel is a Python library that reads an Excel workbook and compiles its formulas into a directed acyclic graph of Python functions, then evaluates that graph to produce results without requiring Excel. It supports common mathematical functions (sin, cos, atan2), operators, ranges, and lookup functions like MIN, MAX, INDEX, and LINEST. The compiled code can be exported and analyzed using graph visualization tools like Gephi.
The library is designed for spreadsheets with hundreds or thousands of formulas where you need reproducible, auditable computation outside Excel. It depends on networkx for graph representation, numpy for numerical operations, openpyxl for reading .xlsx files, python-dateutil for date handling, and ruamel.yaml for configuration. The codebase is intentionally small and relatively fast, though the author notes that truly high-performance use cases might require replacing the graph with sparse-matrix-based dependency tracking.
Use it for:
- Automate recurring spreadsheet calculations in production without Excel licensing or manual re-entry.
- Audit and version-control complex financial or engineering models by converting them to readable Python code.
- Integrate Excel-based business logic into Python data pipelines or web services.
- Visualize formula dependencies and data flow in large spreadsheets using graph export tools.
- Test spreadsheet formulas programmatically by evaluating them in a Python test suite.
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
Pycel translates Excel spreadsheets into executable Python code that runs independently of Excel, using a graph-based computation model with caching and lazy evaluation.
Yes, if you have a stable Excel workbook with supported functions and can accept GPLv3 licensing. The low install friction and graph-based design make it suitable for one-time or occasional spreadsheet compilation. However, maintenance is dormant (last release October 2021), so expect no new function support or bug fixes; verify that your spreadsheet's functions are already implemented before committing to this library. Not recommended for proprietary projects due to copyleft licensing.
Install
pycel on PyPI
pip
pip install pyceluv
uv add pycelpoetry
poetry add pycelInstalling pycel
Before you install
Low install friction with a pure-Python wheel. Maintenance is dormant—last release was 2021-10-13 and no commits since 2024-05-29—so expect limited bug fixes or feature updates going forward.
License in practice
Licensed under GPLv3 (copyleft), which requires any derivative work or distribution to also be open-source under GPLv3; proprietary projects cannot incorporate this code without releasing their modifications.
Quickstart
pip install pycel
from pycel import ExcelCompiler
compiler = ExcelCompiler(filename='spreadsheet.xlsx')
result = compiler.evaluate('Sheet1!A1')
Requires openpyxl to read .xlsx files and networkx, numpy, python-dateutil, ruamel.yaml as runtime dependencies.
Verify before relying
- Whether all Excel functions used in a given spreadsheet are actually supported by the version installed.
- Performance characteristics on spreadsheets larger than the 10,000-formula example mentioned in the description.
- Current compatibility with modern versions of openpyxl and networkx beyond what the changelog documents.
Package facts
| License | not declared (copyleft) |
| Python support | supports the current Python release (>=3.6) |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | 5 — networkx, numpy, openpyxl, python-dateutil, ruamel.yaml |
| Maintenance | dormant — 1,766 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 326,982/month — #7,570 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | 2 — GHSA-pw67-xjhq-389w, PYSEC-2025-177 |
Evidence: pycel-1.0b30-py3-none-any.whl
Keywords: excel, compiler, formula, parser
Tags
More Python Modules packages
Converts domain names between Unicode and…
permissive · top 100 on PyPI
setuptoolsSetuptools is a Python build backend and…
permissive · top 100 on PyPI
PyYAMLPyYAML parses and emits YAML 1.1 data format,…
permissive · top 100 on PyPI
pydanticPydantic validates Python data structures…
permissive · top 100 on PyPI
annotated-typesProvides reusable metadata objects for use with…
permissive · top 100 on PyPI
typing-inspectionProvides runtime tools to inspect and…
permissive · top 100 on PyPI
xlcalculatorReads MS Excel files and translates Excel…
permissive · top 15,000 on PyPI
formulasParses and compiles Excel formulas and…
copyleft · top 5,000 on PyPI
spire-xlsSpire.XLS is a compiled Python library for…
unclear · top 15,000 on PyPI
openpyxlopenpyxl reads and writes Excel 2010…
permissive · top 1,000 on PyPI
aspose-cellsAspose.Cells for Python via Java is a library…
unclear · top 15,000 on PyPI
xlwingsxlwings lets you call Python from Excel and…
permissive · top 5,000 on PyPI
pylightxlReads and writes Microsoft Excel files (.xlsx,…
permissive · top 15,000 on PyPI
excelrdExtracts data from Microsoft Excel spreadsheet…
permissive · top 15,000 on PyPI
aspose-cells-pythonAspose.Cells for Python via .NET creates,…
unclear · top 15,000 on PyPI
xlwtGenerates Microsoft Excel 97–2003 XLS…
permissive · top 5,000 on PyPI