skillfed

pycel

A library for compiling excel spreadsheets to python code & visualizing them as a graph

pycel v1.0b30 327.0K downloads/30d#7,570 on PyPI31
Copyleft license DORMANT released

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 pycel

uv

uv add pycel

poetry

poetry add pycel

Installing 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

Development Status :: 4 - BetaIntended Audience :: DevelopersLicense :: OSI Approved :: GNU General Public License v3 (GPLv3)Operating System :: OS IndependentProgramming Language :: PythonProgramming Language :: Python :: 3Programming Language :: Python :: 3.6Programming Language :: Python :: 3.7Programming Language :: Python :: 3.8Programming Language :: Python :: 3.9Topic :: Software Development :: Libraries :: Python Modules

Tags

excel to python compilerexcel formula parserspreadsheet code generationexcel automation pythonconvert excel to codeexcel graph visualizationformula evaluation engine
excel-interopformula-evaluationcode-generation

More Python Modules packages