Creating Excel Files With Python

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 16

Creating Excel files with Python and

XlsxWriter
Release 1.4.0

John McNamara

April 23, 2021


CONTENTS

1 Introduction 3

2 Getting Started with XlsxWriter 5


2.1 Installing XlsxWriter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.2 Running a sample program . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.3 Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

3 Tutorial 1: Create a simple XLSX file 9

4 Tutorial 2: Adding formatting to the XLSX File 13

5 Tutorial 3: Writing different types of data to the XLSX File 17

6 The Workbook Class 21


6.1 Constructor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
6.2 workbook.add_worksheet() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
6.3 workbook.add_format() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
6.4 workbook.add_chart() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
6.5 workbook.add_chartsheet() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
6.6 workbook.close() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
6.7 workbook.set_size() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
6.8 workbook.tab_ratio() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
6.9 workbook.set_properties() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
6.10 workbook.set_custom_property() . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
6.11 workbook.define_name() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
6.12 workbook.add_vba_project() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
6.13 workbook.set_vba_name() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
6.14 workbook.worksheets() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
6.15 workbook.get_worksheet_by_name() . . . . . . . . . . . . . . . . . . . . . . . . . . 38
6.16 workbook.get_default_url_format() . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
6.17 workbook.set_calc_mode() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
6.18 workbook.use_zip64() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
6.19 workbook.read_only_recommended() . . . . . . . . . . . . . . . . . . . . . . . . . . 39

7 The Worksheet Class 41


7.1 worksheet.write() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

i
7.2 worksheet.add_write_handler() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
7.3 worksheet.write_string() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
7.4 worksheet.write_number() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
7.5 worksheet.write_formula() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
7.6 worksheet.write_array_formula() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
7.7 worksheet.write_blank() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
7.8 worksheet.write_boolean() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
7.9 worksheet.write_datetime() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
7.10 worksheet.write_url() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
7.11 worksheet.write_rich_string() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
7.12 worksheet.write_row() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
7.13 worksheet.write_column() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
7.14 worksheet.set_row() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
7.15 worksheet.set_row_pixels() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
7.16 worksheet.set_column() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
7.17 worksheet.set_column_pixels() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
7.18 worksheet.insert_image() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
7.19 worksheet.insert_chart() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
7.20 worksheet.insert_textbox() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
7.21 worksheet.insert_button() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
7.22 worksheet.data_validation() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
7.23 worksheet.conditional_format() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
7.24 worksheet.add_table() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
7.25 worksheet.add_sparkline() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
7.26 worksheet.write_comment() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
7.27 worksheet.show_comments() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
7.28 worksheet.set_comments_author() . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
7.29 worksheet.get_name() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
7.30 worksheet.activate() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
7.31 worksheet.select() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
7.32 worksheet.hide() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
7.33 worksheet.set_first_sheet() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
7.34 worksheet.merge_range() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
7.35 worksheet.autofilter() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
7.36 worksheet.filter_column() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
7.37 worksheet.filter_column_list() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
7.38 worksheet.set_selection() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
7.39 worksheet.freeze_panes() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
7.40 worksheet.split_panes() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
7.41 worksheet.set_zoom() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
7.42 worksheet.right_to_left() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
7.43 worksheet.hide_zero() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
7.44 worksheet.set_tab_color() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
7.45 worksheet.protect() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
7.46 worksheet.unprotect_range() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
7.47 worksheet.set_default_row() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
7.48 worksheet.outline_settings() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
7.49 worksheet.set_vba_name() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97

ii
7.50 worksheet.ignore_errors() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97

8 The Worksheet Class (Page Setup) 101


8.1 worksheet.set_landscape() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
8.2 worksheet.set_portrait() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
8.3 worksheet.set_page_view() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
8.4 worksheet.set_paper() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
8.5 worksheet.center_horizontally() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
8.6 worksheet.center_vertically() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
8.7 worksheet.set_margins() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
8.8 worksheet.set_header() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
8.9 worksheet.set_footer() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
8.10 worksheet.repeat_rows() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
8.11 worksheet.repeat_columns() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
8.12 worksheet.hide_gridlines() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
8.13 worksheet.print_row_col_headers() . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
8.14 worksheet.hide_row_col_headers() . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
8.15 worksheet.print_area() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
8.16 worksheet.print_across() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
8.17 worksheet.fit_to_pages() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
8.18 worksheet.set_start_page() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
8.19 worksheet.set_print_scale() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
8.20 worksheet.set_h_pagebreaks() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
8.21 worksheet.set_v_pagebreaks() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114

