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.

$ xllify MyFunctionsAddin.xll finance.luau trading.py ✓ Built MyFunctionsAddin.xll (2.4 MB) in 0.6s
Download some pre-built demos →
Microsoft Excel for Windows (64-bit) required
No dev dependencies
Use your existing editor or IDE. Run the xllify tool to export your Lua or Python functions. You do not need Visual Studio, a C++ compiler or .NET. xllify has a companion GitHub Action for easy integration with your CI workflows.
High performance
xllify is written in C++ and embeds Luau, a fast Lua variant, using the low-level Excel C SDK with support for multithreaded recalculation (MTR) and shared memory for maximum performance.
Unlimited distribution
Your functions are packaged into an .xll file which is yours to distribute and deploy without restriction, forever. Python dependencies, if used, automatically install into an automatically created virtual environment.

Write code

Create functions in Lua or Python with your favourite editor or IDE

Run xllify

Build your XLL in seconds with a single command

Install

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

Supported languages

Multiple scripting languages are supported for deployment to Microsoft Excel on Windows.

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 code in a few minutes.

  • 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. There are several ways to add custom functions to Excel, each with their own trade-offs.

How is xllify different?

Built from experience witnessing the common pain points developers and analysts face when developing custom functions, xllify is a focused tool with these goals:

Your scripts 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 during beta and will always be free for individuals. Email alex@xllify.com to arrange a demo.