
**Deprecation Notice**: Python 2.7 reached the end of its life on January 1st,
2020 and is no longer being supported in the community. XlsxWriter support for
Python 2.7 will end after the first release in 2021 (probably in January
2021). No new features or fixes for Python 2.7 will be added to XlsxWriter
after that date/release.


Release 1.3.6 - September 23 2020
---------------------------------

* Added the worksheet :func:`unprotect_range()` method to allow ranges within
  a protected worksheet to be unprotected.
  Feature request `#507 <https://github.com/jmcnamara/XlsxWriter/issues/507>`_.

* There are now over 1500 test cases in the test suite, including 900 tests
  that compare the output from XlsxWriter, byte for byte, against test files
  created in Excel. This is to ensure the maximum possible compatibility with
  Excel.


Release 1.3.5 - September 21 2020
---------------------------------

* Fixed issue where relative url links in images didn't work.

  Issue `#751 <https://github.com/jmcnamara/XlsxWriter/issues/751>`_.
* Added ``use_zip64`` as a constructor option.
  Issue `#745 <https://github.com/jmcnamara/XlsxWriter/issues/745>`_.


* Added check, and warning, for worksheet tables with no data row.
  Either with or without a header row.
  Issue `#715 <https://github.com/jmcnamara/XlsxWriter/issues/715>`_ and
  Issue `#679 <https://github.com/jmcnamara/XlsxWriter/issues/679>`_.

* Add a warning when the string length in :func:`write_rich_string()` exceeds
  Excel's limit.
  Issue `#372 <https://github.com/jmcnamara/XlsxWriter/issues/372>`_.


Release 1.3.4 - September 16 2020
---------------------------------

* Replaced internal MD5 digest used to check for duplicate images with a SHA256
  digest to avoid issues on operating systems such as Red Hat in FIPS mode
  which don't support MD5 for security reasons.
  Issue `#749 <https://github.com/jmcnamara/XlsxWriter/issues/749>`_.


Release 1.3.3 - August 13 2020
------------------------------

* Added :func:`ignore_errors()` worksheet method to to allow Excel worksheet
  errors/warnings to be ignored in user defined ranges. See also
  :ref:`ex_ignore_errors`.
  Feature request `#678 <https://github.com/jmcnamara/XlsxWriter/issues/678>`_.

* Added warning when closing a file more than once via :func:`close()` to help
  avoid errors where a file is closed within a loop or at the wrong scope
  level.


Release 1.3.2 - August 6 2020
-----------------------------

* Added Border, Fill, Pattern and Gradient formatting to chart data labels and
  chart custom data labels. See :ref:`chart_series_option_data_labels` and
  :ref:`chart_series_option_custom_data_labels`.


Release 1.3.1 - August 3 2020
-----------------------------

* Fix for issue where array formulas weren't included in the output file for
  certain ranges/conditions.
  Issue `#735 <https://github.com/jmcnamara/XlsxWriter/issues/735>`_.


Release 1.3.0 - July 30 2020
----------------------------

* Added support for chart :ref:`custom data labels
  <chart_series_option_custom_data_labels>`.
  Feature request `#343 <https://github.com/jmcnamara/XlsxWriter/issues/343>`_.


Release 1.2.9 - May 29 2020
---------------------------

* Added support for ``stacked`` and ``percent_stacked`` Line charts.


Release 1.2.8 - February 22 2020
--------------------------------

* Fix for issue where duplicate images with hyperlinks weren't handled
  correctly.
  Issue `#686 <https://github.com/jmcnamara/XlsxWriter/issues/686>`_.

* Removed ``ReservedWorksheetName`` exception which was used with the reserved
  worksheet name "History" since this name is allowed in some Excel variants.
  Issue `#688 <https://github.com/jmcnamara/XlsxWriter/issues/688>`_.

* Fix for worksheet objects (charts, images and textboxes) that are inserted
  with an offset that starts in a hidden cell.
  Issue `#676 <https://github.com/jmcnamara/XlsxWriter/issues/676>`_.

* Fix to allow handling of NoneType in :func:`add_write_handler`.
  Issue `#677 <https://github.com/jmcnamara/XlsxWriter/issues/677>`_.


Release 1.2.7 - December 23 2019
--------------------------------

* Fix for duplicate images being copied to an XlsxWriter file. Excel uses an
  optimization where it only stores one copy of a repeated/duplicate image in
  a workbook. XlsxWriter didn't do this which meant that the file size would
  increase when then was a large number of repeated images. This release fixes
  that issue and replicates Excel's behavior.
  Issue `#615 <https://github.com/jmcnamara/XlsxWriter/issues/615>`_.

* Added documentation on :ref:`num_format_categories` and
  :ref:`num_format_locale`.

* Added note to :func:`protect()` about how it is possible to encrypt an
  XlsxWriter file using a third party, cross platform, open source tool called
  `msoffice-crypt <https://github.com/herumi/msoffice>`_.


Release 1.2.6 - November 15 2019
--------------------------------

* Added option to remove style from worksheet tables.
  Feature request `#670 <https://github.com/jmcnamara/XlsxWriter/issues/670>`_.


Release 1.2.5 - November 10 2019
--------------------------------

* Added option to add hyperlinks to textboxes. See :ref:`textbox_hyperlink`.
  Feature request `#419 <https://github.com/jmcnamara/XlsxWriter/issues/419>`_.


Release 1.2.4 - November 9 2019
-------------------------------