9 The Format Class 115


9.1 Creating and using a Format object . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
9.2 Format Defaults . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
9.3 Modifying Formats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
9.4 Number Format Categories . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
9.5 Number Formats in different locales . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
9.6 Format methods and Format properties . . . . . . . . . . . . . . . . . . . . . . . . . 123
9.7 format.set_font_name() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
9.8 format.set_font_size() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
9.9 format.set_font_color() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
9.10 format.set_bold() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
9.11 format.set_italic() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
9.12 format.set_underline() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
9.13 format.set_font_strikeout() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
9.14 format.set_font_script() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
9.15 format.set_num_format() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
9.16 format.set_locked() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
9.17 format.set_hidden() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
9.18 format.set_align() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
9.19 format.set_center_across() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
9.20 format.set_text_wrap() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
9.21 format.set_rotation() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
9.22 format.set_reading_order() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138

iii
9.23 format.set_indent() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
9.24 format.set_shrink() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
9.25 format.set_text_justlast() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
9.26 format.set_pattern() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
9.27 format.set_bg_color() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
9.28 format.set_fg_color() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
9.29 format.set_border() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
9.30 format.set_bottom() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
9.31 format.set_top() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
9.32 format.set_left() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
9.33 format.set_right() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
9.34 format.set_border_color() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
9.35 format.set_bottom_color() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
9.36 format.set_top_color() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
9.37 format.set_left_color() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
9.38 format.set_right_color() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
9.39 format.set_diag_border() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
9.40 format.set_diag_type() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
9.41 format.set_diag_color() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145

10 The Chart Class 147


10.1 chart.add_series() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
10.2 chart.set_x_axis() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
10.3 chart.set_y_axis() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
10.4 chart.set_x2_axis() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
10.5 chart.set_y2_axis() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
10.6 chart.combine() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
10.7 chart.set_size() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160
10.8 chart.set_title() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
10.9 chart.set_legend() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
10.10chart.set_chartarea() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
10.11chart.set_plotarea() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
10.12chart.set_style() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166
10.13chart.set_table() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167
10.14chart.set_up_down_bars() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
10.15chart.set_drop_lines() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
10.16chart.set_high_low_lines() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170
10.17chart.show_blanks_as() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
10.18chart.show_hidden_data() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
10.19chart.set_rotation() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172
10.20chart.set_hole_size() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172

11 The Chartsheet Class 173


11.1 chartsheet.set_chart() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174
11.2 Worksheet methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174
11.3 Chartsheet Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175

12 The Exceptions Class 177

iv
12.1 Exception: XlsxWriterException . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
12.2 Exception: XlsxFileError . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
12.3 Exception: XlsxInputError . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178
12.4 Exception: FileCreateError . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178
12.5 Exception: UndefinedImageSize . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178
12.6 Exception: UnsupportedImageFormat . . . . . . . . . . . . . . . . . . . . . . . . . . 179
12.7 Exception: FileSizeError . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180
12.8 Exception: EmptyChartSeries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180
12.9 Exception: DuplicateTableName . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
12.10Exception: InvalidWorksheetName . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
12.11Exception: DuplicateWorksheetName . . . . . . . . . . . . . . . . . . . . . . . . . . 182

13 Working with Cell Notation 183


13.1 Row and Column Ranges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184
13.2 Relative and Absolute cell references . . . . . . . . . . . . . . . . . . . . . . . . . . 184
13.3 Defined Names and Named Ranges . . . . . . . . . . . . . . . . . . . . . . . . . . . 184
13.4 Cell Utility Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185

14 Working with and Writing Data 189


14.1 Writing data to a worksheet cell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189
14.2 Writing unicode data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191
14.3 Writing lists of data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191
14.4 Writing dicts of data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195
14.5 Writing dataframes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196
14.6 Writing user defined types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197

