Bring your Lua and Python functions to Microsoft Excel

xllify is a packaging tool and runtime that allows you to write high-performance functions for Microsoft Excel in Lua and Python.

Write or reuse existing code

Write Lua or Python functions with your favourite editor or IDE

Run xllify

Export your functions into an Excel XLL with a single command

Install

Load your add-in into Excel to start using your functions

$ xllify MyAddin.xll montecarlo.luau finance.py ✓ Built MyAddin.xll (2.4 MB) in 0.6s
Download pre-built demos →
Microsoft Excel for Windows (64-bit) required. Mac support on the way.
No dev dependencies
Use your existing editor and even code! Run the xllify tool to package your Lua or Python functions for Excel. You do not need Visual Studio, a C++ compiler or .NET. xllify has a companion GitHub Action for easy integration with your CI workflows.
Mega fast to build AND run
xllify is written in C++ and embeds Luau, a fast, safe Lua variant. It uses the low-level Excel C SDK with support for multithreaded recalculation (MTR) for maximum performance.
No per seat or developer licences
Your functions are packaged into an .xll file which is yours to distribute and deploy without restriction, forever.

Supported languages

xllify is language agnostic. Currently, Lua and Python are supported.

Lua

xllify embeds a variant of Lua called Luau for safe, close to the metal integration with Excel. Your code is safely sandboxed with no access to the host computer. Luau has very strong numerical performance and is used by millions in Roblox and other well-known games.

  • Your Lua functions are embedded as bytecode and sandboxed (no file system access and users can't easily view your code)
  • Maximum performance (runs at native speeds)
  • Ideal for pure computations and simple async operations
  • True multithreaded recalculation
  • Statistical functions in the xllify standard library, maybe Pandas is overkill for some use cases!
xllify.fn({ name = "xllify.Hello" },
function(name)
    return "Hello, " .. name .. "!"
end)

Python (preview)

Python is the defacto choice for data analysis and machine learning. Python processes run externally and communicate with Excel efficiently through named pipes and shared memory. Repurpose your existing, tried and tested Python code in a few minutes without restriction.

  • Full system access without sandboxing restrictions
  • Use any Python library (pandas, numpy, duckdb, requests...)
  • Ideal for data analysis, machine learning and calling out to APIs
  • Keeping your code private from end-users isn't required
  • Load balancing across multiple processes to make use of multiple cores
@xllify.fn("xllipy.Hello")
def hello(name: str) -> str:
    return f"Hello, {name}!"

Both Lua and Python deliver the performance needed for large, mission-critical workbooks. 5000 calls to Python takes ~40ms and 5000 calls to Lua takes just 8.5ms, on an everyday laptop CPU (AMD Ryzen 5 5500U).
Give it a try →

Performance benchmark showing Lua and Python function calls over 5000 iterations

Why custom functions?

Excel formulas aren't maintainable at scale. They're not reusable and it's easy to create a mess when they're duplicated.

Custom functions allow you to express logic and calculations as code. Rather than grapple a tangled web of nested formulas (good luck debugging that), you write functions in a traditional programming language, and call them the same way you would call Excel's built-in functions like SUM and XLOOKUP

There are several ways to create your own custom functions, but all have their own trade-offs.

How is xllify different?

Built from in-the-trenches experience, witnessing the common pain points developers and analysts face when developing custom functions, xllify aims to be a minimal boring tool whose remit is to:

Your functions get packaged into a single .xll file that's easy to deploy and manage. Licensing is per-XLL, not per-seat. You can distribute each XLL to unlimited users with no ongoing costs, ideal if you are an independent developer shipping a tool, a consultancy developing client solutions, or a business rolling out to thousands of users.

xllify is currently free for all users and will always be free for individuals. Email alex@xllify.com to arrange a demo, or have any questions.