.. _ewx:

Comparison with Excel::Writer::XLSX
===================================

The XlsxWriter module is a port of the Perl
`Excel::Writer::XLSX <http://search.cpan.org/~jmcnamara/Excel-Writer-XLSX/>`_
module with more Pythonic interfaces.

XlsxWriter supports almost all of Excel::Writer::XLSX's features apart from
those noted in the tables below.


Workbook
--------

+--------------------------+------------+---------------------+
| Workbook Methods         | XlsxWriter | Excel::Writer::XLSX |
+==========================+============+=====================+
| :func:`add_worksheet()`  | Yes        | Yes                 |
+--------------------------+------------+---------------------+
| :func:`add_format()`     | Yes        | Yes                 |
+--------------------------+------------+---------------------+
| :func:`add_chart()`      | Yes        | Yes                 |
+--------------------------+------------+---------------------+
| :func:`close()`          | Yes        | Yes                 |
+--------------------------+------------+---------------------+
| :func:`set_properties()` | Yes        | Yes                 |
+--------------------------+------------+---------------------+
| :func:`define_name()`    | Yes        | Yes                 |
+--------------------------+------------+---------------------+
| :func:`worksheets()`     | Yes        | Yes                 |
+--------------------------+------------+---------------------+
| add_shape()              | No (1)     | Yes                 |
+--------------------------+------------+---------------------+
| add_vba_project()        | No (1)     | Yes                 |
+--------------------------+------------+---------------------+
| set_tempdir()            | Yes (2)    | Yes                 |
+--------------------------+------------+---------------------+
| set_1904()               | Yes (2)    | Yes                 |
+--------------------------+------------+---------------------+
| set_optimization()       | Yes (2)    | Yes                 |
+--------------------------+------------+---------------------+
| set_custom_color()       | Yes (3)    | Yes                 |
+--------------------------+------------+---------------------+

#. These features are experimental and probably won't be ported.
#. This is a constructor parameter in XlsxWriter.
#. Not required in XlsxWriter. Full RGB colours are supported.


Worksheet
---------