15 Working with Formulas 203


15.1 Non US Excel functions and syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . 203
15.2 Formulas added in Excel 2010 and later . . . . . . . . . . . . . . . . . . . . . . . . . 204
15.3 Using Tables in Formulas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208
15.4 Dealing with formula errors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209
15.5 Formula Results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209

16 Working with Dates and Time 211


16.1 Default Date Formatting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214
16.2 Timezone Handling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215

17 Working with Colors 217

18 Working with Charts 219


18.1 Chart Value and Category Axes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220
18.2 Chart Series Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225
18.3 Chart series option: Marker . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226
18.4 Chart series option: Trendline . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227
18.5 Chart series option: Error Bars . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231
18.6 Chart series option: Data Labels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233
18.7 Chart series option: Custom Data Labels . . . . . . . . . . . . . . . . . . . . . . . . 241
18.8 Chart series option: Points . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245
18.9 Chart series option: Smooth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246

v
18.10Chart Formatting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247
18.11Chart formatting: Line . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248
18.12Chart formatting: Border . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251
18.13Chart formatting: Solid Fill . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251
18.14Chart formatting: Pattern Fill . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253
18.15Chart formatting: Gradient Fill . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256
18.16Chart Fonts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258
18.17Chart Layout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260
18.18Date Category Axes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262
18.19Chart Secondary Axes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262
18.20Combined Charts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264
18.21Chartsheets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266
18.22Charts from Worksheet Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267
18.23Chart Limitations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268
18.24Chart Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268

19 Working with Object Positioning 269


19.1 Object scaling due to automatic row height adjustment . . . . . . . . . . . . . . . . 270
19.2 Object Positioning with Cell Moving and Sizing . . . . . . . . . . . . . . . . . . . . . 271
19.3 Image sizing and DPI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274
19.4 Reporting issues with image insertion . . . . . . . . . . . . . . . . . . . . . . . . . . 274

20 Working with Autofilters 275


20.1 Applying an autofilter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275
20.2 Filter data in an autofilter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276
20.3 Setting a filter criteria for a column . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277
20.4 Setting a column list filter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278
20.5 Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279

21 Working with Data Validation 281


21.1 data_validation() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283
21.2 Data Validation Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 290

22 Working with Conditional Formatting 293


22.1 The conditional_format() method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296
22.2 Conditional Format Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298
22.3 Conditional Formatting Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317

23 Working with Worksheet Tables 319


23.1 add_table() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 320
23.2 data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321
23.3 header_row . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 322
23.4 autofilter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323
23.5 banded_rows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324
23.6 banded_columns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325
23.7 first_column . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325
23.8 last_column . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326
23.9 style . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326

vi
23.10name . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 328
23.11total_row . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329
23.12columns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329
23.13Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334

24 Working with Textboxes 335


24.1 Textbox options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 336
24.2 Textbox size and positioning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337
24.3 Textbox Formatting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 340
24.4 Textbox formatting: Line . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 341
24.5 Textbox formatting: Border . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343
24.6 Textbox formatting: Solid Fill . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343
24.7 Textbox formatting: Gradient Fill . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345
24.8 Textbox formatting: Fonts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 346
24.9 Textbox formatting: Align . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348
24.10Textbox formatting: Text Rotation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349
24.11Textbox Textlink . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349
24.12Textbox Hyperlink . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 350

25 Working with Sparklines 351


25.1 The add_sparkline() method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351
25.2 range . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 354
25.3 type . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 354
25.4 style . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 354
25.5 markers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355
25.6 negative_points . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355
25.7 axis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355
25.8 reverse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355
25.9 weight . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355
25.10high_point, low_point, first_point, last_point . . . . . . . . . . . . . . . . . . . . . . . 356
25.11max, min . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356
25.12empty_cells . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356
25.13show_hidden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356
25.14date_axis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 357
25.15series_color . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 357
25.16location . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 357
25.17Grouped Sparklines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 357
25.18Sparkline examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 358

26 Working with Cell Comments 359


26.1 Setting Comment Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 359

27 Working with Outlines and Grouping 363


27.1 Outlines and Grouping in XlsxWriter . . . . . . . . . . . . . . . . . . . . . . . . . . . 365

