Choosing a language

xllify supports multiple languages for different use cases, with more on the way. You can even mix and match languages in the same add-in.

Luau

Luau is an incredibly easy language to learn, it boasts strong numerical performance and is used in Roblox and other well-known games. It therefore has millions of end users!

With xllify, your Luau code compiles to bytecode and runs directly in Excel's process at near-C speeds with full multithreaded recalculation support.

Despite being dominant for games and web server configuration, Lua(u) it is less widely used than Python in the data space. However, we encourage you to check out Luau as a starting point if your functions can be expressed as pure computations. It is simple and very fast.

Luau features:

  • Code is embedded as bytecode and sandboxed (no file system access, users can't easily view your code)

  • Maximum performance (runs at native speeds)

  • Pure computations and simple async operations

  • True multithreaded recalculation

  • Incredibly fast statistical functions in the xllify standard library, implemented in C++ - maybe Pandas is overkill for some use cases!

Python

Python needs no introduction. It is the defacto choice for data analysis and machine learning. Repurpose your existing, tried and tested code in a few minutes.

Python features:

  • 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

  • High performance communication via named pipes and shared memory

  • Keeping your code private from end-users isn't required

  • Load balancing across multiple processes to make use of multiple cores

Python always runs as an external process so you need to install Python before using xllify.

Why not both?

You can combine Python and Luau in a single XLL:

Example command
xllify MyAddin.xll calculations.luau data_fetch.py --py-entrypoint data_fetch

Our view? Use Luau for pure computations and Python for API calls or data processing.

Last updated