PyXLL was founded by Tony Roberts in 2010 after years of working with Python and Excel in the finance industry. Frustrated with the lack of decent tools to bridge Python and Excel, Tony imagined a way for the two to work together seamlessly.

I remember the first application I developed for a front office team at the hedge fund I was working at. I was really pleased with how it worked and I’d built out a friendly user interface for the traders to use. When I demoed it the first question from one of the traders was “How do I export that to Excel?”.
Wherever I went Excel was there! It became clear to me that tools delivered in Excel were far more valuable than desktop applications or web apps.
Tony Roberts, Founder of PyXLL Ltd
PyXLL is the de-facto standard Excel add-in for Python. Used by thousands of users across all industries, PyXLL is the professional choice for writing Excel add-ins in Python.

2010 saw the first release of PyXLL. While this first release lacked a lot of today’s features of PyXLL, it had support for user defined functions and macros and was available for all Python and Excel versions commonly used at the time.
Python 2.7 was released on July 3rd 2010 and a new version of PyXLL was also made available so our customers could upgrade immediately.
Office 2010 was released and had gained a new feature, asynchronous functions! Support for this new function type was added to PyXLL to allow for better performing worksheet functions.
PyXLL has always supported using your choice of Python distribution rather than requiring any specific version. Version 1.3 improved on this promise and removed some compatibility difficulties with the PortablePython distribution.
The transition from Python 2 to Python 3 was in its infancy back in 2012, as was the 64 bit version of Excel! Neither had achieved wide spread adoption, but PyXLL embraced both to ensure it was ready for the future.
Excel 2013 was released in Jan 2013, with PyXLL already fully compatible!
Backwards compatibility has always been important to us. We understand that upgrading an organization to a new version of Excel, Python or any other package can be tough. Rather than stop support for a version of Excel 10 years old we chose to keep updating PyXLL to ensure compatibility.
Python 3 was starting to gain some traction by the time Python 3.4 was released, and with each new Python release PyXLL added compatibility for the latest version (as well as all previous Python 2 versions).
Excel 2016 and Office 365 arrived in Sept 2015, and of course PyXLL was ready and fully compatible with the new versions. Python 3.5 marked the first really good Python 3 release in the same month and a new PyXLL release was added to be able to support it.
PyXLL 3 was a major release and added many new features. For the first time it was possible to write real time data (RTD) functions entirely in Python and customize the Excel ribbon.
PyXLL has always had great support for array functions, and even had an example showing how to resize the result of an array function. That example was so popular we made auto-resizing arrays a first class feature and added Python 3.6 support.
This release saw the addition of some new functions to manipulate the Excel ribbon from Python. Rather than have a static ribbon tab as most Excel add-ins do, add-ins developed with PyXLL could now modify the ribbon in code!
Real time data has been a killer feature of PyXLL since it was first introduced, but users told us that it was a pain having to recalculate the workbook to start them ticking. We listened and made a change to start RTD functions automatically when loading a workbook.
PyXLL 4 introduced so many new features and made PyXLL even easier to use. Many of the most popular examples such as cached objects and pandas types were made first class features in this PyXLL release. Python 3.7 support was also added.
Microsoft made one of the biggest changes to Excel to date by introducing Dynamic Arrays in Office 365. In December 2018 it was released to their InsiderFast (beta) channel and PyXLL was updated so Python developers could start using this new feature immediately.
A user informed us they were having problems with using PyXLL with Excel 2003 on Windows XP! Our developers soon found the problem and we made a patch release for the customer later the same day.
PyXLL already had support for async functions and RTD (real time data) functions, but using asyncio together with PyXLL was something that each developer was left to implement for themselves. We added asyncio support to PyXLL to eliminate the boiler-plate code required and make developers lives much simpler!
September saw more new features being added to PyXLL. We heard that developers were tired of reloading their add-ins manually, so we added an ‘auto-reload’ feature to watch for file changes! This version also saw better error handling capabilities and Python 3.8 support.
We have helped hundreds of customers integrate Python and Excel, and as part of that deployment is always a consideration. Learning from what had worked for our biggest clients we introduced the PyXLL startup script to make auto-updating deployments simpler and more reliable.
Worksheet functions usually do some calculation and return some values. With PyXLL, those values can be things like pandas DataFrames, and with resizing array formulas it can be a pain to keep having to reformat cells. So, we introduced a way to have functions apply formatting to their results.
PyXLL always keeps up with the latest Python releases, and Python 3.9 was no exception. We had been testing PyXLL with Python 3.9 with users prior to the final release to ensure it was ready to go as soon as Python 3.9 was available. And with retaining support for all other previous versions of Python back to 2.3!
This was a big one! We added support for custom task panes (user interface controls inside Excel), integration with Python plotting libraries, object serialization, a new command line tool, support for setuptools entry points and conditional formatting for pandas DataFrames. There were lots of other new features as well, too many to list here!
Hot on the heels of the PyXLL 5 release, December saw the addition of Jupyter notebooks to Excel using PyXLL. Using the custom task panes added in PyXLL and the setuptools entry points, the companion package pyxll-jupyter embeds Jupyter notebooks into Excel.
PyXLL 5.1.0 added support for the latest versions of the popular Qt UI toolkit, allows PyXLL users to build custom user interfaces using both PyQt6 and PySide6 in Excel.
PyXLL is commonly used to deploy Python functionality to non-Python users in Excel. We heard from our customers that their Excel users would often run Excel for weeks at a time without restarting, and old log files were becoming a problem! PyXLL’s log rolling feature was added to automatically rotate the log files and delete old files.
Another big Python release and of course PyXLL was right there ready to support it as soon as it was released. Beta customers had already had access to the Python 3.10 build of PyXLL months in advance to ensure we were ready!
PyXLL development never stands still. This release added support for displaying animated plots in Excel so now your charts don’t have to stand still either!
PyXLL becomes the first native Excel add-in to work on Excel for ARM CPUs, including M1 based Macs! PyXLL 5.5 also sees the addition of Python 3.11 support.
Builtin support for the polars package, and real time data functions became even simpler to use with generators.
Python 3.12 support, and automatically redraw Python plots when resized in Excel.
PyXLL 5.8.0 adds native support for Excel tables. Previously, creating and accessing tables was possible via the Excel Object Model, but it required a fair bit of code to make it work. We heard from several users that they wanted an easier way to work with tables in Excel, so we built it!
PyXLL 5.9.0 was another milestone for interactive Excel sheets. This release added a new control for displaying interactive, web based, Python charts. Additionally, custom user defined controls can now be written in Python and embedded as ActiveX controls in Excel.
Book a demo session and let us show you what PyXLL can do for you!