28 Working with Memory and Performance 369


28.1 Performance Figures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 370

29 Working with VBA Macros 371

vii
29.1 The Excel XLSM file format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 371
29.2 How VBA macros are included in XlsxWriter . . . . . . . . . . . . . . . . . . . . . . 372
29.3 The vba_extract.py utility . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 372
29.4 Adding the VBA macros to a XlsxWriter file . . . . . . . . . . . . . . . . . . . . . . . 372
29.5 Setting the VBA codenames . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373
29.6 What to do if it doesn’t work . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374

30 Working with Python Pandas and XlsxWriter 375


30.1 Using XlsxWriter with Pandas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 375
30.2 Accessing XlsxWriter from Pandas . . . . . . . . . . . . . . . . . . . . . . . . . . . . 376
30.3 Adding Charts to Dataframe output . . . . . . . . . . . . . . . . . . . . . . . . . . . 377
30.4 Adding Conditional Formatting to Dataframe output . . . . . . . . . . . . . . . . . . 378
30.5 Formatting of the Dataframe output . . . . . . . . . . . . . . . . . . . . . . . . . . . 379
30.6 Formatting of the Dataframe headers . . . . . . . . . . . . . . . . . . . . . . . . . . 381
30.7 Adding a Dataframe to a Worksheet Table . . . . . . . . . . . . . . . . . . . . . . . 382
30.8 Adding an autofilter to a Dataframe output . . . . . . . . . . . . . . . . . . . . . . . 383
30.9 Handling multiple Pandas Dataframes . . . . . . . . . . . . . . . . . . . . . . . . . . 385
30.10Passing XlsxWriter constructor options to Pandas . . . . . . . . . . . . . . . . . . . 386
30.11Saving the Dataframe output to a string . . . . . . . . . . . . . . . . . . . . . . . . . 386
30.12Additional Pandas and Excel Information . . . . . . . . . . . . . . . . . . . . . . . . 387

31 Examples 389
31.1 Example: Hello World . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 389
31.2 Example: Simple Feature Demonstration . . . . . . . . . . . . . . . . . . . . . . . . 390
31.3 Example: Catch exception on closing . . . . . . . . . . . . . . . . . . . . . . . . . . 391
31.4 Example: Dates and Times in Excel . . . . . . . . . . . . . . . . . . . . . . . . . . . 392
31.5 Example: Adding hyperlinks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394
31.6 Example: Array formulas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 396
31.7 Example: Applying Autofilters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 397
31.8 Example: Data Validation and Drop Down Lists . . . . . . . . . . . . . . . . . . . . . 403
31.9 Example: Conditional Formatting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 407
31.10Example: Defined names/Named ranges . . . . . . . . . . . . . . . . . . . . . . . . 414
31.11Example: Merging Cells . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 416
31.12Example: Writing “Rich” strings with multiple formats . . . . . . . . . . . . . . . . . 417
31.13Example: Merging Cells with a Rich String . . . . . . . . . . . . . . . . . . . . . . . 419
31.14Example: Inserting images into a worksheet . . . . . . . . . . . . . . . . . . . . . . 421
31.15Example: Inserting images from a URL or byte stream into a worksheet . . . . . . . 423
31.16Example: Left to Right worksheets and text . . . . . . . . . . . . . . . . . . . . . . . 425
31.17Example: Simple Django class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 426
31.18Example: Simple HTTP Server (Python 2) . . . . . . . . . . . . . . . . . . . . . . . 427
31.19Example: Simple HTTP Server (Python 3) . . . . . . . . . . . . . . . . . . . . . . . 429
31.20Example: Adding Headers and Footers to Worksheets . . . . . . . . . . . . . . . . 430
31.21Example: Freeze Panes and Split Panes . . . . . . . . . . . . . . . . . . . . . . . . 434
31.22Example: Worksheet Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 436
31.23Example: Writing User Defined Types (1) . . . . . . . . . . . . . . . . . . . . . . . . 444
31.24Example: Writing User Defined Types (2) . . . . . . . . . . . . . . . . . . . . . . . . 446
31.25Example: Writing User Defined types (3) . . . . . . . . . . . . . . . . . . . . . . . . 448
31.26Example: Ignoring Worksheet errors and warnings . . . . . . . . . . . . . . . . . . . 450

