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
Fix for incorrect chart offsets in insert_chart() and set_size().
Fix for incorrect chart offsets in insert_chart() and set_size().
Added image positioning option to insert_image to control how images are moved in relation to surrounding cells. 117.
Added image positioning option to insert_image to control how images are moved in relation to surrounding cells. 117.
Fix for chart error_bar exceptions. 115.
Added clearer reporting of nested exceptions in write() methods. 108.
Added support for inside_base data label position in charts.
One column per quarter.
Added checks and warnings for data validation limits. 89.
Added checks and warnings for data validation limits. 89.
Added option to add hyperlinks to images. Thanks to Paul Tax.
Added Python 3 Http server example. Thanks to Krystian Rosinski.
Added set_calc_mode method to control automatic calculation of formulas when worksheet is opened. Thanks to Chris Tompkinson.
Added use_zip64 method to allow ZIP64 extensions when writing very large files.
Fix to handle '0' and other number like strings as number formats. 103.
Fix for missing images in in_memory mode. 102.
Added date axis handling to charts. See ex_chart_date_axis. 73.
Added date axis handling to charts. See ex_chart_date_axis. 73.
Added support for non-contiguous chart ranges. 44.
Fix for low byte and control characters in strings. 86.
Fix for chart titles with exclamation mark. 83.
Fix to remove duplicate set_column entries. 82.
Added date axis handling to charts. See Example: Date Axis Chart . Feature Request 73 .
Added support for non-contiguous chart ranges. Feature Request 44 .
Fix for low byte and control characters in strings. Issue 86 .
Fix for chart titles with exclamation mark. Issue 83 .
Fix to remove duplicate set_column() entries. Issue 82 .
Added interval unit option for category axes. 69.
Added interval unit option for category axes.
:feature:69.
Fix for axis name font rotation.
Fix for several minor issues with Pie chart legends.
Added interval unit option for category axes. Feature Request 69 .
Fix for axis name font rotation.
Fix for several minor issues with Pie chart legends.
Added Chartsheets to allow single worksheet charts. 10.
Added Chartsheets to allow single worksheet charts. 10.
Added Chartsheets to allow single worksheet charts. Feature Request 10 .
Added chart object positioning and sizing to allow positioning of plotarea, legend, title and axis names. 66.
Added chart object positioning and sizing to allow positioning of plotarea, legend, title and axis names. 66.
Added set_title() none option to turn off automatic titles.
Improved define_name() name validation.
Fix to prevent modification of user parameters in conditional_format().
Added in_memory Workbook constructor option to allow XlsxWriter to work on Google App Engine. 28.
Added in_memory Workbook constructor option to allow XlsxWriter to work on Google App Engine. 28.
Added in_memory Workbook() constructor option to allow XlsxWriter to work on Google App Engine. Feature Request 28 .
Added fix for markers on non-marker scatter charts. 62.
Added fix for markers on non-marker scatter charts. 62.
Added custom error bar option. Thanks to input from Alex Birmingham.
Changed Html docs to Bootstrap theme.
Added ex_merge_rich.
Added fix for markers on non-marker scatter charts. Issue 62 .
Added custom error bar option. Thanks to input from Alex Birmingham.
Changed Html docs to Bootstrap theme.
Added Example: Merging Cells with a Rich String .
Added font formatting to chart legends.
Added position_axis chart axis option.
Added position_axis chart axis option.
Added optional list handling for chart names.
Documented use of cell utility functions.
Documented use of cell utility functions.
Fix for tables added in non-sequential order. Closes 51 reported by calfzhou.
Fix for comments overlying columns with non-default width. 45.
45.Added a default blue underline hyperlink format for write_url().
Added a default blue underline hyperlink format for write_url().
Added Workbook constructor options strings_to_formulas and strings_to_urls to override default conversion of strings in write().
Fix for charts and images that cross rows and columns that are hidden or formatted but which don't have size changes. 42 reported by Kristian Stobbe.
42 reported by
Kristian Stobbe.Added more generic support for JPEG files. 40 reported by Simon Breuss.
Added more generic support for JPEG files. :issue:40 reported by Simon
Breuss.
Fix for harmless Python 3 installation warning. :issue:41 reported by James
Reeves.
Added fix for minor issue with insert_image for images that extend over several cells.
Added fix for minor issue with insert_image for images that extend over several cells.
Added fix to ensure formula calculation on load regardless of Excel version.
Added handling for Decimal(), Fraction() and other float types to the write() function.
Added handling for Decimal(), Fraction() and other float types to the write() function.
Added Python 2.5 and Jython support. Thanks to Jonas Diemer for the patch.
The previous behavior can be obtained by setting the constructor option to True. Note This is a backward incompatibility.
Added write_boolean() function to write Excel boolean values. 37. Also added explicit handling of Python bool values to the write() function.
Changed Workbook constructor option strings_to_numbers default option to False so that there is no implicit conversion of numbers in strings to numbers. The previous behavior can be obtained by setting the constructor option to True. Note This is a backward incompatibility.
Simplified import based on a suggestion from John Yeung. 26.
Simplified import based on a suggestion from John Yeung. 26.
Fix for NAN/INF converted to invalid numbers in write(). 30.
Added Workbook constructor option strings_to_numbers to override default conversion of number strings to numbers in write().
Added Workbook constructor option default_date_format to allow a default date format string to be set. 5.
Reverted back to using codecs for file encoding (versions <= 0.3.1) to avoid numerous UTF-8 issues in Python2/3.
Added Chart line smoothing option. Thanks to Dieter Vandenbussche.
Added Chart line smoothing option. Thanks to Dieter Vandenbussche.
Added Http Server example (ex_http_server). Thanks to Alexander Afanasiev.
Fixed inaccurate column width calculation. Closes 27 Thanks to John Yeung.
Added chart axis font rotation.
Added Chart line smoothing option. Thanks to Dieter Vandenbussche.
Added Http Server example ( Example: Simple HTTP Server ). Thanks to Alexander Afanasiev.
Fixed inaccurate column width calculation. Closes Issue 27 Thanks to John Yeung.
Added chart axis font rotation.
Minor packaging fixes. 14 and 19.
Minor packaging fixes.
:issue:14 and :issue:19.
Fixed explicit UTF-8 file encoding for Python 3.
:pull:15 from Alexandr Shadchin.
Fixed invalid string formatting resulted in misleading stack trace.
:pull:21 from Andrei Korostelev.
Speed optimizations. The module is now 10-15% faster on average.
Added chart support. See the chart_class, working_with_charts and chart_examples.
Added chart support. See the chart_class, working_with_charts and chart_examples.
Added chart support. See the The Chart Class , Working with Charts and Chart Examples .
Added worksheet sparklines. See sparklines, ex_sparklines1 and ex_sparklines2
Added worksheet sparklines. See sparklines, ex_sparklines1 and ex_sparklines2
Added worksheet sparklines. See Working with Sparklines , Example: Sparklines (Simple) and Example: Sparklines (Advanced)
Added worksheet tables. See tables and ex_tables.
Added worksheet tables. See tables and ex_tables.
Tested with the new Python stable releases 2.7.4 and 3.3.1. All tests now pass in the following versions:
Python 2.6
Python 2.7.2
Python 2.7.3
Python 2.7.4
Python 3.1
Python 3.2
Python 3.3.0
Python 3.3.1
There are now over 700 unit tests including more than 170 tests that compare against the output of Excel.
Added worksheet tables. See Working with Worksheet Tables and Example: Worksheet Tables .
Tested with the new Python stable releases 2.7.4 and 3.3.1. All tests now pass in the following versions:
Python 2.6
Python 2.7.2
Python 2.7.3
Python 2.7.4
Python 3.1
Python 3.2
Python 3.3.0
Python 3.3.1
There are now over 700 unit tests including more than 170 tests that compare against the output of Excel.
Added worksheet outlines and grouping. See outlines.
Added worksheet outlines and grouping. See outlines.
Added worksheet outlines and grouping. See Working with Outlines and Grouping .
Added set_default_row method. See ex_hide_row_col.
Added set_default_row method. See ex_hide_row_col.
Added hide_row_col.py, hide_sheet.py and text_indent.py examples.
Added set_default_row() method. See Example: Hiding Rows and Columns .
Added hide_row_col.py, hide_sheet.py and text_indent.py examples.
Added freeze_panes and split_panes methods. See ex_panes .
Added freeze_panes and split_panes methods. See ex_panes .
Added set_selection method to select worksheet cell or range of cells.
Added freeze_panes() and split_panes() methods. See Example: Freeze Panes and Split Panes .
Added set_selection() method to select worksheet cell or range of cells.
Added additional Workbook parameters 'tmpdir' and 'date_1904'.
Added additional Workbook parameters 'tmpdir' and 'date_1904'.
Added Workbook 'constant_memory' constructor property to minimize memory usage when writing large files. See memory_perf for more details.
Added Workbook 'constant_memory' constructor property to minimize memory usage when writing large files. See memory_perf for more details.
Fixed bug with handling of UTF-8 strings in worksheet names (and probably some other places as well). Reported by Josh English.
Fixed bug where temporary directory used to create xlsx files wasn't cleaned up after program close.
Added Workbook() 'constant_memory' constructor property to minimize memory usage when writing large files. See Working with Memory and Performance for more details.
Fixed bug with handling of UTF-8 strings in worksheet names (and probably some other places as well). Reported by Josh English.
Fixed bug where temporary directory used to create xlsx files wasn’t cleaned up after program close.
Fixed bug that was killing performance for medium sized files. The module is now 10x faster than previous versions. Reported by John Yeung.
Added worksheet data validation options. See the data_validation method, working_with_data_validation and ex_data_valid.
Added worksheet data validation options. See the data_validation method, working_with_data_validation and ex_data_valid.
There are now over 600 unit tests including more than 130 tests that compare against the output of Excel.
Added worksheet data validation options. See the data_validation() method, Working with Data Validation and Example: Data Validation and Drop Down Lists .
There are now over 600 unit tests including more than 130 tests that compare against the output of Excel.
Added support for datetime.datetime, datetime.date and datetime.time to the write_datetime method. 3. Thanks to Eduardo (eazb) and Josh English for th
Added support for datetime.datetime, datetime.date and datetime.time to the write_datetime method. 3. Thanks to Eduardo (eazb) and Josh English for the prompt.
Added conditional formatting. See the conditional_format method, working_with_conditional_formats and ex_cond_format.
Added conditional formatting. See the conditional_format method, working_with_conditional_formats and ex_cond_format.
Added conditional formatting. See the conditional_format() method, Working with Conditional Formatting and Example: Conditional Formatting .
Added Python 2.6 support. All tests now pass in the following versions:
Added Python 2.6 support. All tests now pass in the following versions:
* Fixed Python 3 support.
Added the option to write cell comments to a worksheet. See write_comment and cell_comments.
Added the option to write cell comments to a worksheet. See write_comment and cell_comments.
Added the option to write cell comments to a worksheet. See write_comment() and Working with Cell Comments .
Added insert_image worksheet method to support inserting PNG and JPEG images into a worksheet. See also the example program ex_insert_image.
Added insert_image worksheet method to support inserting PNG and JPEG images into a worksheet. See also the example program ex_insert_image.
There are now over 500 unit tests including more than 100 tests that compare against the output of Excel.
Added insert_image() worksheet method to support inserting PNG and JPEG images into a worksheet. See also the example program Example: Inserting images into a worksheet .
There are now over 500 unit tests including more than 100 tests that compare against the output of Excel.
Added the write_rich_string worksheet method to allow writing of text with multiple formats to a cell. Also added example program: ex_rich_strings.
Added the write_rich_string worksheet method to allow writing of text with multiple formats to a cell. Also added example program: ex_rich_strings.
Added the hide worksheet method to hide worksheets.
Added the set_first_sheet() worksheet method.
Added the write_rich_string() worksheet method to allow writing of text with multiple formats to a cell. Also added example program: Example: Writing “Rich” strings with multiple formats .
Added the hide() worksheet method to hide worksheets.
Added the set_first_sheet() worksheet method.
Added the protect worksheet method to allow protection of cells from editing. Also added example program: ex_protection.
Added the protect worksheet method to allow protection of cells from editing. Also added example program: ex_protection.
Added the protect() worksheet method to allow protection of cells from editing. Also added example program: Example: Enabling Cell protection in Worksheets .
set_zoom for setting worksheet zoom levels.
Added worksheet methods:
set_zoom for setting worksheet zoom levels.
right_to_left for middle eastern versions of Excel.
hide_zero for hiding zero values in cells.
set_tab_color for setting the worksheet tab color.
Added autofilters. See working_with_autofilters for more details.
Added autofilters. See working_with_autofilters for more details.
Added the write_row and write_column worksheet methods.
Added the write_url worksheet method for writing hyperlinks to a worksheet.
Added the write_url worksheet method for writing hyperlinks to a worksheet.
Added the set_properties workbook method for setting document properties.
Added the set_properties workbook method for setting document properties.
Added several new examples programs with documentation. The examples now include:
array_formula.py
cell_indentation.py
datetimes.py
defined_name.py
demo.py
doc_properties.py
headers_footers.py
hello_world.py
merge1.py
tutorial1.py
tutorial2.py
tutorial3.py
unicode_polish_utf8.py
unicode_shift_jis.py
Added the define_name method to create defined names and ranges in a workbook or worksheet.
Added the define_name method to create defined names and ranges in a workbook or worksheet.
Added the worksheets method as an accessor for the worksheets in a workbook.
Added the merge_range method to merge worksheet cells.
Added the merge_range method to merge worksheet cells.
Added final page setup methods to complete the page setup section.
Added final page setup methods to complete the page setup section.
print_area
fit_to_pages
set_start_page
set_print_scale
set_h_pagebreaks
set_v_pagebreaks
* Added page setup method. * print_row_col_headers
Added page setup method.
print_row_col_headers
* Added page setup methods. * repeat_rows * repeat_columns
Added page setup methods.
repeat_rows
repeat_columns
Added Python 3 support with help from John Evans. Tested with:
Added Python 3 support with help from John Evans. Tested with:
Python-2.7.2
Python-2.7.3
Python-3.2
Python-3.3.0
Added page setup methods.
center_horizontally
center_vertically
set_header
set_footer
hide_gridlines
* Added page setup method. * set_margins
Added page setup method.
set_margins
* Added page setup methods. * set_landscape * set_portrait * set_page_view * set_paper * print_across
Added page setup methods.
set_landscape
set_portrait
set_page_view
set_paper
print_across
* First public release.
Your coding agent can read these notes before it upgrades. Set up the MCP server →