+-------------------------------+------------+---------------------+
| Worksheet Methods             | XlsxWriter | Excel::Writer::XLSX |
+===============================+============+=====================+
| :func:`write()`               | Yes        | Yes                 |
+-------------------------------+------------+---------------------+
| :func:`write_number()`        | Yes        | Yes                 |
+-------------------------------+------------+---------------------+
| :func:`write_string()`        | Yes        | Yes                 |
+-------------------------------+------------+---------------------+
| :func:`write_rich_string()`   | Yes        | Yes                 |
+-------------------------------+------------+---------------------+
| :func:`write_blank()`         | Yes        | Yes                 |
+-------------------------------+------------+---------------------+
| :func:`write_row()`           | Yes        | Yes                 |
+-------------------------------+------------+---------------------+
| :func:`write_column()`        | Yes        | Yes                 |
+-------------------------------+------------+---------------------+
| :func:`write_datetime()`      | Yes        | Yes                 |
+-------------------------------+------------+---------------------+
| :func:`write_url()`           | Yes        | Yes                 |
+-------------------------------+------------+---------------------+
| :func:`write_formula()`       | Yes        | Yes                 |
+-------------------------------+------------+---------------------+
| :func:`write_array_formula()` | Yes        | Yes                 |
+-------------------------------+------------+---------------------+
| :func:`write_comment()`       | Yes        | Yes                 |
+-------------------------------+------------+---------------------+
| :func:`show_comments()`       | Yes        | Yes                 |
+-------------------------------+------------+---------------------+
| :func:`set_comments_author()` | Yes        | Yes                 |
+-------------------------------+------------+---------------------+
| :func:`insert_image()`        | Yes        | Yes                 |
+-------------------------------+------------+---------------------+
| :func:`insert_chart()`        | Yes        | Yes                 |
+-------------------------------+------------+---------------------+
| :func:`data_validation()`     | Yes        | Yes                 |
+-------------------------------+------------+---------------------+
| :func:`conditional_format()`  | Yes        | Yes                 |
+-------------------------------+------------+---------------------+
| :func:`add_sparkline()`       | Yes        | Yes                 |
+-------------------------------+------------+---------------------+
| :func:`add_table()`           | Yes        | Yes                 |
+-------------------------------+------------+---------------------+
| :func:`get_name()`            | Yes        | Yes                 |
+-------------------------------+------------+---------------------+
| :func:`activate()`            | Yes        | Yes                 |
+-------------------------------+------------+---------------------+
| :func:`select()`              | Yes        | Yes                 |
+-------------------------------+------------+---------------------+
| :func:`hide()`                | Yes        | Yes                 |
+-------------------------------+------------+---------------------+
| :func:`set_first_sheet()`     | Yes        | Yes                 |
+-------------------------------+------------+---------------------+
| :func:`protect()`             | Yes        | Yes                 |
+-------------------------------+------------+---------------------+
| :func:`set_selection()`       | Yes        | Yes                 |
+-------------------------------+------------+---------------------+
| :func:`set_row()`             | Yes        | Yes                 |
+-------------------------------+------------+---------------------+
| :func:`set_column()`          | Yes        | Yes                 |
+-------------------------------+------------+---------------------+
| :func:`set_default_row()`     | Yes        | Yes                 |
+-------------------------------+------------+---------------------+
| :func:`outline_settings()`    | Yes        | Yes                 |
+-------------------------------+------------+---------------------+
| :func:`freeze_panes()`        | Yes        | Yes                 |
+-------------------------------+------------+---------------------+
| :func:`split_panes()`         | Yes        | Yes                 |
+-------------------------------+------------+---------------------+
| :func:`merge_range()`         | Yes        | Yes                 |
+-------------------------------+------------+---------------------+
| :func:`set_zoom()`            | Yes        | Yes                 |
+-------------------------------+------------+---------------------+
| :func:`right_to_left()`       | Yes        | Yes                 |
+-------------------------------+------------+---------------------+
| :func:`hide_zero()`           | Yes        | Yes                 |
+-------------------------------+------------+---------------------+
| :func:`set_tab_color()`       | Yes        | Yes                 |
+-------------------------------+------------+---------------------+
| :func:`autofilter()`          | Yes        | Yes                 |
+-------------------------------+------------+---------------------+
| :func:`filter_column()`       | Yes        | Yes                 |
+-------------------------------+------------+---------------------+
| :func:`filter_column_list()`  | Yes        | Yes                 |
+-------------------------------+------------+---------------------+
| keep_leading_zeros()          | No (1)     | Yes                 |
+-------------------------------+------------+---------------------+
| add_write_handler()           | No (1)     | Yes                 |
+-------------------------------+------------+---------------------+
| merge_range_type()            | No (2)     | Yes                 |
+-------------------------------+------------+---------------------+

#. These methods are syntactic sugar and can be handled using the standard
   API. They probably won't be ported.
#. Not required in XlsxWriter. The same functionality is available via
   :func:`merge_range()`.


Page Setup
----------

+---------------------------------+------------+---------------------+
| Page Set-up Methods             | XlsxWriter | Excel::Writer::XLSX |
+=================================+============+=====================+
| :func:`set_landscape()`         | Yes        | Yes                 |
+---------------------------------+------------+---------------------+
| :func:`set_portrait()`          | Yes        | Yes                 |
+---------------------------------+------------+---------------------+
| :func:`set_page_view()`         | Yes        | Yes                 |
+---------------------------------+------------+---------------------+
| :func:`set_paper()`             | Yes        | Yes                 |
+---------------------------------+------------+---------------------+
| :func:`center_horizontally()`   | Yes        | Yes                 |
+---------------------------------+------------+---------------------+
| :func:`center_vertically()`     | Yes        | Yes                 |
+---------------------------------+------------+---------------------+
| :func:`set_margins()`           | Yes        | Yes                 |
+---------------------------------+------------+---------------------+
| :func:`set_header()`            | Yes        | Yes                 |
+---------------------------------+------------+---------------------+
| :func:`set_footer()`            | Yes        | Yes                 |
+---------------------------------+------------+---------------------+
| :func:`repeat_rows()`           | Yes        | Yes                 |
+---------------------------------+------------+---------------------+
| :func:`repeat_columns()`        | Yes        | Yes                 |
+---------------------------------+------------+---------------------+
| :func:`hide_gridlines()`        | Yes        | Yes                 |
+---------------------------------+------------+---------------------+
| :func:`print_row_col_headers()` | Yes        | Yes                 |
+---------------------------------+------------+---------------------+
| :func:`print_area()`            | Yes        | Yes                 |
+---------------------------------+------------+---------------------+
| :func:`print_across()`          | Yes        | Yes                 |
+---------------------------------+------------+---------------------+
| :func:`fit_to_pages()`          | Yes        | Yes                 |
+---------------------------------+------------+---------------------+
| :func:`set_start_page()`        | Yes        | Yes                 |
+---------------------------------+------------+---------------------+
| :func:`set_print_scale()`       | Yes        | Yes                 |
+---------------------------------+------------+---------------------+
| :func:`set_h_pagebreaks()`      | Yes        | Yes                 |
+---------------------------------+------------+---------------------+
| :func:`set_v_pagebreaks()`      | Yes        | Yes                 |
+---------------------------------+------------+---------------------+