viii
31.27Example: Sparklines (Simple) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 452
31.28Example: Sparklines (Advanced) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 453
31.29Example: Adding Cell Comments to Worksheets (Simple) . . . . . . . . . . . . . . . 460
31.30Example: Adding Cell Comments to Worksheets (Advanced) . . . . . . . . . . . . . 462
31.31Example: Insert Textboxes into a Worksheet . . . . . . . . . . . . . . . . . . . . . . 467
31.32Example: Outline and Grouping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 472
31.33Example: Collapsed Outline and Grouping . . . . . . . . . . . . . . . . . . . . . . . 477
31.34Example: Setting Document Properties . . . . . . . . . . . . . . . . . . . . . . . . . 481
31.35Example: Simple Unicode with Python 2 . . . . . . . . . . . . . . . . . . . . . . . . 483
31.36Example: Simple Unicode with Python 3 . . . . . . . . . . . . . . . . . . . . . . . . 484
31.37Example: Unicode - Polish in UTF-8 . . . . . . . . . . . . . . . . . . . . . . . . . . . 484
31.38Example: Unicode - Shift JIS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 486
31.39Example: Setting Worksheet Tab Colors . . . . . . . . . . . . . . . . . . . . . . . . 488
31.40Example: Diagonal borders in cells . . . . . . . . . . . . . . . . . . . . . . . . . . . 489
31.41Example: Enabling Cell protection in Worksheets . . . . . . . . . . . . . . . . . . . 491
31.42Example: Hiding Worksheets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 492
31.43Example: Hiding Rows and Columns . . . . . . . . . . . . . . . . . . . . . . . . . . 494
31.44Example: Example of subclassing the Workbook and Worksheet classes . . . . . . 495
31.45Example: Advanced example of subclassing . . . . . . . . . . . . . . . . . . . . . . 497
31.46Example: Adding a VBA macro to a Workbook . . . . . . . . . . . . . . . . . . . . . 501

32 Chart Examples 503


32.1 Example: Chart (Simple) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 503
32.2 Example: Area Chart . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 504
32.3 Example: Bar Chart . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 508
32.4 Example: Column Chart . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 511
32.5 Example: Line Chart . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 515
32.6 Example: Pie Chart . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519
32.7 Example: Doughnut Chart . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 522
32.8 Example: Scatter Chart . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 526
32.9 Example: Radar Chart . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 532
32.10Example: Stock Chart . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 536
32.11Example: Styles Chart . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 537
32.12Example: Chart with Pattern Fills . . . . . . . . . . . . . . . . . . . . . . . . . . . . 539
32.13Example: Chart with Gradient Fills . . . . . . . . . . . . . . . . . . . . . . . . . . . . 541
32.14Example: Secondary Axis Chart . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 542
32.15Example: Combined Chart . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 544
32.16Example: Pareto Chart . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 547
32.17Example: Gauge Chart . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 549
32.18Example: Clustered Chart . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 551
32.19Example: Date Axis Chart . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 552
32.20Example: Charts with Data Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . 554
32.21Example: Charts with Data Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 557
32.22Example: Charts with Data Labels . . . . . . . . . . . . . . . . . . . . . . . . . . . . 564
32.23Example: Chartsheet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 574

33 Pandas with XlsxWriter Examples 577


33.1 Example: Pandas Excel example . . . . . . . . . . . . . . . . . . . . . . . . . . . . 577

ix
33.2 Example: Pandas Excel with multiple dataframes . . . . . . . . . . . . . . . . . . . 579
33.3 Example: Pandas Excel dataframe positioning . . . . . . . . . . . . . . . . . . . . . 580
33.4 Example: Pandas Excel output with a chart . . . . . . . . . . . . . . . . . . . . . . . 581
33.5 Example: Pandas Excel output with conditional formatting . . . . . . . . . . . . . . 583
33.6 Example: Pandas Excel output with an autofilter . . . . . . . . . . . . . . . . . . . . 584
33.7 Example: Pandas Excel output with a worksheet table . . . . . . . . . . . . . . . . . 586
33.8 Example: Pandas Excel output with datetimes . . . . . . . . . . . . . . . . . . . . . 588
33.9 Example: Pandas Excel output with column formatting . . . . . . . . . . . . . . . . 590
33.10Example: Pandas Excel output with user defined header format . . . . . . . . . . . 592
33.11Example: Pandas Excel output with a line chart . . . . . . . . . . . . . . . . . . . . 593
33.12Example: Pandas Excel output with a column chart . . . . . . . . . . . . . . . . . . 595

