NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #4878 most downloaded on PyPI
Make Excel fly: Interact with Excel from Python and vice versa.
Last release 7 days ago
27 Sep 2026
Ships fairly regularly
a new release about every 1 weeks
Nearly every release is documented
notes for 60 of the last 60 stable releases
1 version withdrawn
withdrawn after publishing
13 years old
226 releases · first in 2014
Release Notes: https://docs.xlwings.org/en/latest/whatsnew.html
uv, pip, or conda, you can't install from source directly, see https://docs.xlwings.org/en/stable/installation.htmlxlwings.exe is a standalone xlwings command-line client with very limited functionality. It currently works for the xlwings vba and xlwings addin -f commands and saves you from having to install a full Python installation if these are your only use cases.Full Changelog: 0.37.4...0.37.5
One column per quarter.
xlwings Lite: added await PivotTable.get_range and await PivotTable.get_data_body_range .
Added Table.rows and Table.columns to insert, inspect, and delete table rows and columns.
Added RangeRows.hidden and RangeColumns.hidden to read and change row and column visibility.
Added Range.remove_duplicates for native duplicate removal and Range.get_special_cells to select blanks, constants, formulas, or visible cells.
Added Range.find and Range.replace_all for scoped Excel searches and replacements.
Added Range.sort to sort a rectangular range by one or more columns.
Added support for threaded comments via Comment .
Added Range.add_note and Notes collections for cell notes.
macOS: fixed macOS 27 compatibility.
Added Range.get_colors and Range.set_colors for bulk read and writes of cell colors.
Added Sheet.move() to move a worksheet.
xlwings Lite: added await Sheet.get_used_range(values_only=False) to fetch the current formatting-aware used range.
Added Range.autofilter and Table.autofilter to apply value, comparison, and top/bottom filters.
Added Range.data_validation with list, whole-number, decimal, date, time, text-length, and custom-formula validation.
Added Range.conditional_formats for cell-value, formula, color-scale, data-bar, and icon-set rules.
Added primary category and value chart axes with titles, scales, major units, number formats, visibility, see ChartAxis .
Added chart series collection access with series names, marker formatting, line and fill colors, see ChartSeries .
await {meth}PivotTable.get_range <xlwings.PivotTable.get_range> and await {meth}PivotTable.get_data_body_range <xlwings.PivotTable.get_data_body_range>.Table.rows <xlwings.main.Table.rows> and {attr}Table.columns <xlwings.main.Table.columns> to insert, inspect, and delete table rows and columns.RangeRows.hidden <xlwings.RangeRows.hidden> and {attr}RangeColumns.hidden <xlwings.RangeColumns.hidden> to read and change row and column visibility.Range.remove_duplicates <xlwings.Range.remove_duplicates> for native duplicate removal and {meth}Range.get_special_cells <xlwings.Range.get_special_cells> to select blanks, constants, formulas, or visible cells.Range.find <xlwings.Range.find> and {meth}Range.replace_all <xlwings.Range.replace_all> for scoped Excel searches and replacements.Range.sort <xlwings.Range.sort> to sort a rectangular range by one or more columns.Comment <xlwings.main.Comment>.Range.add_note <xlwings.Range.add_note> and {class}Notes <xlwings.main.Notes> collections for cell notes.Range.get_colors <xlwings.Range.get_colors> and {meth}Range.set_colors <xlwings.Range.set_colors> for bulk read and writes of cell colors.Sheet.move() <xlwings.Sheet.move> to move a worksheet.await {meth}Sheet.get_used_range(values_only=False) <xlwings.Sheet.get_used_range> to fetch the current formatting-aware used range.Range.autofilter <xlwings.Range.autofilter> and {attr}Table.autofilter <xlwings.main.Table.autofilter> to apply value, comparison, and top/bottom filters.Range.data_validation <xlwings.Range.data_validation> with list, whole-number, decimal, date, time, text-length, and custom-formula validation.Range.conditional_formats <xlwings.Range.conditional_formats> for cell-value, formula, color-scale, data-bar, and icon-set rules.ChartAxis <xlwings.main.ChartAxis>.ChartSeries <xlwings.main.ChartSeries>.Release Notes: https://docs.xlwings.org/en/latest/whatsnew.html
uv, pip, or conda, you can't install from source directly, see https://docs.xlwings.org/en/stable/installation.htmlxlwings.exe is a standalone xlwings command-line client with very limited functionality. It currently works for the xlwings vba and xlwings addin -f commands and saves you from having to install a full Python installation if these are your only use cases.Full Changelog: 0.37.3...0.37.4
Added Chart.set_x_axis_values() and create new charts with Excel’s default chart type.
Release Notes: https://docs.xlwings.org/en/latest/whatsnew.html
uv, pip, or conda, you can't install from source directly, see https://docs.xlwings.org/en/stable/installation.htmlxlwings.exe is a standalone xlwings command-line client with very limited functionality. It currently works for the xlwings vba and xlwings addin -f commands and saves you from having to install a full Python installation if these are your only use cases.Full Changelog: 0.37.2...0.37.3
Added support for PivotTables, see PivotTable .
Added Range.horizontal_alignment and Range.vertical_alignment to read and set cell alignment, see Range.horizontal_alignment and Range.vertical_alignment .
Added Sheet.show_gridlines to read and toggle the display of gridlines on a sheet, see Sheet.show_gridlines .
Added Chart.title , Chart.legend (see ChartLegend ), Chart.plot_by , Chart.style and a plot_by argument for Chart.set_source_data() , see Charts.add .
Large range reads and writes are now chunked automatically, see chunksize .
xlwings Lite: xlwings Reader is now available on Pyodide >= 314.0.0 via a pyemscripten wheel.
xlwings Reader: added support for Sheet.used_range .
PivotTable <xlwings.PivotTable>.Range.horizontal_alignment and Range.vertical_alignment to read and set cell alignment, see {attr}Range.horizontal_alignment <xlwings.Range.horizontal_alignment> and {attr}Range.vertical_alignment <xlwings.Range.vertical_alignment>.Sheet.show_gridlines to read and toggle the display of gridlines on a sheet, see {attr}Sheet.show_gridlines <xlwings.Sheet.show_gridlines>.Chart.title, Chart.legend (see {class}ChartLegend <xlwings.main.ChartLegend>), Chart.plot_by, Chart.style and a plot_by argument for Chart.set_source_data(), see {meth}Charts.add <xlwings.main.Charts.add>.pyemscripten wheel.Sheet.used_range.Release Notes: https://docs.xlwings.org/en/latest/whatsnew.html
uv, pip, or conda, you can't install from source directly, see https://docs.xlwings.org/en/stable/installation.htmlxlwings.exe is a standalone xlwings command-line client with very limited functionality. It currently works for the xlwings vba and xlwings addin -f commands and saves you from having to install a full Python installation if these are your only use cases.Full Changelog: 0.37.1...0.37.2
xlwings Lite and xlwings Server: Added support for named formulas, including Excel LAMBDA functions.
xlwings Lite and xlwings Server: Name.refers_to now returns the original definition (for example, =OFFSET(...) ) instead of its resolved address. Use Name.refers_to_range for the resolved range.
Excel-generated _xlfn.* and _xlpm.* names are now excluded from name collections.
macOS: Fixed some issues with name indexing and iteration.
Release Notes: https://docs.xlwings.org/en/latest/whatsnew.html
uv, pip, or conda, you can't install from source directly, see https://docs.xlwings.org/en/stable/installation.htmlxlwings.exe is a standalone xlwings command-line client with very limited functionality. It currently works for the xlwings vba and xlwings addin -f commands and saves you from having to install a full Python installation if these are your only use cases.Full Changelog: 0.37.0...0.37.1
Added Range.borders for reading and writing cell borders, see Borders and Border .
Dropped support for Python 3.10.
Range.borders for reading and writing cell borders, see {class}Borders <xlwings.main.Borders> and {class}Border <xlwings.main.Border>.Release Notes: https://docs.xlwings.org/en/latest/whatsnew.html
uv, pip, or conda, you can't install from source directly, see https://docs.xlwings.org/en/stable/installation.htmlxlwings.exe is a standalone xlwings command-line client with very limited functionality. It currently works for the xlwings vba and xlwings addin -f commands and saves you from having to install a full Python installation if these are your only use cases.Full Changelog: 0.36.17...0.37.0
xlwings Lite and xlwings Server: Complete API coverage as far as possible. Reading properties usually requires the async API (e.g. await myrange.get_formula() ), which is currently only available in xlwings Lite.
Release Notes: https://docs.xlwings.org/en/latest/whatsnew.html
uv, pip, or conda, you can't install from source directly, see https://docs.xlwings.org/en/stable/installation.htmlxlwings.exe is a standalone xlwings command-line client with very limited functionality. It currently works for the xlwings vba and xlwings addin -f commands and saves you from having to install a full Python installation if these are your only use cases.Full Changelog: 0.36.16...0.36.17
xlwings Lite and xlwings Server: custom functions can now access the calling cell by adding an argument with the xw.Caller type hint, which provides the address, row/column and sheet/book name of the cell that called the function.
xlwings Lite: added support for xw.WithScript .
Release Notes: https://docs.xlwings.org/en/latest/whatsnew.html
uv, pip, or conda, you can't install from source directly, see https://docs.xlwings.org/en/stable/installation.htmlxlwings.exe is a standalone xlwings command-line client with very limited functionality. It currently works for the xlwings vba and xlwings addin -f commands and saves you from having to install a full Python installation if these are your only use cases.Full Changelog: 0.36.15...0.36.16
xlwings Server: Removed unnecessary arguments in xw.WithScript .
Release Notes: https://docs.xlwings.org/en/latest/whatsnew.html
uv, pip, or conda, you can't install from source directly, see https://docs.xlwings.org/en/stable/installation.htmlxlwings.exe is a standalone xlwings command-line client with very limited functionality. It currently works for the xlwings vba and xlwings addin -f commands and saves you from having to install a full Python installation if these are your only use cases.Full Changelog: 0.36.14...0.36.15
xlwings Server: Added xw.WithScript to run a custom script after a custom function returns.
Release Notes: https://docs.xlwings.org/en/latest/whatsnew.html
uv, pip, or conda, you can't install from source directly, see https://docs.xlwings.org/en/stable/installation.htmlxlwings.exe is a standalone xlwings command-line client with very limited functionality. It currently works for the xlwings vba and xlwings addin -f commands and saves you from having to install a full Python installation if these are your only use cases.Full Changelog: 0.36.13...0.36.14
xlwings Lite and xlwings Server: functions now accept the framework-provided type hinted args ( CurrentUser , xw.Book , and xw.BookAsync ) in any position.
Release Notes: https://docs.xlwings.org/en/latest/whatsnew.html
uv, pip, or conda, you can't install from source directly, see https://docs.xlwings.org/en/stable/installation.htmlxlwings.exe is a standalone xlwings command-line client with very limited functionality. It currently works for the xlwings vba and xlwings addin -f commands and saves you from having to install a full Python installation if these are your only use cases.Full Changelog: 0.36.12...0.36.13
xlwings Lite and xlwings Server: custom-function namespaces can now be set for an entire Python module via xlwings_func_namespace = "namespace" .
Release Notes: https://docs.xlwings.org/en/latest/whatsnew.html
uv, pip, or conda, you can't install from source directly, see https://docs.xlwings.org/en/stable/installation.htmlxlwings.exe is a standalone xlwings command-line client with very limited functionality. It currently works for the xlwings vba and xlwings addin -f commands and saves you from having to install a full Python installation if these are your only use cases.@func by @fzumstein in #2725Full Changelog: 0.36.11...0.36.12
xlwings Lite and xlwings Server: you can now set the name of a custom functions to be different from the Python function name via @func(name="myName") .
Release Notes: https://docs.xlwings.org/en/latest/whatsnew.html
uv, pip, or conda, you can't install from source directly, see https://docs.xlwings.org/en/stable/installation.htmlxlwings.exe is a standalone xlwings command-line client with very limited functionality. It currently works for the xlwings vba and xlwings addin -f commands and saves you from having to install a full Python installation if these are your only use cases.Full Changelog: 0.36.10...0.36.11
xlwings Lite and xlwings Server: script arguments hinted as datetime.date or datetime.datetime are now converted into date / datetime objects instead of ISO-formatted strings.
Fix false positives with Pyright/Pylance (reportPrivateImportUsage).
Release Notes: https://docs.xlwings.org/en/latest/whatsnew.html
uv, pip, or conda, you can't install from source directly, see https://docs.xlwings.org/en/stable/installation.htmlxlwings.exe is a standalone xlwings command-line client with very limited functionality. It currently works for the xlwings vba and xlwings addin -f commands and saves you from having to install a full Python installation if these are your only use cases.Full Changelog: 0.36.9...0.36.10
xlwings Lite: on async books, book.load() and sheet.load() now load metadata only (tables, pictures, names). Pass values=True to also load cell values.
Release Notes: https://docs.xlwings.org/en/latest/whatsnew.html
uv, pip, or conda, you can't install from source directly, see https://docs.xlwings.org/en/stable/installation.htmlxlwings.exe is a standalone xlwings command-line client with very limited functionality. It currently works for the xlwings vba and xlwings addin -f commands and saves you from having to install a full Python installation if these are your only use cases.Full Changelog: 0.36.8...0.36.9
Release Notes: https://docs.xlwings.org/en/latest/whatsnew.html
uv, pip, or conda, you can't install from source directly, see https://docs.xlwings.org/en/stable/installation.htmlxlwings.exe is a standalone xlwings command-line client with very limited functionality. It currently works for the xlwings vba and xlwings addin -f commands and saves you from having to install a full Python installation if these are your only use cases.Full Changelog: 0.36.7...0.36.8
xlwings Server and xlwings Lite: converters can now define an async write stage.
Release Notes: https://docs.xlwings.org/en/latest/whatsnew.html
uv, pip, or conda, you can't install from source directly, see https://docs.xlwings.org/en/stable/installation.htmlxlwings.exe is a standalone xlwings command-line client with very limited functionality. It currently works for the xlwings vba and xlwings addin -f commands and saves you from having to install a full Python installation if these are your only use cases.Full Changelog: https://github.com/xlwings/xlwings/compare/0.36.6...0.36.7
xlwings Lite: fix empty values in custom functions (showed jsnull instead of None with Pyodide 314.0.0).
Release Notes: https://docs.xlwings.org/en/latest/whatsnew.html
uv, pip, or conda, you can't install from source directly, see https://docs.xlwings.org/en/stable/installation.htmlxlwings.exe is a standalone xlwings command-line client with very limited functionality. It currently works for the xlwings vba and xlwings addin -f commands and saves you from having to install a full Python installation if these are your only use cases.Full Changelog: https://github.com/xlwings/xlwings/compare/0.36.5...0.36.6
xlwings Lite: fix support for Pyodide 314.0.0
xlwings Lite & xlwings Server: resume streaming functions after a full spreadsheet recalc.
xlwings Lite & xlwings Server: fix custom functions with multiple object handle calls as arguments.
Release Notes: https://docs.xlwings.org/en/latest/whatsnew.html
uv, pip, or conda, you can't install from source directly, see https://docs.xlwings.org/en/stable/installation.htmlxlwings.exe is a standalone xlwings command-line client with very limited functionality. It currently works for the xlwings vba and xlwings addin -f commands and saves you from having to install a full Python installation if these are your only use cases.Full Changelog: https://github.com/xlwings/xlwings/compare/0.36.4...0.36.5
xlwings Server and xlwings Lite: fix memory leak with object handles during recalculation.
Release Notes: https://docs.xlwings.org/en/latest/whatsnew.html
uv, pip, or conda, you can't install from source directly, see https://docs.xlwings.org/en/stable/installation.htmlxlwings.exe is a standalone xlwings command-line client with very limited functionality. It currently works for the xlwings vba and xlwings addin -f commands and saves you from having to install a full Python installation if these are your only use cases.Full Changelog: https://github.com/xlwings/xlwings/compare/0.36.3...0.36.4
xlwings Server: Introduced CachedObject for type hint support of cached function args.
Release Notes: https://docs.xlwings.org/en/latest/whatsnew.html
uv, pip, or conda, you can't install from source directly, see https://docs.xlwings.org/en/stable/installation.htmlxlwings.exe is a standalone xlwings command-line client with very limited functionality. It currently works for the xlwings vba and xlwings addin -f commands and saves you from having to install a full Python installation if these are your only use cases.Full Changelog: https://github.com/xlwings/xlwings/compare/0.36.2...0.36.3
Release Notes: https://docs.xlwings.org/en/latest/whatsnew.html
uv, pip, or conda, you can't install from source directly, see https://docs.xlwings.org/en/stable/installation.htmlxlwings.exe is a standalone xlwings command-line client with very limited functionality. It currently works for the xlwings vba and xlwings addin -f commands and saves you from having to install a full Python installation if these are your only use cases.@script to accept arbitrary arguments by @fzumstein in https://github.com/xlwings/xlwings/pull/2705Full Changelog: https://github.com/xlwings/xlwings/compare/0.36.1...0.36.2
xlwings Server: Allow @script to accept arbitrary arguments.
Release Notes: https://docs.xlwings.org/en/latest/whatsnew.html
uv, pip, or conda, you can't install from source directly, see https://docs.xlwings.org/en/stable/installation.htmlxlwings.exe is a standalone xlwings command-line client with very limited functionality. It currently works for the xlwings vba and xlwings addin -f commands and saves you from having to install a full Python installation if these are your only use cases.Enhancement xlwings Lite: Added support for streaming functions ( GH 2703 ).
Enhancement xlwings Lite: Added support for streaming functions ({issue}2703).Release Notes: https://docs.xlwings.org/en/latest/whatsnew.html
uv, pip, or conda, you can't install from source directly, see https://docs.xlwings.org/en/stable/installation.htmlxlwings.exe is a standalone xlwings command-line client with very limited functionality. It currently works for the xlwings vba and xlwings addin -f commands and saves you from having to install a full Python installation if these are your only use cases.Enhancement xlwings Server: Streaming functions are now more robust ( GH 2702 ).
Enhancement All documentation and doc strings are now written in Markdown instead of reStructuredText.
Enhancement xlwings Server: Streaming functions are now more robust ({issue}2702).Enhancement All documentation and doc strings are now written in Markdown instead of reStructuredText.Release Notes: https://docs.xlwings.org/en/latest/whatsnew.html
uv, pip, or conda, you can't install from source directly, see https://docs.xlwings.org/en/stable/installation.htmlxlwings.exe is a standalone xlwings command-line client with very limited functionality. It currently works for the xlwings vba and xlwings addin -f commands and saves you from having to install a full Python installation if these are your only use cases.Enhancement xlwings Server and xlwings Lite: Support typing.Literal for custom functions args (“enums”) to show a dropdown in Excel formulas ( GH 2695 ).
Bug Fix xlwings Server and xlwings Lite: Fix type hints for @script decorator’s include/exclude args ( GH 2696 ).
Enhancement xlwings Server and xlwings Lite: Support typing.Literal for custom functions args ("enums") to show a dropdown in Excel formulas ({issue}2695).Bug Fix xlwings Server and xlwings Lite: Fix type hints for @script decorator's include/exclude args ({issue}2696).Release Notes: https://docs.xlwings.org/en/latest/whatsnew.html
uv, pip, or conda, you can't install from source directly, see https://docs.xlwings.org/en/stable/installation.htmlxlwings.exe is a standalone xlwings command-line client with very limited functionality. It currently works for the xlwings vba and xlwings addin -f commands and saves you from having to install a full Python installation if these are your only use cases.Bug Fix Fix type hints when calling decorated functions in Python ( GH 2694 ).
Bug Fix Fix type hints when calling decorated functions in Python ({issue}2694).Release Notes: https://docs.xlwings.org/en/latest/whatsnew.html
uv, pip, or conda, you can't install from source directly, see https://docs.xlwings.org/en/stable/installation.htmlxlwings.exe is a standalone xlwings command-line client with very limited functionality. It currently works for the xlwings vba and xlwings addin -f commands and saves you from having to install a full Python installation if these are your only use cases.Bug Fix Fixed an issue with xlwings Lite on newer versions of Pyodide ( GH 2690 ).
Bug Fix Fixed an issue with xlwings Lite on newer versions of Pyodide ({issue}2690).Release Notes: https://docs.xlwings.org/en/latest/whatsnew.html
uv, pip, or conda, you can't install from source directly, see https://docs.xlwings.org/en/stable/installation.htmlxlwings.exe is a standalone xlwings command-line client with very limited functionality. It currently works for the xlwings vba and xlwings addin -f commands and saves you from having to install a full Python installation if these are your only use cases.Enhancement xlwings Lite: Renamed await Book.sync() to await Book.flush() . Book.sync() is now deprecated.
Enhancement xlwings Lite: Added an async API to be able to load data from Excel on demand: await Books.get_active() , await Sheets.get_active() , await App.get_selection() , await Book.get_selection() , await Range.get_value() . Also added on-demand loading methods: await Book.load() , await Sheet.load() . For more details, see the xlwings Lite Async API docs ( GH 2686 ).
Bug Fix Fix SQL formula for 1 column tables ( GH 2687 ).
Bug Fix Fix type hints for collections ( GH 2688 ).
Enhancement Improve reliability for UDFs with async_mode="threading" ( GH 2682 ).
Enhancement xlwings Lite: Renamed await Book.sync() to await Book.flush(). Book.sync() is now deprecated.Enhancement xlwings Lite: Added an async API to be able to load data from Excel on demand: await Books.get_active(), await Sheets.get_active(), await App.get_selection(), await Book.get_selection(), await Range.get_value(). Also added on-demand loading methods: await Book.load(), await Sheet.load(). For more details, see the xlwings Lite Async API docs ({issue}2686).Bug Fix Fix SQL formula for 1 column tables ({issue}2687).Bug Fix Fix type hints for collections ({issue}2688).Enhancement Improve reliability for UDFs with async_mode="threading" ({issue}2682).Release Notes: https://docs.xlwings.org/en/latest/whatsnew.html
uv, pip, or conda, you can't install from source directly, see https://docs.xlwings.org/en/stable/installation.htmlxlwings.exe is a standalone xlwings command-line client with very limited functionality. It currently works for the xlwings vba and xlwings addin -f commands and saves you from having to install a full Python installation if these are your only use cases.Enhancement The public API is now fully type-hinted! This allows for better autocomplete and inline documentation in IDEs ( GH 2685 ).
Release Notes: https://docs.xlwings.org/en/latest/whatsnew.html
uv, pip, or conda, you can't install from source directly, see https://docs.xlwings.org/en/stable/installation.htmlxlwings.exe is a standalone xlwings command-line client with very limited functionality. It currently works for the xlwings vba and xlwings addin -f commands and saves you from having to install a full Python installation if these are your only use cases.Enhancement Added Range.to_png() and await Book.sync() for xlwings Lite ( GH 2684 ).
Enhancement Added Range.to_png() and await Book.sync() for xlwings Lite ({issue}2684).Release Notes: https://docs.xlwings.org/en/latest/whatsnew.html
uv, pip, or conda, you can't install from source directly, see https://docs.xlwings.org/en/stable/installation.htmlxlwings.exe is a standalone xlwings command-line client with very limited functionality. It currently works for the xlwings vba and xlwings addin -f commands and saves you from having to install a full Python installation if these are your only use cases.Enhancement Added name argument to @script decorator for use by xlwings Lite ( GH 2677 ).
Enhancement Added name argument to @script decorator for use by xlwings Lite ({issue}2677).Release Notes: https://docs.xlwings.org/en/latest/whatsnew.html
uv, pip, or conda, you can't install from source directly, see https://docs.xlwings.org/en/stable/installation.htmlxlwings.exe is a standalone xlwings command-line client with very limited functionality. It currently works for the xlwings vba and xlwings addin -f commands and saves you from having to install a full Python installation if these are your only use cases.Enhancement PRO Allow to use top-level decorator imports on xlwings Server even if pywin32 is installed ( GH 2669 ).
Enhancement {bdg-secondary}PRO Allow to use top-level decorator imports on xlwings Server even if pywin32 is installed ({issue}2669).Release Notes: https://docs.xlwings.org/en/latest/whatsnew.html
uv, pip, or conda, you can't install from source directly, see https://docs.xlwings.org/en/stable/installation.htmlxlwings.exe is a standalone xlwings command-line client with very limited functionality. It currently works for the xlwings vba and xlwings addin -f commands and saves you from having to install a full Python installation if these are your only use cases.Enhancement Improved the "json" converter by stripping off markdown formatting, which is common with LLM responses ( GH 2663 ).
Enhancement Added support for ndim="natural" . The key difference with the default behavior is that vertical Excel ranges, i.e., columns, preserve their orientation ( [[1], [2]] , instead of [1, 2] ), see ndim .
Release Notes: https://docs.xlwings.org/en/latest/whatsnew.html
uv, pip, or conda, you can't install from source directly, see https://docs.xlwings.org/en/stable/installation.htmlxlwings.exe is a standalone xlwings command-line client with very limited functionality. It currently works for the xlwings vba and xlwings addin -f commands and saves you from having to install a full Python installation if these are your only use cases.Enhancement Added new json converter to read and write values as JSON-formatted strings ( GH 2657 ).
Enhancement Added new json converter to read and write values as JSON-formatted strings ({issue}2657).Release Notes: https://docs.xlwings.org/en/latest/whatsnew.html
uv, pip, or conda, you can't install from source directly, see https://docs.xlwings.org/en/stable/installation.htmlxlwings.exe is a standalone xlwings command-line client with very limited functionality. It currently works for the xlwings vba and xlwings addin -f commands and saves you from having to install a full Python installation if these are your only use cases.Enhancement Added a new tuple converter to turn values into tuple of tuples instead of list of lists ( GH 2648 ).
Enhancement Better support for non-default locations of Conda envs ( GH 2656 ).
Breaking Change The @sub decorator is now called @script to be in line with xlwings Lite. @sub is deprecated ( GH 2646 ).
Enhancement Added a new tuple converter to turn values into tuple of tuples instead of list of lists ({issue}2648).Enhancement Better support for non-default locations of Conda envs ({issue}2656).Breaking Change The @sub decorator is now called @script to be in line with xlwings Lite. @sub is deprecated ({issue}2646).Release Notes: https://docs.xlwings.org/en/latest/whatsnew.html
uv, pip, or conda, you can't install from source directly, see https://docs.xlwings.org/en/stable/installation.htmlxlwings.exe is a standalone xlwings command-line client with very limited functionality. It currently works for the xlwings vba and xlwings addin -f commands and saves you from having to install a full Python installation if these are your only use cases.Enhancement Added support for Python 3.14 ( GH 2643 ).
Enhancement xlwings CLI now has a --version / -v argument ( GH 2644 ).
Bug Fix Fix xw.App() on macOS so that commands like xw.view() work even if Excel isn’t running yet ( GH 2642 ).
Enhancement Added support for Python 3.14 ({issue}2643).Enhancement xlwings CLI now has a --version / -v argument ({issue}2644).Bug Fix Fix xw.App() on macOS so that commands like xw.view() work even if Excel isn't running yet ({issue}2642).Release Notes: https://docs.xlwings.org/en/latest/whatsnew.html
uv, pip, or conda, you can't install from source directly, see https://docs.xlwings.org/en/stable/installation.htmlxlwings.exe is a standalone xlwings command-line client with very limited functionality. It currently works for the xlwings vba and xlwings addin -f commands and saves you from having to install a full Python installation if these are your only use cases.Bug Fix Fixed a regression introduced with 0.33.12, which wouldn’t accept hex colors anymore with Range.font.color ( GH 2615 ).
Release Notes: https://docs.xlwings.org/en/latest/whatsnew.html
pip or conda package manager, you can't install from source directly, see https://docs.xlwings.org/en/stable/installation.htmlxlwings.exe is a standalone xlwings command-line client with very limited functionality. It currently works for the xlwings vba, xlwings addin -f, and xlwings auth commands and saves you from having to install a full Python installation if these are your only use cases.Enhancement PRO xlwings Server: enhanced script decorator, see https://server.xlwings.org .
Enhancement {bdg-secondary}PRO xlwings Server: enhanced script decorator, see https://server.xlwings.org.Release Notes: https://docs.xlwings.org/en/latest/whatsnew.html
pip or conda package manager, you can't install from source directly, see https://docs.xlwings.org/en/stable/installation.htmlxlwings.exe is a standalone xlwings command-line client with very limited functionality. It currently works for the xlwings vba, xlwings addin -f, and xlwings auth commands and saves you from having to install a full Python installation if these are your only use cases.This is a maintenance release with no features or bug fixes.
Release Notes: https://docs.xlwings.org/en/latest/whatsnew.html
pip or conda package manager, you can't install from source directly, see https://docs.xlwings.org/en/stable/installation.htmlxlwings.exe is a standalone xlwings command-line client with very limited functionality. It currently works for the xlwings vba, xlwings addin -f, and xlwings auth commands and saves you from having to install a full Python installation if these are your only use cases.Enhancement Added a Polars DataFrame and Series converter, see Polars DataFrame and Series converters ( GH 2602 ).
Enhancement Added a Polars DataFrame and Series converter, see Polars DataFrame and Series converters ({issue}2602).Release Notes: https://docs.xlwings.org/en/latest/whatsnew.html
pip or conda package manager, you can't install from source directly, see https://docs.xlwings.org/en/stable/installation.htmlxlwings.exe is a standalone xlwings command-line client with very limited functionality. It currently works for the xlwings vba, xlwings addin -f, and xlwings auth commands and saves you from having to install a full Python installation if these are your only use cases.This is a maintenance release with no features or bug fixes.
Release Notes: https://docs.xlwings.org/en/latest/whatsnew.html
pip or conda package manager, you can't install from source directly, see https://docs.xlwings.org/en/stable/installation.htmlxlwings.exe is a standalone xlwings command-line client with very limited functionality. It currently works for the xlwings vba, xlwings addin -f, and xlwings auth commands and saves you from having to install a full Python installation if these are your only use cases.Enhancement PRO xlwings Server: Added Range.copy_from ( GH 2590 ).
Bug Fix PRO xlwings Server: Fixed Sheets.add() ( GH 2589 ).
Enhancement {bdg-secondary}PRO xlwings Server: Added Range.copy_from ({issue}2590).Bug Fix {bdg-secondary}PRO xlwings Server: Fixed Sheets.add() ({issue}2589).Release Notes: https://docs.xlwings.org/en/latest/whatsnew.html
pip or conda package manager, you can't install from source directly, see https://docs.xlwings.org/en/stable/installation.htmlxlwings.exe is a standalone xlwings command-line client with very limited functionality. It currently works for the xlwings vba, xlwings addin -f, and xlwings auth commands and saves you from having to install a full Python installation if these are your only use cases.Enhancement PRO The script , func , arg , and ret decorators can now also be imported directly from xlwings instead of xlwings.server except if you are on Windows and have pywin32 installed ( GH 2579 ).
Enhancement {bdg-secondary}PRO The script, func, arg, and ret decorators can now also be imported directly from xlwings instead of xlwings.server except if you are on Windows and have pywin32 installed ({issue}2579).Release Notes: https://docs.xlwings.org/en/latest/whatsnew.html
pip or conda package manager, you can't install from source directly, see https://docs.xlwings.org/en/stable/installation.htmlxlwings.exe is a standalone xlwings command-line client with very limited functionality. It currently works for the xlwings vba, xlwings addin -f, and xlwings auth commands and saves you from having to install a full Python installation if these are your only use cases.Release Notes: https://docs.xlwings.org/en/latest/whatsnew.html
pip or conda package manager, you can't install from source directly, see https://docs.xlwings.org/en/stable/installation.htmlxlwings.exe is a standalone xlwings command-line client with very limited functionality. It currently works for the xlwings vba, xlwings addin -f, and xlwings auth commands and saves you from having to install a full Python installation if these are your only use cases.Bug Fix Datetime type hints in UDFs were causing an issue ( GH 2571 ).
Bug Fix PRO xlwings Server: Fixed NumPy and pandas datetime conversion issues ( GH 2572 ).
Bug Fix Datetime type hints in UDFs were causing an issue ({issue}2571).Bug Fix {bdg-secondary}PRO xlwings Server: Fixed NumPy and pandas datetime conversion issues ({issue}2572).Release Notes: https://docs.xlwings.org/en/latest/whatsnew.html
pip or conda package manager, you can't install from source directly, see https://docs.xlwings.org/en/stable/installation.htmlxlwings.exe is a standalone xlwings command-line client with very limited functionality. It currently works for the xlwings vba, xlwings addin -f, and xlwings auth commands and saves you from having to install a full Python installation if these are your only use cases.Bug Fix PRO xlwings Server: datetime fixes both with custom scripts (day and month were misinterpreted with certain locales) and custom functions (the formatting of dates in custom functions now respects the specific format chosen on the system) ( GH 2566 ).
Bug Fix {bdg-secondary}PRO xlwings Server: datetime fixes both with custom scripts (day and month were misinterpreted with certain locales) and custom functions (the formatting of dates in custom functions now respects the specific format chosen on the system) ({issue}2566).Release Notes: https://docs.xlwings.org/en/latest/whatsnew.html
pip or conda package manager, you can't install from source directly, see https://docs.xlwings.org/en/stable/installation.htmlxlwings.exe is a standalone xlwings command-line client with very limited functionality. It currently works for the xlwings vba, xlwings addin -f, and xlwings auth commands and saves you from having to install a full Python installation if these are your only use cases.Enhancement The =SQL() extension now allows to use custom table aliases instead of simply a , b , c , etc. ( GH 2435 ).
Enhancement The =SQL() extension now returns proper booleans and datetime cells instead of strings ( GH 2562 ).
Enhancement The =SQL() extension now allows to use custom table aliases instead of simply a, b, c, etc. ({issue}2435).Enhancement The =SQL() extension now returns proper booleans and datetime cells instead of strings ({issue}2562).Release Notes: https://docs.xlwings.org/en/latest/whatsnew.html
pip or conda package manager, you can't install from source directly, see https://docs.xlwings.org/en/stable/installation.htmlxlwings.exe is a standalone xlwings command-line client with very limited functionality. It currently works for the xlwings vba, xlwings addin -f, and xlwings auth commands and saves you from having to install a full Python installation if these are your only use cases.Enhancement PRO License keys set via env vars are now overriding everything else ( GH 2547 ).
Enhancement PRO Deploy keys now work for all versions that are lower or equal to the one they were created with ( GH 2550 ).
Enhancement PRO xlwings.js was moved to the xlwings-server repo ( GH 2551 ).
Enhancement {bdg-secondary}PRO License keys set via env vars are now overriding everything else ({issue}2547).Enhancement {bdg-secondary}PRO Deploy keys now work for all versions that are lower or equal to the one they were created with ({issue}2550).Enhancement {bdg-secondary}PRO xlwings.js was moved to the xlwings-server repo ({issue}2551).Release Notes: https://docs.xlwings.org/en/latest/whatsnew.html
pip or conda package manager, you can't install from source directly, see https://docs.xlwings.org/en/stable/installation.htmlxlwings.exe is a standalone xlwings command-line client with very limited functionality. It currently works for the xlwings vba, xlwings addin -f, and xlwings auth commands and saves you from having to install a full Python installation if these are your only use cases.Enhancement PRO Custom functions: Support object handles with *args ( GH 2538 ).
Enhancement PRO Office.js add-ins: introduce required_roles decorator argument *args ( GH 2539 ).
Enhancement {bdg-secondary}PRO Custom functions: Support object handles with *args ({issue}2538).Enhancement {bdg-secondary}PRO Office.js add-ins: introduce required_roles decorator argument *args ({issue}2539).Release Notes: https://docs.xlwings.org/en/latest/whatsnew.html
pip or conda package manager, you can't install from source directly, see https://docs.xlwings.org/en/stable/installation.htmlxlwings.exe is a standalone xlwings command-line client with very limited functionality. It currently works for the xlwings vba, xlwings addin -f, and xlwings auth commands and saves you from having to install a full Python installation if these are your only use cases.Enhancement Added support for Python 3.13 ( GH 2534 ).
Enhancement PRO Office.js add-ins: Task pane button enhancements for running custom scripts ( GH 2533 ).
Enhancement Added support for Python 3.13 ({issue}2534).Enhancement {bdg-secondary}PRO Office.js add-ins: Task pane button enhancements for running custom scripts ({issue}2533).Release Notes: https://docs.xlwings.org/en/latest/whatsnew.html
pip or conda package manager, you can't install from source directly, see https://docs.xlwings.org/en/stable/installation.htmlxlwings.exe is a standalone xlwings command-line client with very limited functionality. It currently works for the xlwings vba, xlwings addin -f, and xlwings auth commands and saves you from having to install a full Python installation if these are your only use cases.Enhancement PRO The @script decorator now accepts target_cell and config arguments to bind it to an Office.js sheet button ( GH 2526 ).
Enhancement {bdg-secondary}PRO The @script decorator now accepts target_cell and config arguments to bind it to an Office.js sheet button ({issue}2526).Release Notes: https://docs.xlwings.org/en/latest/whatsnew.html
pip or conda package manager, you can't install from source directly, see https://docs.xlwings.org/en/stable/installation.htmlxlwings.exe is a standalone xlwings command-line client with very limited functionality. It currently works for the xlwings vba, xlwings addin -f, and xlwings auth commands and saves you from having to install a full Python installation if these are your only use cases.Bug Fix Fixed various issues with VBA compile errors ( GH 2118 and GH 2290 ).
Enhancement PRO xlwings Server: deprecate the “DIY” approach in favor of the official xlwings Server repo and moved docs to https://server.xlwings.org ( GH 2519 ).
Breaking Change PRO xlwings Server: deprecated RunRemotePython in favor of RunServerPython and removed xlwings quickstart myproject --fastapi in favor of xlwings quickstart myproject --server ( GH 2522 ).
Bug Fix Fixed various issues with VBA compile errors ({issue}2118 and {issue}2290).Enhancement {bdg-secondary}PRO xlwings Server: deprecate the "DIY" approach in favor of the official xlwings Server repo and moved docs to https://server.xlwings.org ({issue}2519).Breaking Change {bdg-secondary}PRO xlwings Server: deprecated RunRemotePython in favor of RunServerPython and removed xlwings quickstart myproject --fastapi in favor of xlwings quickstart myproject --server ({issue}2522).Release Notes: https://docs.xlwings.org/en/latest/whatsnew.html
pip or conda package manager, you can't install from source directly, see https://docs.xlwings.org/en/stable/installation.htmlxlwings.exe is a standalone xlwings command-line client with very limited functionality. It currently works for the xlwings vba, xlwings addin -f, and xlwings auth commands and saves you from having to install a full Python installation if these are your only use cases.Bug Fix Fixed a few bugs with OneDrive/SharePoint on macOS so that the suggestions in the docs actually work ( GH 2496 and GH 2508 ).
Release Notes: https://docs.xlwings.org/en/latest/whatsnew.html
pip or conda package manager, you can't install from source directly, see https://docs.xlwings.org/en/stable/installation.htmlxlwings.exe is a standalone xlwings command-line client with very limited functionality. It currently works for the xlwings vba, xlwings addin -f, and xlwings auth commands and saves you from having to install a full Python installation if these are your only use cases.Enhancement PRO Custom functions via xlwings Server: allow to call thousands of custom functions concurrently ( GH 2502 ).
Enhancement PRO Custom functions via xlwings Server: added support for special type-hinted params such as CurrentUser ( GH 2501 ).
Enhancement {bdg-secondary}PRO Custom functions via xlwings Server: allow to call thousands of custom functions concurrently ({issue}2502).Enhancement {bdg-secondary}PRO Custom functions via xlwings Server: added support for special type-hinted params such as CurrentUser ({issue}2501).Release Notes: https://docs.xlwings.org/en/latest/whatsnew.html
pip or conda package manager, you can't install from source directly, see https://docs.xlwings.org/en/stable/installation.htmlxlwings.exe is a standalone xlwings command-line client with very limited functionality. It currently works for the xlwings vba, xlwings addin -f, and xlwings auth commands and saves you from having to install a full Python installation if these are your only use cases.This release introduces support for type hints in UDFs/custom functions. Type hints can be used alone or alongside decorators to specify data conversion between Excel and Python:
from xlwings import func # or: from xlwings.server import func import pandas as pd @func def myfunction ( df : pd . DataFrame ) -> pd . DataFrame : # df is a DataFrame, do something with it return df
In this example, the return type ( -> pd.DataFrame ) is optional, as xlwings automatically checks the type of the returned object.
If you need to provide additional conversion arguments, you can either provide them via an annotated type hint or via a decorator. Note that when you use type hints and decorators together, decorators override type hints for conversion.
To set index=False for both the argument and the return value, you can annotate the type hint like this:
from typing import Annotated from xlwings import func # or: from xlwings.server import func import pandas as pd @func def myfunction ( df : Annotated [ pd . DataFrame , { "index" : False }] ) -> Annotated [ pd . DataFrame , { "index" : False }]: # df is a DataFrame, do something with it return df
As this might be a little harder to read, you can extract the type definition, which also allows you to reuse it like so:
from typing import Annotated from xlwings import func # or: from xlwings.server import func import pandas as pd Df = Annotated [ pd . DataFrame , { "index" : False }] @func def myfunction ( df : Df ) -> Df : # df is a DataFrame, do something with it return df
Alternatively, you could also combine type hints with decorators:
from typing import Annotated from xlwings import func , arg , ret # or: from xlwings.server import func, arg, ret import pandas as pd @func @arg ( "df" , index = False ) @ret ( index = False ) def myfunction ( df : pd . DataFrame ) -> pd . DataFrame : # df is a DataFrame, do something with it return df
Other changes include:
Breaking Change Dropped Python 3.8 support ( GH 2497 ).
Bug Fix v0.31.4 introduced a change that would set the Matplotlib backend to agg globally. This has been reverted ( GH 2484 ).
Enhancement PRO xlwings Reports: when using Markdown functionality, mistune is now required as dependency ( GH 2498 ).
Bug Fix PRO Fixed a bug with streaming functions ( GH 2491 ).
Release Notes: https://docs.xlwings.org/en/latest/whatsnew.html
pip or conda package manager, you can't install from source directly, see https://docs.xlwings.org/en/stable/installation.htmlxlwings.exe is a standalone xlwings command-line client with very limited functionality. It currently works for the xlwings vba, xlwings addin -f, and xlwings auth commands and saves you from having to install a full Python installation if these are your only use cases.Bug Fix PRO Fixed an issue with custom functions when using the setting XLWINGS_ENABLE_SOCKETIO=false ( GH 2477 ).
Bug Fix {bdg-secondary}PRO Fixed an issue with custom functions when using the setting XLWINGS_ENABLE_SOCKETIO=false ({issue}2477).Release Notes: https://docs.xlwings.org/en/latest/whatsnew.html
pip or conda package manager, you can't install from source directly, see https://docs.xlwings.org/en/stable/installation.htmlxlwings.exe is a standalone xlwings command-line client with very limited functionality. It currently works for the xlwings vba, xlwings addin -f, and xlwings auth commands and saves you from having to install a full Python installation if these are your only use cases.Bug Fix PRO xlwings Server via Office.js now closes open alerts before showing a new one to prevent errors ( GH 2476 ).
Bug Fix PRO xlwings Server via Office.js now shows custom function errors from outside of the app, such as timeouts ( GH 2475 ).
Bug Fix {bdg-secondary}PRO xlwings Server via Office.js now closes open alerts before showing a new one to prevent errors ({issue}2476).Bug Fix {bdg-secondary}PRO xlwings Server via Office.js now shows custom function errors from outside of the app, such as timeouts ({issue}2475).Release Notes: https://docs.xlwings.org/en/latest/whatsnew.html
pip or conda package manager, you can't install from source directly, see https://docs.xlwings.org/en/stable/installation.htmlxlwings.exe is a standalone xlwings command-line client with very limited functionality. It currently works for the xlwings vba, xlwings addin -f, and xlwings auth commands and saves you from having to install a full Python installation if these are your only use cases.Enhancement PRO Implemented Range.adjust_indent() (Office.js clients only) ( GH 2471 ).
Enhancement PRO Implemented Sheet.freeze_panes.freeze_at() and Sheet.freeze_panes.unfreeze() for (Office.js clients only) ( GH 2463 ).
Enhancement PRO Implemented Range.group() and Range.ungroup() for (Office.js clients only) ( GH 2468 ).
Enhancement {bdg-secondary}PRO Implemented Range.adjust_indent() (Office.js clients only) ({issue}2471).Enhancement {bdg-secondary}PRO Implemented Sheet.freeze_panes.freeze_at() and Sheet.freeze_panes.unfreeze() for (Office.js clients only) ({issue}2463).Enhancement {bdg-secondary}PRO Implemented Range.group() and Range.ungroup() for (Office.js clients only) ({issue}2468).Release Notes: https://docs.xlwings.org/en/latest/whatsnew.html
pip or conda package manager, you can't install from source directly, see https://docs.xlwings.org/en/stable/installation.htmlxlwings.exe is a standalone xlwings command-line client with very limited functionality. It currently works for the xlwings vba, xlwings addin -f, and xlwings auth commands and saves you from having to install a full Python installation if these are your only use cases.Bug Fix PRO Fixed polyfill.io vulnerability. This was only an issue with Office.js alerts on systems where Excel is still relying on Internet Explorer 11. Also, this only concerns DIY xlwings Server applications (the official xlwings-server repo is unaffected) ( GH 2461 ).
Bug Fix {bdg-secondary}PRO Fixed polyfill.io vulnerability. This was only an issue with Office.js alerts on systems where Excel is still relying on Internet Explorer 11. Also, this only concerns DIY xlwings Server applications (the official xlwings-server repo is unaffected) ({issue}2461).Release Notes: https://docs.xlwings.org/en/latest/whatsnew.html
pip or conda package manager, you can't install from source directly, see https://docs.xlwings.org/en/stable/installation.htmlxlwings.exe is a standalone xlwings command-line client with very limited functionality. It currently works for the xlwings vba, xlwings addin -f, and xlwings auth commands and saves you from having to install a full Python installation if these are your only use cases.Bug Fix mysheet.select() now automatically activates the book first, which is required to avoid a com_error on Windows ( GH 2460 ).
Bug Fix Added the missing shape type for slicer ( GH 2459 ).
Bug Fix mysheet.select() now automatically activates the book first, which is required to avoid a com_error on Windows ({issue}2460).Bug Fix Added the missing shape type for slicer ({issue}2459).Your coding agent can read these notes before it upgrades. Set up the MCP server →