* Added option to link textbox text from a cell. See :ref:`textbox_textlink`.
  Feature request `#516 <https://github.com/jmcnamara/XlsxWriter/issues/516>`_.

* Added option to rotate text in a textbox. See
  :ref:`textbox_formatting_rotation`.
  Feature request `#638 <https://github.com/jmcnamara/XlsxWriter/issues/638>`_.


Release 1.2.3 - November 7 2019
-------------------------------

* Increased allowable worksheet url length from 255 to 2079 characters, as
  supported in more recent versions of Excel. A lower or user defined limit
  can be set via the ``max_url_length`` property in the :func:`Workbook`
  constructor.

* Fixed several issues with hyperlinks in worksheet images.


Release 1.2.2 - October 16 2019
-------------------------------

* Fixed Python 3.8.0 warnings.
  Issue `#660 <https://github.com/jmcnamara/XlsxWriter/issues/660>`_.


Release 1.2.1 - September 14 2019
---------------------------------

* Added the :func:`add_write_handler` method to allow user defined types to be
  handled by the :func:`write` method. See :ref:`writing_user_types` for more
  information.
  Feature request `#631 <https://github.com/jmcnamara/XlsxWriter/issues/631>`_.

* Add support for East Asian vertical fonts in charts.
  Feature request `#648 <https://github.com/jmcnamara/XlsxWriter/issues/648>`_.


Release 1.2.0 - August 26 2019
------------------------------

* Refactored exception handling around the workbook file :func:`close()`
  method to allow exceptions to be caught and handled. See
  :ref:`ex_check_close`. Also refactored the code to clean up temp files in
  the event of an exception.
  Issues `#471 <https://github.com/jmcnamara/XlsxWriter/issues/471>`_
  and `#647 <https://github.com/jmcnamara/XlsxWriter/issues/647>`_.

* Added the option to allow chart fonts to be rotated to 270 degrees
  to give a stacked orientation. See :ref:`chart_fonts`.
  Issue `#648 <https://github.com/jmcnamara/XlsxWriter/issues/648>`_.


Release 1.1.9 - August 19 2019
------------------------------

* Another fix for issues where zipfile.py raises "ZIP does not support
  timestamps before 1980" exception.
  Issue `#651 <https://github.com/jmcnamara/XlsxWriter/issues/651>`_.


Release 1.1.8 - May 5 2019
--------------------------

* Added ability to combine Doughnut and Pie charts.

* Added gauge chart example which is a combination of a Doughnut and a Pie
  chart. See :ref:`ex_chart_gauge`.


Release 1.1.7 - April 20 2019
-----------------------------

* Added docs on :ref:`object_position`.

* Added fix for sizing of cell comment boxes when they cross columns/rows that
  have size changes that occur after the comment is written.
  Issue `#403 <https://github.com/jmcnamara/XlsxWriter/issues/403>`_ and
  issue `#312 <https://github.com/jmcnamara/XlsxWriter/issues/312>`_.

* Added fix for the sizing of worksheet objects (images, charts, textboxes)
  when the underlying cell sizes have changed and the "object_position"
  parameter has been set to 1 "Move and size with cells". An additional mode 4
  has been added to simulate inserting the object in hidden rows.
  Issue `#618 <https://github.com/jmcnamara/XlsxWriter/issues/618>`_.

* Added object positioning for charts and textboxes, it was already supported
  for images. Note, the parameter is now called ``object_position``. The
  previous parameter name ``positioning`` is deprecated but still supported
  for images.
  Issue `#568 <https://github.com/jmcnamara/XlsxWriter/issues/568>`_.


Release 1.1.6 - April 7 2019
----------------------------

* Fixed issue where images that started in hidden rows/columns weren't placed
  correctly in the worksheet.
  Issue `#613 <https://github.com/jmcnamara/XlsxWriter/issues/613>`_.

* Fixed the mime-type reported by system ``file(1)``. The mime-type reported
  by "file --mime-type"/magic was incorrect for XlsxWriter files since it
  expected the ``[Content_types]`` to be the first file in the zip container.
  Issue `#614 <https://github.com/jmcnamara/XlsxWriter/issues/614>`_.


Release 1.1.5 - February 22 2019
--------------------------------

* 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
  XlsxWriter.


Release 1.1.4 - February 10 2019
--------------------------------

* Fix for issues where zipfile.py raises "ZIP does not support timestamps
  before 1980" exception.
  Issue `#535 <https://github.com/jmcnamara/XlsxWriter/issues/535>`_.


Release 1.1.3 - February 9 2019
-------------------------------

* Fix handling of ``'num_format': '0'`` in duplicate formats.
  Issue `#584 <https://github.com/jmcnamara/XlsxWriter/issues/584>`_.


Release 1.1.2 - October 20 2018
-------------------------------

* Fix for issue where ``in_memory`` files weren't compressed.
  Issue `#573 <https://github.com/jmcnamara/XlsxWriter/issues/573>`_.

* Fix ``write()`` so that it handles array formulas as documented.
  Issue `#418 <https://github.com/jmcnamara/XlsxWriter/issues/418>`_.

* Fix for issue with special characters in worksheet table functions.
  Issue `#442 <https://github.com/jmcnamara/XlsxWriter/issues/442>`_.

* Added warnings for input issues in :func:`write_rich_string()` such as blank
  strings, double formats or insufficient parameters.
  Issue `#425 <https://github.com/jmcnamara/XlsxWriter/issues/425>`_.


Release 1.1.1 - September 22 2018
---------------------------------

* Added comment font name and size options.
  Issue `#201 <https://github.com/jmcnamara/XlsxWriter/issues/201>`_.