34 Alternative modules for handling Excel files 597


34.1 OpenPyXL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 597
34.2 Xlwings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 597
34.3 XLWT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 597
34.4 XLRD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 597

35 Libraries that use or enhance XlsxWriter 599


35.1 Pandas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 599
35.2 XlsxPandasFormatter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 599

36 Known Issues and Bugs 601


36.1 “Content is Unreadable. Open and Repair” . . . . . . . . . . . . . . . . . . . . . . . 601
36.2 “Exception caught in workbook destructor. Explicit close() may be required” . . . . . 601
36.3 Formulas displayed as #NAME? until edited . . . . . . . . . . . . . . . . . . . . . . . 602
36.4 Formula results displaying as zero in non-Excel applications . . . . . . . . . . . . . 602
36.5 Images not displayed correctly in Excel 2001 for Mac and non-Excel applications . . 602
36.6 Charts series created from Worksheet Tables cannot have user defined names . . . 602

37 Reporting Bugs 603


37.1 Upgrade to the latest version of the module . . . . . . . . . . . . . . . . . . . . . . . 603
37.2 Read the documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 603
37.3 Look at the example programs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 603
37.4 Use the official XlsxWriter Issue tracker on GitHub . . . . . . . . . . . . . . . . . . . 603
37.5 Pointers for submitting a bug report . . . . . . . . . . . . . . . . . . . . . . . . . . . 603

38 Frequently Asked Questions 605


38.1 Q. Can XlsxWriter use an existing Excel file as a template? . . . . . . . . . . . . . . 605
38.2 Q. Why do my formulas show a zero result in some, non-Excel applications? . . . . 605
38.3 Q. Can I apply a format to a range of cells in one go? . . . . . . . . . . . . . . . . . 606
38.4 Q. Is feature X supported or will it be supported? . . . . . . . . . . . . . . . . . . . . 606
38.5 Q. Is there an “AutoFit” option for columns? . . . . . . . . . . . . . . . . . . . . . . . 606
38.6 Q. Can I password protect an XlsxWriter xlsx file . . . . . . . . . . . . . . . . . . . . 606
38.7 Q. Do people actually ask these questions frequently, or at all? . . . . . . . . . . . . 606

39 Changes in XlsxWriter 607


39.1 Release 1.4.0 - April 23 2021 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 607
39.2 Release 1.3.9 - April 15 2021 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 607

