NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #322 most downloaded on PyPI
A Python module for creating Excel XLSX files.
Last release 1 years ago
16 Sep 2025
Release timing varies
gaps range from 8 days to 11 months
Nearly every release is documented
notes for 60 of the last 60 stable releases
1 version withdrawn
withdrawn after publishing
14 years old
175 releases · first in 2013
This version removes support for end of life Pythons 2.5, 2.6, 3.1, 3.2 and 3.3. For older, unsupported versions of Python use version 1.1.4 of XlsxWr
Fix for issues where zipfile.py raises "ZIP does not support timestamps before 1980" exception. 535.
535.One column per quarter.
Fix handling of 'num_format': '0' in duplicate formats. 584.
'num_format': '0' in duplicate formats. :issue:584.Fix for issue where in_memory files weren't compressed. 573.
Fix for issue where in_memory files weren't compressed. 573.
Fix write() so that it handles array formulas as documented. 418.
Fix for issue with special characters in worksheet table functions. 442.
Added warnings for input issues in write_rich_string() such as blank strings, double formats or insufficient parameters. 425.
Added comment font name and size options. 201.
Added comment font name and size options. :issue:201.
Fix for issue when using text boxes in the same workbook as a chartsheet.
:issue:420.
Added functionality to align chart category axis labels. See the label_align property of the set_x_axis() method.
Added functionality to align chart category axis labels. See the label_align property of the set_x_axis() method.
Added worksheet hide_row_col_headers() method to turn off worksheet row and column headings. 480.
Added the set_tab_ratio() method to set the ratio between the worksheet tabs and the horizontal slider. 481.
Fixed issue with icon conditional formats when the values were zero. 565.
Fix for issue with formulas quoted as strings in conditional formats, introduced in version 1.0.7. 564.
564.…exception was triggered. Note that this is a backward incompatible change. The with context manager is a better way to close automatically, see close(…
Added named exceptions to XlsxWriter. See exceptions.
Removed the implicit close() in the destructor since it wasn't guaranteed to work correctly and raised a confusing exception when any other exception was triggered. Note that this is a backward incompatible change. The with context manager is a better way to close automatically, see close().
Added border, fill, pattern and gradient formatting options to set_legend(). 545.
Added top_right position to set_legend(). 537.
Fix for unicode type error in Python 3. 554.
554.Added some performance improvements. 551.
551.Added example of how to subclass the Workbook and Worksheet objects. See ex_inheritance1 and ex_inheritance2.
Added example of how to subclass the Workbook and Worksheet objects. See ex_inheritance1 and ex_inheritance2.
Added support for WMF and EMF image formats to the Worksheet add_image method.
Added example of how to subclass the Workbook and Worksheet objects. See Example: Example of subclassing the Workbook and Worksheet classes and Example: Advanced example of subclassing .
Added support for WMF and EMF image formats to the Worksheet add_image() method.
Set the xlsx internal file member datetimes to 1980-01-01 00:00:00 like Excel so that apps can produce a consistent binary file once the workbook set_
Set the xlsx internal file member datetimes to 1980-01-01 00:00:00 like Excel so that apps can produce a consistent binary file once the workbook set_properties created date is set. 495.
Fix for jpeg images that reported unknown height/width due to unusual SOF markers. 506.
Added support for blanks in list autofilter. 505.
Fixed set_column parameter names to match docs and other methods. Note, this is a backward incompatible change. 504.
Added Excel 2010 data bar features such as solid fills and control over the display of negative values. See working_with_conditional_formats and ex_cond_format. 502.
Fixed set_column parameter names to match docs and other methods. Note, this is a backward incompatible change. 504.
Fixed missing plotarea formatting in pie/doughnut charts.
Added Excel 2010 data bar features such as solid fills and control over the display of negative values. See Working with Conditional Formatting and Example: Conditional Formatting . Feature Request 502 .
Fixed set_column() parameter names to match docs and other methods. Note, this is a backward incompatible change. Issue 504 .
Fixed missing plotarea formatting in pie/doughnut charts.
Fix for cases where the hyperlink style added in the previous release didn't work. 455.
455.Fix for cases where the hyperlink style added in the previous release didn’t work. Feature Request 455 .
Changed default write_url format to the Excel hyperlink style so that it changes when the theme is changed and also so that it indicates that the link
Changed default write_url format to the Excel hyperlink style so that it changes when the theme is changed and also so that it indicates that the link has been clicked. 455.
Added icon sets to conditional formatting. See working_with_conditional_formats and ex_cond_format. 387.
Added icon sets to conditional formatting. See working_with_conditional_formats and ex_cond_format. 387.
Added icon sets to conditional formatting. See Working with Conditional Formatting and Example: Conditional Formatting . Feature Request 387 .
Added stop_if_true parameter to conditional formatting. 386.
stop_if_true parameter to conditional formatting. :feature:386.Added stop_if_true parameter to conditional formatting. Feature Request 386 .
Fixed issue where spurious deprecation warning was raised in -Werror mode. 451.
-Werror
mode. :issue:451.* Minor bug and doc fixes.
Fix for table with data but without a header. 405.
Fix for table with data but without a header. :issue:405.
Add a warning when the number of series in a chart exceeds Excel's limit of
399.Fix for missing remove_timezone option in Chart class. 404 from Thomas Arnhold.
remove_timezone option in Chart class. :pull:404 from
Thomas Arnhold.Added user definable removal of timezones in datetimes. See the Workbook constructor option remove_timezone and Timezone Handling in XlsxWriter . 257.
Added user definable removal of timezones in datetimes. See the Workbook constructor option remove_timezone and Timezone Handling in XlsxWriter. 257.
Fix duplicate header warning in add_table when there is only one user defined header. 380.
Fix for center_across property in add_format. 381.
Added check to add_table to prevent duplicate header names which leads to a corrupt Excel file. 362.
Added check to add_table to prevent duplicate header names which leads to a corrupt Excel file. 362.
Added workbook set_size method to set the workbook window size.
Added workbook set_size method to set the workbook window size.
Added font support to chart set_table.
Added font support to chart set_table.
Documented used of font rotation in chart data labels. 337.
Added trendline properties : intercept, display_equation and display_r_squared. 357.
Added trendline properties: intercept, display_equation and display_r_squared. 357.
Added trendline properties : intercept , display_equation and display_r_squared . Feature Request 357 .
Fix for insert_image issue when handling images with zero dpi. 356.
Fix for insert_image issue when handling images with zero dpi. 356.
Added workbook set_custom_property method to set custom document properties. 355.
Added workbook set_custom_property method to set custom document properties. 355.
Added workbook set_custom_property() method to set custom document properties. Feature Request 355 .
Fix for issue when inserting read-only images on Windows. 352.
Fix for issue when inserting read-only images on Windows. 352.
Added get_worksheet_by_name() method to allow the retrieval of a worksheet from a workbook via its name.
Fixed issue where internal file creation and modification dates were in the local timezone instead of UTC.
Fix for external: urls where the target/anchor contains spaces. 350.
external: urls where the target/anchor contains spaces.
:issue:350.Added additional documentation on ewx_pandas and pandas_examples.
Added additional documentation on ewx_pandas and pandas_examples.
Added fix for set_center_across format method.
Added additional documentation on Working with Pandas and XlsxWriter and Pandas with XlsxWriter Examples .
Added fix for set_center_across() format method.
Fix for write_url exception when the URL contains two # location/anchors. Note, URLs like this aren't strictly valid and cannot be entered manually in
Fix for write_url exception when the URL contains two # location/anchors. Note, URLs like this aren't strictly valid and cannot be entered manually in Excel. 330.
Added options to configure chart axis tick placement. See set_x_axis().
Added options to configure chart axis tick placement. See set_x_axis().
Added transparency option to solid fill colors in chart areas (chart_formatting_fill). 298.
Added transparency option to solid fill colors in chart areas (chart_formatting_fill). 298.
Added transparency option to solid fill colors in chart areas ( Chart formatting: Solid Fill ). Feature Request 298 .
Added option to set chart tick interval. 251.
251.Added additional documentation on working_with_formulas.
Added additional documentation on working_with_formulas.
Added chart pattern fills, see chart_formatting_pattern and ex_chart_pattern. 268.
Added chart pattern fills, see chart_formatting_pattern and ex_chart_pattern. 268.
Added chart pattern fills, see Chart formatting: Pattern Fill and Example: Chart with Pattern Fills . Feature Request 268 .
Add checks for valid and non-duplicate worksheet table names. 319.
319.Added support for table header formatting and a fix for wrapped lines in the header. 287.
287.Added support for table header formatting and a fix for wrapped lines in the header. Feature Request 287 .
Fix for images with negative offsets. 273.
273.Allow hyperlinks longer than 255 characters when the link and anchor are each less than or equal to 255 characters.
Allow hyperlinks longer than 255 characters when the link and anchor are each less than or equal to 255 characters.
Added hyperlink_base document property.
:feature:306.
Added option to allow data validation input messages with the 'any' validate parameter.
Added option to allow data validation input messages with the 'any' validate parameter.
Fixed url encoding of links to external files and directories.
:issue:278.
Added documentation on ewx_pandas and pandas_examples.
Added documentation on ewx_pandas and pandas_examples.
Added support for with context manager. :PR`239`.
Added documentation on Working with Pandas and XlsxWriter and Pandas with XlsxWriter Examples .
Added support for with context manager.
:PR239.
Added support for textboxes in worksheets. See insert_textbox() and working_with_textboxes for more details. 107.
Added support for textboxes in worksheets. See insert_textbox() and working_with_textboxes for more details. 107.
Added support for textboxes in worksheets. See insert_textbox() and Working with Textboxes for more details. Feature Request 107 .
Added gradient fills to chart objects such as the plot area of columns. See chart_formatting_gradient and ex_chart_gradient. 228.
Added gradient fills to chart objects such as the plot area of columns. See chart_formatting_gradient and ex_chart_gradient. 228.
Added gradient fills to chart objects such as the plot area of columns. See Chart formatting: Gradient Fill and Example: Chart with Gradient Fills . Feature Request 228 .
Added support for display units in chart axes. See set_x_axis(). 185.
Added support for display units in chart axes. See set_x_axis(). 185.
Added nan_inf_to_errors Workbook constructor option to allow mapping of Python nan/inf value to Excel error formulas in write() and write_number(). 150.
Added support for display units in chart axes. See set_x_axis() . Feature Request 185 .
Added nan_inf_to_errors Workbook() constructor option to allow mapping of Python nan/inf value to Excel error formulas in write() and write_number() . Feature Request 150 .
Added support for clustered category charts. See ex_chart_clustered for details. 180.
Added support for clustered category charts. See ex_chart_clustered for details. 180.
Refactored the format and formatting documentation.
Added support for clustered category charts. See Example: Clustered Chart for details. Feature Request 180 .
Refactored the The Format Class and formatting documentation.
Added option to combine two different chart types. See the chart_combined_charts section and ex_chart_combined and ex_chart_pareto for more details. 7
Added option to combine two different chart types. See the chart_combined_charts section and ex_chart_combined and ex_chart_pareto for more details. 72.
Added option to combine two different chart types. See the Combined Charts section and Example: Combined Chart and Example: Pareto Chart for more details. Feature Request 72 .
Added option to add function value in worksheet add_table. 216.
Added option to add function value in worksheet add_table. 216.
Fix for A1 row/col numbers below lower bound. 212.
Added option to add function value in worksheet add_table() . Feature Request 216 .
Fix for A1 row/col numbers below lower bound. Issue 212 .
Fix for incorrect shebang line in vba_extract.py packaged in wheel. 211.
Fix for incorrect shebang line in vba_extract.py packaged in wheel. 211.
Added docs and example for diagonal cell border. See ex_diagonal_border.
Fix for incorrect shebang line in vba_extract.py packaged in wheel. Issue 211 .
Added docs and example for diagonal cell border. See Example: Diagonal borders in cells .
Added worksheet quoting for chart names in lists. 205.
Added worksheet quoting for chart names in lists.
:issue:205.
Added docs on how to find and set VBA codenames.
:issue:202.
Fix Python3 issue with unused charts.
:issue:200.
Enabled warning for missing category is scatter chart.
:issue:197.
Fix for upper chart style limit. Increased the chart style limit from
42 to the correct 48.
:issue:192.
Raise warning if a chart is inserted more than once.
:issue:184.
Fix for issue where fonts applied to data labels raised exception. 179.
Fix for issue where fonts applied to data labels raised exception.
:issue:179.
Added option to allow explicit text axis types for charts, similar to date
axes.
:feature:178.
Fix for issue where the bar/column chart gap and overlap weren't
applied to the secondary axis.
:issue:177.
Added support for adding VBA macros to workbooks. See macros. 126.
Added support for adding VBA macros to workbooks. See macros. 126.
Added support for adding VBA macros to workbooks. See Working with VBA Macros . Feature Request 126 .
Added chart axis line and fill properties. 88.
88.Added chart specific handling of data label positions since not all positions are available for all chart types. 170.
Added chart specific handling of data label positions since not all positions are available for all chart types. 170.
Added number formatting (130), font handling, separator and legend key for data labels. See chart_series_option_data_labels
Fix for non-quoted worksheet names containing spaces and non-alphanumeric characters. 167.
Added option to add images to headers and footers. See ex_headers_footers. 133.
Added option to add images to headers and footers. See ex_headers_footers. 133.
Fixed issue where non 96dpi images weren't scaled properly in Excel. 164.
Added option to not scale header/footer with page. See set_header. 134.
Added option to add images to headers and footers. See Example: Adding Headers and Footers to Worksheets . Feature Request 133 .
Fixed issue where non 96dpi images weren’t scaled properly in Excel. Issue 164 .
Added option to not scale header/footer with page. See set_header() . Feature Request 134 .
Removed egg_base requirement from setup.cfg which was preventing installation on Windows. 162.
Removed egg_base requirement from setup.cfg which was preventing
installation on Windows.
:issue:162.
Fix for issue where X axis title formula was overwritten by the Y axis
title.
:issue:161.
Added support for Doughnut charts. 157.
Added support for Doughnut charts.
:feature:157.
Added support for wheel packages.
:feature:156.
Made the exception handling in write() clearer for unsupported types so
that it raises a more accurate TypeError instead of a ValueError.
:issue:153.
Added support for Doughnut charts. Feature Request 157 .
Added support for wheel packages. Feature Request 156 .
Made the exception handling in write() clearer for unsupported types so that it raises a more accurate TypeError instead of a ValueError. Issue 153 .
Added support for insert_image images from byte streams to allow images from URLs and other sources. 118.
Added support for insert_image images from byte streams to allow images from URLs and other sources. 118.
Added write_datetime support for datetime.timedelta. 128.
Added support for insert_image() images from byte streams to allow images from URLs and other sources. Feature Request 118 .
Added write_datetime() support for datetime.timedelta. Feature Request 128 .
Fix for spurious exception message when close() isn't used. 131.
Fix for spurious exception message when close() isn't used. 131.
Fix for formula string values that look like numbers. 122.
Clarify print_area() documentation for complete row/column ranges. 139.
Fix for unicode strings in data validation lists. 135.
Your coding agent can read these notes before it upgrades. Set up the MCP server →