* Fix for issue when using text boxes in the same workbook as a chartsheet.
  Issue `#420 <https://github.com/jmcnamara/XlsxWriter/issues/420>`_.


Release 1.1.0 - September 2 2018
--------------------------------

* Added functionality to align chart category axis labels. See the
  ``label_align`` property of the :func:`set_x_axis()` method.

* Added worksheet :func:`hide_row_col_headers()` method to turn off worksheet
  row and column headings.
  Issue `#480 <https://github.com/jmcnamara/XlsxWriter/issues/480>`_.

* Added the :func:`set_tab_ratio()` method to set the ratio between the
  worksheet tabs and the horizontal slider.
  Issue `#481 <https://github.com/jmcnamara/XlsxWriter/issues/481>`_.

* Fixed issue with icon conditional formats when the values were zero.
  Issue `#565 <https://github.com/jmcnamara/XlsxWriter/issues/565>`_.

Release 1.0.9 - August 27 2018
------------------------------

* Fix for issue with formulas quoted as strings in conditional formats,
  introduced in version 1.0.7.
  Issue `#564 <https://github.com/jmcnamara/XlsxWriter/issues/564>`_.


Release 1.0.8 - August 27 2018
------------------------------

* Added named exceptions to XlsxWriter. See :ref:`exceptions`.

* Removed the implicit :func:`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 :func:`close()`.

* Added border, fill, pattern and gradient formatting options to
  :func:`set_legend()`.
  Issue `#545 <https://github.com/jmcnamara/XlsxWriter/issues/545>`_.

* Added ``top_right`` position to :func:`set_legend()`.
  Issue `#537 <https://github.com/jmcnamara/XlsxWriter/issues/537>`_.


Release 1.0.7 - August 16 2018
------------------------------

* Fix for unicode type error in Python 3.
  Issue `#554 <https://github.com/jmcnamara/XlsxWriter/issues/554>`_.


Release 1.0.6 - August 15 2018
------------------------------

* Added some performance improvements.
  PR `#551 <https://github.com/jmcnamara/XlsxWriter/pull/551>`_.


Release 1.0.5 - May 19 2018
---------------------------

* Added example of how to subclass the Workbook and Worksheet objects. See
  :ref:`ex_inheritance1` and :ref:`ex_inheritance2`.

* Added support for WMF and EMF image formats to the Worksheet
  :func:`add_image` method.


Release 1.0.4 - April 14 2018
-----------------------------

* 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
  :func:`set_properties` ``created`` date is set.
  Pull request `#495 <https://github.com/jmcnamara/XlsxWriter/pull/495>`_.

* Fix for jpeg images that reported unknown height/width due to unusual SOF markers.
  Issue `#506 <https://github.com/jmcnamara/XlsxWriter/issues/506>`_.

* Added support for blanks in list autofilter.
  Issue `#505 <https://github.com/jmcnamara/XlsxWriter/issues/505>`_.


Release 1.0.3 - April 10 2018
-----------------------------

* Added Excel 2010 data bar features such as solid fills and control over the
  display of negative values. See :ref:`working_with_conditional_formats` and
  :ref:`ex_cond_format`.
  Feature request `#502 <https://github.com/jmcnamara/XlsxWriter/issues/502>`_.

* Fixed :func:`set_column` parameter names to match docs and other methods.
  Note, this is a backward incompatible change.
  Issue `#504 <https://github.com/jmcnamara/XlsxWriter/issues/504>`_.

* Fixed missing plotarea formatting in pie/doughnut charts.


Release 1.0.2 - October 14 2017
-------------------------------

* Fix for cases where the hyperlink style added in the previous release didn't
  work.
  Feature request `#455 <https://github.com/jmcnamara/XlsxWriter/issues/455>`_.


Release 1.0.1 - October 14 2017
-------------------------------

* Changed default :func:`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.
  Feature request `#455 <https://github.com/jmcnamara/XlsxWriter/issues/455>`_.


Release 1.0.0 - September 16 2017
---------------------------------

* Added icon sets to conditional formatting. See
  :ref:`working_with_conditional_formats` and :ref:`ex_cond_format`.
  Feature request `#387 <https://github.com/jmcnamara/XlsxWriter/issues/387>`_.


Release 0.9.9 - September 5 2017
--------------------------------

* Added ``stop_if_true`` parameter to conditional formatting.
  Feature request `#386 <https://github.com/jmcnamara/XlsxWriter/issues/386>`_.


Release 0.9.8 - July 1 2017
---------------------------

* Fixed issue where spurious deprecation warning was raised in ``-Werror`` mode.
  Issue `#451 <https://github.com/jmcnamara/XlsxWriter/issues/451>`_.


Release 0.9.7 - June 25 2017
----------------------------

* Minor bug and doc fixes.


Release 0.9.6 - Dec 26 2016
---------------------------

* Fix for table with data but without a header.
  Issue `#405 <https://github.com/jmcnamara/XlsxWriter/issues/405>`_.

* Add a warning when the number of series in a chart exceeds Excel's limit
  of 255.
  Issue `#399 <https://github.com/jmcnamara/XlsxWriter/issues/399>`_.


Release 0.9.5 - Dec 24 2016
---------------------------

* Fix for missing `remove_timezone` option in Chart class.
  PR from Thomas Arnhold
  `#404 <https://github.com/jmcnamara/XlsxWriter/pull/404>`_.


Release 0.9.4 - Dec 2 2016
--------------------------