Format
------

+------------------------------+------------+---------------------+
| Format Methods               | XlsxWriter | Excel::Writer::XLSX |
+==============================+============+=====================+
| :func:`set_font_name()`      | Yes        | Yes                 |
+------------------------------+------------+---------------------+
| :func:`set_font_size()`      | Yes        | Yes                 |
+------------------------------+------------+---------------------+
| :func:`set_font_color()`     | Yes        | Yes                 |
+------------------------------+------------+---------------------+
| :func:`set_bold()`           | Yes        | Yes                 |
+------------------------------+------------+---------------------+
| :func:`set_italic()`         | Yes        | Yes                 |
+------------------------------+------------+---------------------+
| :func:`set_underline()`      | Yes        | Yes                 |
+------------------------------+------------+---------------------+
| :func:`set_font_strikeout()` | Yes        | Yes                 |
+------------------------------+------------+---------------------+
| :func:`set_font_script()`    | Yes        | Yes                 |
+------------------------------+------------+---------------------+
| :func:`set_num_format()`     | Yes        | Yes                 |
+------------------------------+------------+---------------------+
| :func:`set_locked()`         | Yes        | Yes                 |
+------------------------------+------------+---------------------+
| :func:`set_hidden()`         | Yes        | Yes                 |
+------------------------------+------------+---------------------+
| :func:`set_align()`          | Yes        | Yes                 |
+------------------------------+------------+---------------------+
| :func:`set_rotation()`       | Yes        | Yes                 |
+------------------------------+------------+---------------------+
| :func:`set_text_wrap()`      | Yes        | Yes                 |
+------------------------------+------------+---------------------+
| :func:`set_text_justlast()`  | Yes        | Yes                 |
+------------------------------+------------+---------------------+
| :func:`set_center_across()`  | Yes        | Yes                 |
+------------------------------+------------+---------------------+
| :func:`set_indent()`         | Yes        | Yes                 |
+------------------------------+------------+---------------------+
| :func:`set_shrink()`         | Yes        | Yes                 |
+------------------------------+------------+---------------------+
| :func:`set_pattern()`        | Yes        | Yes                 |
+------------------------------+------------+---------------------+
| :func:`set_bg_color()`       | Yes        | Yes                 |
+------------------------------+------------+---------------------+
| :func:`set_fg_color()`       | Yes        | Yes                 |
+------------------------------+------------+---------------------+
| :func:`set_border()`         | Yes        | Yes                 |
+------------------------------+------------+---------------------+
| :func:`set_bottom()`         | Yes        | Yes                 |
+------------------------------+------------+---------------------+
| :func:`set_top()`            | Yes        | Yes                 |
+------------------------------+------------+---------------------+
| :func:`set_left()`           | Yes        | Yes                 |
+------------------------------+------------+---------------------+
| :func:`set_right()`          | Yes        | Yes                 |
+------------------------------+------------+---------------------+
| :func:`set_border_color()`   | Yes        | Yes                 |
+------------------------------+------------+---------------------+
| :func:`set_bottom_color()`   | Yes        | Yes                 |
+------------------------------+------------+---------------------+
| :func:`set_top_color()`      | Yes        | Yes                 |
+------------------------------+------------+---------------------+
| :func:`set_left_color()`     | Yes        | Yes                 |
+------------------------------+------------+---------------------+
| :func:`set_right_color()`    | Yes        | Yes                 |
+------------------------------+------------+---------------------+