x
39.3 Release 1.3.8 - March 29 2021 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 607
39.4 Release 1.3.7 - October 13 2020 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 608
39.5 Release 1.3.6 - September 23 2020 . . . . . . . . . . . . . . . . . . . . . . . . . . . 608
39.6 Release 1.3.5 - September 21 2020 . . . . . . . . . . . . . . . . . . . . . . . . . . . 608
39.7 Release 1.3.4 - September 16 2020 . . . . . . . . . . . . . . . . . . . . . . . . . . . 609
39.8 Release 1.3.3 - August 13 2020 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 609
39.9 Release 1.3.2 - August 6 2020 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 609
39.10Release 1.3.1 - August 3 2020 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 609
39.11Release 1.3.0 - July 30 2020 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 609
39.12Release 1.2.9 - May 29 2020 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 609
39.13Release 1.2.8 - February 22 2020 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 609
39.14Release 1.2.7 - December 23 2019 . . . . . . . . . . . . . . . . . . . . . . . . . . . 610
39.15Release 1.2.6 - November 15 2019 . . . . . . . . . . . . . . . . . . . . . . . . . . . 610
39.16Release 1.2.5 - November 10 2019 . . . . . . . . . . . . . . . . . . . . . . . . . . . 610
39.17Release 1.2.4 - November 9 2019 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 610
39.18Release 1.2.3 - November 7 2019 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 610
39.19Release 1.2.2 - October 16 2019 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 611
39.20Release 1.2.1 - September 14 2019 . . . . . . . . . . . . . . . . . . . . . . . . . . . 611
39.21Release 1.2.0 - August 26 2019 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 611
39.22Release 1.1.9 - August 19 2019 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 611
39.23Release 1.1.8 - May 5 2019 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 611
39.24Release 1.1.7 - April 20 2019 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 611
39.25Release 1.1.6 - April 7 2019 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 612
39.26Release 1.1.5 - February 22 2019 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 612
39.27Release 1.1.4 - February 10 2019 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 612
39.28Release 1.1.3 - February 9 2019 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 612
39.29Release 1.1.2 - October 20 2018 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 612
39.30Release 1.1.1 - September 22 2018 . . . . . . . . . . . . . . . . . . . . . . . . . . . 613
39.31Release 1.1.0 - September 2 2018 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 613
39.32Release 1.0.9 - August 27 2018 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 613
39.33Release 1.0.8 - August 27 2018 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 613
39.34Release 1.0.7 - August 16 2018 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 613
39.35Release 1.0.6 - August 15 2018 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 613
39.36Release 1.0.5 - May 19 2018 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 614
39.37Release 1.0.4 - April 14 2018 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 614
39.38Release 1.0.3 - April 10 2018 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 614
39.39Release 1.0.2 - October 14 2017 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 614
39.40Release 1.0.1 - October 14 2017 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 614
39.41Release 1.0.0 - September 16 2017 . . . . . . . . . . . . . . . . . . . . . . . . . . . 615
39.42Release 0.9.9 - September 5 2017 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 615
39.43Release 0.9.8 - July 1 2017 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 615
39.44Release 0.9.7 - June 25 2017 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 615
39.45Release 0.9.6 - Dec 26 2016 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 615
39.46Release 0.9.5 - Dec 24 2016 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 615
39.47Release 0.9.4 - Dec 2 2016 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 615
39.48Release 0.9.3 - July 8 2016 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 616
39.49Release 0.9.2 - June 13 2016 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 616
39.50Release 0.9.1 - June 8 2016 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 616

xi
39.51Release 0.9.0 - June 7 2016 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 616
39.52Release 0.8.9 - June 1 2016 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 616
39.53Release 0.8.8 - May 31 2016 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 616
39.54Release 0.8.7 - May 13 2016 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 616
39.55Release 0.8.6 - April 27 2016 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 617
39.56Release 0.8.5 - April 17 2016 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 617
39.57Release 0.8.4 - January 16 2016 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 617
39.58Release 0.8.3 - January 14 2016 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 617
39.59Release 0.8.2 - January 13 2016 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 617
39.60Release 0.8.1 - January 12 2016 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 617
39.61Release 0.8.0 - January 10 2016 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 617
39.62Release 0.7.9 - January 9 2016 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 617
39.63Release 0.7.8 - January 6 2016 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 618
39.64Release 0.7.7 - October 19 2015 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 618
39.65Release 0.7.6 - October 7 2015 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 618
39.66Release 0.7.5 - October 4 2015 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 618
39.67Release 0.7.4 - September 29 2015 . . . . . . . . . . . . . . . . . . . . . . . . . . . 618
39.68Release 0.7.3 - May 7 2015 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 618
39.69Release 0.7.2 - March 29 2015 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 618
39.70Release 0.7.1 - March 23 2015 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 619
39.71Release 0.7.0 - March 21 2015 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 619
39.72Release 0.6.9 - March 19 2015 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 619
39.73Release 0.6.8 - March 17 2015 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 619
39.74Release 0.6.7 - March 1 2015 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 619
39.75Release 0.6.6 - January 16 2015 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 619
39.76Release 0.6.5 - December 31 2014 . . . . . . . . . . . . . . . . . . . . . . . . . . . 620
39.77Release 0.6.4 - November 15 2014 . . . . . . . . . . . . . . . . . . . . . . . . . . . 620
39.78Release 0.6.3 - November 6 2014 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 620
39.79Release 0.6.2 - November 1 2014 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 620
39.80Release 0.6.1 - October 29 2014 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 620
39.81Release 0.6.0 - October 15 2014 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 621
39.82Release 0.5.9 - October 11 2014 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 621
39.83Release 0.5.8 - September 28 2014 . . . . . . . . . . . . . . . . . . . . . . . . . . . 621
39.84Release 0.5.7 - August 13 2014 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 621
39.85Release 0.5.6 - July 22 2014 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 621
39.86Release 0.5.5 - May 6 2014 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 622
39.87Release 0.5.4 - May 4 2014 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 622
39.88Release 0.5.3 - February 20 2014 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 622
39.89Release 0.5.2 - December 31 2013 . . . . . . . . . . . . . . . . . . . . . . . . . . . 622
39.90Release 0.5.1 - December 2 2013 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 622
39.91Release 0.5.0 - November 17 2013 . . . . . . . . . . . . . . . . . . . . . . . . . . . 623
39.92Release 0.4.9 - November 17 2013 . . . . . . . . . . . . . . . . . . . . . . . . . . . 623
39.93Release 0.4.8 - November 13 2013 . . . . . . . . . . . . . . . . . . . . . . . . . . . 623
39.94Release 0.4.7 - November 9 2013 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 623
39.95Release 0.4.6 - October 23 2013 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 623
39.96Release 0.4.5 - October 21 2013 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 623
39.97Release 0.4.4 - October 16 2013 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 624
39.98Release 0.4.3 - September 12 2013 . . . . . . . . . . . . . . . . . . . . . . . . . . . 624