* Added user definable removal of timezones in datetimes. See the
  :func:`Workbook` constructor option ``remove_timezone`` and :ref:`Timezone
  Handling in XlsxWriter <timezone_handling>`.
  Issue `#257 <https://github.com/jmcnamara/XlsxWriter/issues/257>`_.

* Fix duplicate header warning in :func:`add_table` when there is only one
  user defined header.
  Issue `#380 <https://github.com/jmcnamara/XlsxWriter/issues/380>`_.

* Fix for `center_across` property in :func:`add_format`.
  Issue `#381 <https://github.com/jmcnamara/XlsxWriter/issues/381>`_.


Release 0.9.3 - July 8 2016
---------------------------

* Added check to :func:`add_table` to prevent duplicate header names which
  leads to a corrupt Excel file.
  Issue `#362 <https://github.com/jmcnamara/XlsxWriter/issues/362>`_.


Release 0.9.2 - June 13 2016
----------------------------

* Added workbook :func:`set_size` method to set the workbook window size.


Release 0.9.1 - June 8 2016
---------------------------

* Added font support to chart :func:`set_table`.

* Documented used of font rotation in chart :ref:`data labels
  <chart_series_option_data_labels>`.
  Issue `#337 <https://github.com/jmcnamara/XlsxWriter/issues/337>`_.


Release 0.9.0 - June 7 2016
---------------------------

* Added :ref:`trendline properties <chart_series_option_trendline>`:
  ``intercept``, ``display_equation`` and ``display_r_squared``.
  Feature request `#357 <https://github.com/jmcnamara/XlsxWriter/issues/357>`_.


Release 0.8.9 - June 1 2016
---------------------------

* Fix for :func:`insert_image` issue when handling images with zero dpi.
  Issue `#356 <https://github.com/jmcnamara/XlsxWriter/issues/356>`_.


Release 0.8.8 - May 31 2016
---------------------------

* Added workbook :func:`set_custom_property` method to set custom document
  properties.
  Feature request `#355 <https://github.com/jmcnamara/XlsxWriter/issues/355>`_.


Release 0.8.7 - May 13 2016
---------------------------

* Fix for issue when inserting read-only images on Windows.
  Issue `#352 <https://github.com/jmcnamara/XlsxWriter/issues/352>`_.

* Added :func:`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.

Release 0.8.6 - April 27 2016
-----------------------------

* Fix for ``external:`` urls where the target/anchor contains spaces.
  Issue `#350 <https://github.com/jmcnamara/XlsxWriter/issues/350>`_.


Release 0.8.5 - April 17 2016
-----------------------------

* Added additional documentation on :ref:`ewx_pandas` and
  :ref:`pandas_examples`.

* Added fix for :func:`set_center_across` format method.


Release 0.8.4 - January 16 2016
-------------------------------

* Fix for :func:`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.
  Issue `#330 <https://github.com/jmcnamara/XlsxWriter/issues/330>`_.


Release 0.8.3 - January 14 2016
-------------------------------

* Added options to configure chart axis tick placement. See :func:`set_x_axis()`.


Release 0.8.2 - January 13 2016
-------------------------------

* Added transparency option to solid fill colors in chart areas
  (:ref:`chart_formatting_fill`).
  Feature request `#298 <https://github.com/jmcnamara/XlsxWriter/issues/298>`_.


Release 0.8.1 - January 12 2016
-------------------------------

* Added option to set chart tick interval.
  Feature request `#251 <https://github.com/jmcnamara/XlsxWriter/issues/251>`_.


Release 0.8.0 - January 10 2016
-------------------------------

* Added additional documentation on :ref:`working_with_formulas`.


Release 0.7.9 - January 9 2016
------------------------------

* Added chart pattern fills, see :ref:`chart_formatting_pattern` and
  :ref:`ex_chart_pattern`.
  Feature request `#268 <https://github.com/jmcnamara/XlsxWriter/issues/268>`_.


Release 0.7.8 - January 6 2016
------------------------------

* Add checks for valid and non-duplicate worksheet table names.
  Issue `#319 <https://github.com/jmcnamara/XlsxWriter/issues/319>`_.


Release 0.7.7 - October 19 2015
-------------------------------

* Added support for table header formatting and a fix for wrapped lines in the
  header.
  Feature request `#287 <https://github.com/jmcnamara/XlsxWriter/issues/287>`_.


Release 0.7.6 - October 7 2015
------------------------------

* Fix for images with negative offsets.
  Issue `#273 <https://github.com/jmcnamara/XlsxWriter/issues/273>`_.


Release 0.7.5 - October 4 2015
------------------------------

* 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 request `#306 <https://github.com/jmcnamara/XlsxWriter/issues/306>`_.


Release 0.7.4 - September 29 2015
---------------------------------

* 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 <https://github.com/jmcnamara/XlsxWriter/issues/278>`_.


Release 0.7.3 - May 7 2015
--------------------------

* Added documentation on :ref:`ewx_pandas` and :ref:`pandas_examples`.

* Added support for ``with`` context manager.
  Pull request `#239 <https://github.com/jmcnamara/XlsxWriter/pull/239>`_.


Release 0.7.2 - March 29 2015
-----------------------------

* Added support for textboxes in worksheets. See :func:`insert_textbox()` and
  :ref:`working_with_textboxes` for more details.
  Feature request `#107 <https://github.com/jmcnamara/XlsxWriter/issues/107>`_.


Release 0.7.1 - March 23 2015
-----------------------------

* Added gradient fills to chart objects such as the plot area of columns. See
  :ref:`chart_formatting_gradient` and :ref:`ex_chart_gradient`.
  Feature request `#228 <https://github.com/jmcnamara/XlsxWriter/issues/228>`_.


Release 0.7.0 - March 21 2015
-----------------------------

* Added support for display units in chart axes. See :func:`set_x_axis()`.
  Feature request `#185 <https://github.com/jmcnamara/XlsxWriter/issues/185>`_.

* Added ``nan_inf_to_errors`` :func:`Workbook` constructor option to allow
  mapping of Python `nan/inf` value to Excel error formulas in ``write()`` and
  ``write_number()``.
  Feature request `#150 <https://github.com/jmcnamara/XlsxWriter/issues/150>`_.


Release 0.6.9 - March 19 2015
-----------------------------

* Added support for clustered category charts. See :ref:`ex_chart_clustered`
  for details.
  Feature request `#180 <https://github.com/jmcnamara/XlsxWriter/issues/180>`_.

* Refactored the :ref:`format` and formatting documentation.

Release 0.6.8 - March 17 2015
-----------------------------

* Added option to combine two different chart types. See the
  :ref:`chart_combined_charts` section and :ref:`ex_chart_combined` and
  :ref:`ex_chart_pareto` for more details.
  Feature request `#72 <https://github.com/jmcnamara/XlsxWriter/issues/72>`_.


Release 0.6.7 - March 1 2015
----------------------------

* Added option to add function value in worksheet :func:`add_table`.
  Feature request `#216 <https://github.com/jmcnamara/XlsxWriter/issues/216>`_.

* Fix for A1 row/col numbers below lower bound.
  Issue `#212 <https://github.com/jmcnamara/XlsxWriter/issues/212>`_.


Release 0.6.6 - January 16 2015
-------------------------------

* Fix for incorrect shebang line in `vba_extract.py` packaged in wheel.
  Issue `#211 <https://github.com/jmcnamara/XlsxWriter/issues/211>`_.

* Added docs and example for diagonal cell border.
  See :ref:`ex_diagonal_border`.


Release 0.6.5 - December 31 2014
--------------------------------

* Added worksheet quoting for chart names in lists.
  Issue `#205 <https://github.com/jmcnamara/XlsxWriter/issues/205>`_.

* Added docs on how to find and set VBA codenames.
  Issue `#202 <https://github.com/jmcnamara/XlsxWriter/issues/202>`_.

* Fix Python3 issue with unused charts.
  Issue `#200 <https://github.com/jmcnamara/XlsxWriter/issues/200>`_.

* Enabled warning for missing category is scatter chart.
  Issue `#197 <https://github.com/jmcnamara/XlsxWriter/issues/197>`_.

* Fix for upper chart style limit. Increased the chart style limit from
  42 to the correct 48.
  Issue `#192 <https://github.com/jmcnamara/XlsxWriter/issues/192>`_.

* Raise warning if a chart is inserted more than once.
  Issue `#184 <https://github.com/jmcnamara/XlsxWriter/issues/184>`_.


Release 0.6.4 - November 15 2014
--------------------------------

* Fix for issue where fonts applied to data labels raised exception.
  Issue `#179 <https://github.com/jmcnamara/XlsxWriter/issues/179>`_.

* Added option to allow explicit text axis types for charts, similar to date
  axes.
  Feature request `#178 <https://github.com/jmcnamara/XlsxWriter/issues/178>`_.

* Fix for issue where the bar/column chart gap and overlap weren't
  applied to the secondary axis.
  Issue `#177 <https://github.com/jmcnamara/XlsxWriter/issues/177>`_.


Release 0.6.3 - November 6 2014
-------------------------------

* Added support for adding VBA macros to workbooks. See :ref:`macros`.
  Feature request `#126 <https://github.com/jmcnamara/XlsxWriter/issues/126>`_.


Release 0.6.2 - November 1 2014
-------------------------------

* Added chart axis line and fill properties.
  Feature request `#88 <https://github.com/jmcnamara/XlsxWriter/issues/88>`_.


Release 0.6.1 - October 29 2014
-------------------------------

* Added chart specific handling of data label positions since not all positions
  are available for all chart types.
  Issue `#170 <https://github.com/jmcnamara/XlsxWriter/issues/170>`_.

* Added number formatting
  (issue `#130 <https://github.com/jmcnamara/XlsxWriter/issues/130>`_),
  font handling, separator and legend key for data labels.
  See :ref:`chart_series_option_data_labels`

* Fix for non-quoted worksheet names containing spaces and non-alphanumeric
  characters.
  Issue `#167 <https://github.com/jmcnamara/XlsxWriter/issues/167>`_.


Release 0.6.0 - October 15 2014
-------------------------------

* Added option to add images to headers and footers. See
  :ref:`ex_headers_footers`.
  Feature request `#133 <https://github.com/jmcnamara/XlsxWriter/issues/133>`_.

* Fixed issue where non 96dpi images weren't scaled properly in Excel.
  Issue `#164 <https://github.com/jmcnamara/XlsxWriter/issues/164>`_.

* Added option to not scale header/footer with page. See :func:`set_header`.
  Feature request `#134 <https://github.com/jmcnamara/XlsxWriter/issues/134>`_.


Release 0.5.9 - October 11 2014
-------------------------------

* Removed ``egg_base`` requirement from ``setup.cfg`` which was preventing
  installation on Windows.
  Issue `#162 <https://github.com/jmcnamara/XlsxWriter/issues/162>`_.