xii
39.99Release 0.4.2 - August 30 2013 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 624
39.100Release 0.4.1 - August 28 2013 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 624
39.101Release 0.4.0 - August 26 2013 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 624
39.102Release 0.3.9 - August 24 2013 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 624
39.103Release 0.3.8 - August 23 2013 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 624
39.104Release 0.3.7 - August 16 2013 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 625
39.105Release 0.3.6 - July 26 2013 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 625
39.106Release 0.3.5 - June 28 2013 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 625
39.107Release 0.3.4 - June 27 2013 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 625
39.108Release 0.3.3 - June 10 2013 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 625
39.109Release 0.3.2 - May 1 2013 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 626
39.110Release 0.3.1 - April 27 2013 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 626
39.111Release 0.3.0 - April 7 2013 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 626
39.112Release 0.2.9 - April 7 2013 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 626
39.113Release 0.2.8 - April 4 2013 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 626
39.114Release 0.2.7 - April 3 2013 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 627
39.115Release 0.2.6 - April 1 2013 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 627
39.116Release 0.2.5 - April 1 2013 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 627
39.117Release 0.2.4 - March 31 2013 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 627
39.118Release 0.2.3 - March 27 2013 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 627
39.119Release 0.2.2 - March 27 2013 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 627
39.120Release 0.2.1 - March 25 2013 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 628
39.121Release 0.2.0 - March 24 2013 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 628
39.122Release 0.1.9 - March 19 2013 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 628
39.123Release 0.1.8 - March 18 2013 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 628
39.124Release 0.1.7 - March 18 2013 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 628
39.125Release 0.1.6 - March 17 2013 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 628
39.126Release 0.1.5 - March 10 2013 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 629
39.127Release 0.1.4 - March 8 2013 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 629
39.128Release 0.1.3 - March 7 2013 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 629
39.129Release 0.1.2 - March 6 2013 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 629
39.130Release 0.1.1 - March 3 2013 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 629
39.131Release 0.1.0 - February 28 2013 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 629
39.132Release 0.0.9 - February 27 2013 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 630
39.133Release 0.0.8 - February 26 2013 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 630
39.134Release 0.0.7 - February 25 2013 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 630
39.135Release 0.0.6 - February 22 2013 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 631
39.136Release 0.0.5 - February 21 2013 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 631
39.137Release 0.0.4 - February 20 2013 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 631
39.138Release 0.0.3 - February 19 2013 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 631
39.139Release 0.0.2 - February 18 2013 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 631
39.140Release 0.0.1 - February 17 2013 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 632

40 Author 633
40.1 Asking questions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 633
40.2 Sponsorship and Donations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 633

41 License 635

xiii
xiv

You might also like