* Fix for issue where X axis title formula was overwritten by the Y axis
  title.
  Issue `#161 <https://github.com/jmcnamara/XlsxWriter/issues/161>`_.


Release 0.5.8 - September 28 2014
---------------------------------

* Added support for Doughnut charts.
  Feature request `#157 <https://github.com/jmcnamara/XlsxWriter/issues/157>`_.

* Added support for wheel packages.
  Feature request `#156 <https://github.com/jmcnamara/XlsxWriter/issues/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 <https://github.com/jmcnamara/XlsxWriter/issues/153>`_.


Release 0.5.7 - August 13 2014
------------------------------

* Added support for :func:`insert_image` images from byte streams to allow
  images from URLs and other sources.
  Feature request `#118 <https://github.com/jmcnamara/XlsxWriter/issues/118>`_.

* Added :func:`write_datetime` support for datetime.timedelta.
  Feature request `#128 <https://github.com/jmcnamara/XlsxWriter/issues/128>`_.


Release 0.5.6 - July 22 2014
----------------------------

* Fix for spurious exception message when :func:`close()` isn't used.
  Issue `#131 <https://github.com/jmcnamara/XlsxWriter/issues/131>`_.

* Fix for formula string values that look like numbers.
  Issue `#122 <https://github.com/jmcnamara/XlsxWriter/issues/122>`_.

* Clarify :func:`print_area()` documentation for complete row/column ranges.
  Issue `#139 <https://github.com/jmcnamara/XlsxWriter/issues/139>`_.

* Fix for unicode strings in data validation lists.
  Issue `#135 <https://github.com/jmcnamara/XlsxWriter/issues/135>`_.


Release 0.5.5 - May 6 2014
--------------------------

* Fix for incorrect chart offsets in :func:`insert_chart()` and
  :func:`set_size()`.

Release 0.5.4 - May 4 2014
--------------------------

* Added image positioning option to :func:`insert_image` to control how
  images are moved in relation to surrounding cells.
  Feature request `#117 <https://github.com/jmcnamara/XlsxWriter/issues/117>`_.

* Fix for chart ``error_bar`` exceptions.
  Issue `#115 <https://github.com/jmcnamara/XlsxWriter/issues/115>`_.

* Added clearer reporting of nested exceptions in ``write()`` methods.
  Issue `#108 <https://github.com/jmcnamara/XlsxWriter/pull/108>`_.

* Added support for ``inside_base`` data label position in charts.

Release 0.5.3 - February 20 2014
--------------------------------

* Added checks and warnings for data validation limits.
  Issue `#89 <https://github.com/jmcnamara/XlsxWriter/issues/89>`_.

* Added option to add hyperlinks to images. Thanks to Paul Tax.

* Added Python 3 Http server example. Thanks to Krystian Rosinski.

* Added :func:`set_calc_mode` method to control automatic calculation of
  formulas when worksheet is opened. Thanks to Chris Tompkinson.

* Added :func:`use_zip64` method to allow ZIP64 extensions when writing
  very large files.

* Fix to handle '0' and other number like strings as number formats.
  Issue `#103 <https://github.com/jmcnamara/XlsxWriter/issues/103>`_.

* Fix for missing images in ``in_memory`` mode.
  Issue `#102 <https://github.com/jmcnamara/XlsxWriter/issues/102>`_.


Release 0.5.2 - December 31 2013
--------------------------------

* Added date axis handling to charts. See :ref:`ex_chart_date_axis`.
  Feature request `#73 <https://github.com/jmcnamara/XlsxWriter/issues/73>`_.

* Added support for non-contiguous chart ranges.
  Feature request `#44 <https://github.com/jmcnamara/XlsxWriter/issues/44>`_.

* Fix for low byte and control characters in strings.
  Issue `#86 <https://github.com/jmcnamara/XlsxWriter/issues/86>`_.

* Fix for chart titles with exclamation mark.
  Issue `#83 <https://github.com/jmcnamara/XlsxWriter/issues/83>`_.

* Fix to remove duplicate :func:`set_column` entries.
  Issue `#82 <https://github.com/jmcnamara/XlsxWriter/issues/82>`_.


Release 0.5.1 - December 2 2013
-------------------------------

* Added interval unit option for category axes.
  Feature request `#69 <https://github.com/jmcnamara/XlsxWriter/issues/69>`_.

* Fix for axis name font rotation.

* Fix for several minor issues with Pie chart legends.


Release 0.5.0 - November 17 2013
--------------------------------

* Added :ref:`Chartsheets <Chartsheet>` to allow single worksheet charts.
  Feature request `#10 <https://github.com/jmcnamara/XlsxWriter/issues/10>`_.


Release 0.4.9 - November 17 2013
--------------------------------

* Added :ref:`chart object positioning and sizing <chart_layout>` to allow
  positioning of plotarea, legend, title and axis names.
  Feature request `#66 <https://github.com/jmcnamara/XlsxWriter/issues/66>`_.

* Added :func:`set_title()` ``none`` option to turn off automatic titles.

* Improved :func:`define_name()` name validation.

* Fix to prevent modification of user parameters in
  :func:`conditional_format()`.


Release 0.4.8 - November 13 2013
--------------------------------

* Added ``in_memory`` :func:`Workbook` constructor option to allow XlsxWriter
  to work on Google App Engine.
  Feature request `#28 <https://github.com/jmcnamara/XlsxWriter/issues/28>`_.


Release 0.4.7 - November 9 2013
-------------------------------

* Added fix for markers on non-marker scatter charts.
  Issue `#62 <https://github.com/jmcnamara/XlsxWriter/issues/62>`_.

* Added custom error bar option. Thanks to input from Alex Birmingham.

* Changed Html docs to Bootstrap theme.

* Added :ref:`ex_merge_rich`.


Release 0.4.6 - October 23 2013
-------------------------------

* Added font formatting to chart legends.


Release 0.4.5 - October 21 2013
-------------------------------

* Added ``position_axis`` chart axis option.

* Added optional list handling for chart names.


Release 0.4.4 - October 16 2013
-------------------------------

* Documented use of :ref:`cell utility <cell_utility>` functions.

* Fix for tables added in non-sequential order. Closes
  `#51 <https://github.com/jmcnamara/XlsxWriter/issues/51>`_ reported by
  calfzhou.


Release 0.4.3 - September 12 2013
---------------------------------

* Fix for comments overlying columns with non-default width.
  Issue `#45 <https://github.com/jmcnamara/XlsxWriter/issues/45>`_.


Release 0.4.2 - August 30 2013
------------------------------

* Added a default blue underline hyperlink format for :func:`write_url()`.

* Added :func:`Workbook` constructor options ``strings_to_formulas`` and
  ``strings_to_urls`` to override default conversion of strings in write().


Release 0.4.1 - August 28 2013
------------------------------

* Fix for charts and images that cross rows and columns that are hidden or
  formatted but which don't have size changes. Issue
  `#42 <https://github.com/jmcnamara/XlsxWriter/issues/42>`_ reported by
  Kristian Stobbe.


Release 0.4.0 - August 26 2013
------------------------------

* Added more generic support for JPEG files. Issue
  `#40 <https://github.com/jmcnamara/XlsxWriter/issues/40>`_ reported by Simon
  Breuss.

* Fix for harmless Python 3 installation warning. Issue
  `#41 <https://github.com/jmcnamara/XlsxWriter/issues/41>`_ reported by James
  Reeves.


Release 0.3.9 - August 24 2013
------------------------------

* Added fix for minor issue with :func:`insert_image` for images that extend
  over several cells.

* Added fix to ensure formula calculation on load regardless of Excel version.


Release 0.3.8 - August 23 2013
------------------------------

* Added handling for Decimal(), Fraction() and other float types to the
  :func:`write()` function.

* Added Python 2.5 and Jython support. Thanks to Jonas Diemer for the patch.


Release 0.3.7 - August 16 2013
------------------------------

* Added :func:`write_boolean()` function to write Excel boolean values. Feature request
  `#37 <https://github.com/jmcnamara/XlsxWriter/issues/37>`_. Also added
  explicit handling of Python bool values to the :func:`write()` function.

* Changed :func:`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.


Release 0.3.6 - July 26 2013
-----------------------------

* Simplified import based on a suggestion from John Yeung. Feature request
  `#26 <https://github.com/jmcnamara/XlsxWriter/issues/26>`_.

* Fix for NAN/INF converted to invalid numbers in write(). Issue
  `#30 <https://github.com/jmcnamara/XlsxWriter/issues/30>`_.

* Added :func:`Workbook` constructor option ``strings_to_numbers`` to
  override default conversion of number strings to numbers in write().

* Added :func:`Workbook` constructor option ``default_date_format`` to
  allow a default date format string to be set. Feature request
  `#5 <https://github.com/jmcnamara/XlsxWriter/issues/5>`_.


Release 0.3.5 - June 28 2013
-----------------------------

* Reverted back to using codecs for file encoding (versions <= 0.3.1) to avoid
  numerous UTF-8 issues in Python2/3.


Release 0.3.4 - June 27 2013
-----------------------------

* Added Chart line smoothing option. Thanks to Dieter Vandenbussche.

* Added Http Server example (:ref:`ex_http_server`). Thanks to
  Alexander Afanasiev.

* Fixed inaccurate column width calculation. Closes
  `#27 <https://github.com/jmcnamara/XlsxWriter/issues/27>`_. Thanks to
  John Yeung.

* Added chart axis font rotation.


Release 0.3.3 - June 10 2013
-----------------------------

* Minor packaging fixes
  `#14 <https://github.com/jmcnamara/XlsxWriter/issues/14>`_ and
  `#19 <https://github.com/jmcnamara/XlsxWriter/issues/19>`_.

* Fixed explicit UTF-8 file encoding for Python 3.
  PR from Alexandr Shadchin,
  `#15 <https://github.com/jmcnamara/XlsxWriter/pull/15>`_.

* Fixed invalid string formatting resulted in misleading stack trace.
  PR from Andrei Korostelev,
  `#21 <https://github.com/jmcnamara/XlsxWriter/pull/21>`_.


Release 0.3.2 - May 1 2013
-----------------------------

* Speed optimizations. The module is now 10-15% faster on average.


Release 0.3.1 - April 27 2013
-----------------------------

* Added chart support. See the :ref:`chart_class`, :ref:`working_with_charts`
  and :ref:`chart_examples`.


Release 0.3.0 - April 7 2013
-----------------------------

* Added worksheet sparklines. See :ref:`sparklines`, :ref:`ex_sparklines1` and
  :ref:`ex_sparklines2`


Release 0.2.9 - April 7 2013
-----------------------------

* Added worksheet tables. See :ref:`tables` and :ref:`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.


Release 0.2.8 - April 4 2013
-----------------------------

* Added worksheet outlines and grouping. See :ref:`outlines`.


Release 0.2.7 - April 3 2013
-----------------------------

* Added :func:`set_default_row` method. See :ref:`ex_hide_row_col`.

* Added hide_row_col.py, hide_sheet.py and text_indent.py examples.


Release 0.2.6 - April 1 2013
-----------------------------

* Added :func:`freeze_panes` and :func:`split_panes` methods.
  See :ref:`ex_panes` .

* Added :func:`set_selection` method to select worksheet cell or range of
  cells.


Release 0.2.5 - April 1 2013
-----------------------------

* Added additional :func:`Workbook` parameters ``'tmpdir'`` and
  ``'date_1904'``.


Release 0.2.4 - March 31 2013
-----------------------------

* Added :func:`Workbook` ``'constant_memory'`` constructor property to
  minimize memory usage when writing large files. See :ref:`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.


Release 0.2.3 - March 27 2013
-----------------------------

* Fixed bug that was killing performance for medium sized files. The module
  is now 10x faster than previous versions. Reported by John Yeung.


Release 0.2.2 - March 27 2013
-----------------------------

* Added worksheet data validation options. See the :func:`data_validation`
  method, :ref:`working_with_data_validation` and :ref:`ex_data_valid`.

* There are now over 600 unit tests including more than 130 tests that
  compare against the output of Excel.


Release 0.2.1 - March 25 2013
-----------------------------

* Added support for datetime.datetime, datetime.date and datetime.time
  to the :func:`write_datetime` method. GitHub issue
  `#3 <https://github.com/jmcnamara/XlsxWriter/issues/3>`_.
  Thanks to Eduardo (eazb) and Josh English for the prompt.


Release 0.2.0 - March 24 2013
-----------------------------

* Added conditional formatting. See the :func:`conditional_format` method,
  :ref:`working_with_conditional_formats` and :ref:`ex_cond_format`.


Release 0.1.9 - March 19 2013
-----------------------------

* Added Python 2.6 support. All tests now pass in the following versions:

    * Python 2.6
    * Python 2.7.2
    * Python 2.7.3
    * Python 3.1
    * Python 3.2
    * Python 3.3.0


Release 0.1.8 - March 18 2013
-----------------------------

* Fixed Python 3 support.


Release 0.1.7 - March 18 2013
-----------------------------

* Added the option to write cell comments to a worksheet. See
  :func:`write_comment` and :ref:`cell_comments`.


Release 0.1.6 - March 17 2013
-----------------------------

* Added :func:`insert_image` worksheet method to support inserting PNG and
  JPEG images into a worksheet. See also the example program
  :ref:`ex_insert_image`.

* There are now over 500 unit tests including more than 100 tests that
  compare against the output of Excel.


Release 0.1.5 - March 10 2013
-----------------------------

* Added the :func:`write_rich_string` worksheet method to allow writing of
  text with multiple formats to a cell. Also added example program:
  :ref:`ex_rich_strings`.

* Added the :func:`hide` worksheet method to hide worksheets.

* Added the :func:`set_first_sheet()` worksheet method.


Release 0.1.4 - March 8 2013
----------------------------

* Added the :func:`protect` worksheet method to allow protection of cells
  from editing. Also added example program: :ref:`ex_protection`.


Release 0.1.3 - March 7 2013
----------------------------

* Added worksheet methods:

    * :func:`set_zoom` for setting worksheet zoom levels.
    * :func:`right_to_left` for middle eastern versions of Excel.
    * :func:`hide_zero` for hiding zero values in cells.
    * :func:`set_tab_color` for setting the worksheet tab color.


Release 0.1.2 - March 6 2013
----------------------------

* Added autofilters. See :ref:`working_with_autofilters` for more details.

* Added the :func:`write_row` and :func:`write_column` worksheet methods.


Release 0.1.1 - March 3 2013
----------------------------

* Added the :func:`write_url` worksheet method for writing hyperlinks to
  a worksheet.


Release 0.1.0 - February 28 2013
--------------------------------

* Added the :func:`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

Release 0.0.9 - February 27 2013
--------------------------------

* Added the :func:`define_name` method to create defined names and ranges
  in a workbook or worksheet.

* Added the :func:`worksheets` method as an accessor for the worksheets in a
  workbook.


Release 0.0.8 - February 26 2013
--------------------------------

* Added the :func:`merge_range` method to merge worksheet cells.


Release 0.0.7 - February 25 2013
--------------------------------

* Added final page setup methods to complete the page setup section.

    * :func:`print_area`
    * :func:`fit_to_pages`
    * :func:`set_start_page`
    * :func:`set_print_scale`
    * :func:`set_h_pagebreaks`
    * :func:`set_v_pagebreaks`


Release 0.0.6 - February 22 2013
--------------------------------

* Added page setup method.

    * :func:`print_row_col_headers`


Release 0.0.5 - February 21 2013
--------------------------------

* Added page setup methods.

    * :func:`repeat_rows`
    * :func:`repeat_columns`


Release 0.0.4 - February 20 2013
--------------------------------

* 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.

    * :func:`center_horizontally`
    * :func:`center_vertically`
    * :func:`set_header`
    * :func:`set_footer`
    * :func:`hide_gridlines`


Release 0.0.3 - February 19 2013
--------------------------------

* Added page setup method.

    * :func:`set_margins`


Release 0.0.2 - February 18 2013
--------------------------------

* Added page setup methods.

    * :func:`set_landscape`
    * :func:`set_portrait`
    * :func:`set_page_view`
    * :func:`set_paper`
    * :func:`print_across`


Release 0.0.1 - February 17 2013
--------------------------------

* First public release.
