kmadej_fast_excel_fork 0.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (119) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +13 -0
  3. data/.travis.yml +28 -0
  4. data/CHANGELOG.md +13 -0
  5. data/Gemfile +17 -0
  6. data/Gemfile.lock +70 -0
  7. data/Makefile +14 -0
  8. data/README.md +95 -0
  9. data/Rakefile +24 -0
  10. data/appveyor.yml +25 -0
  11. data/benchmarks/1k_rows.rb +59 -0
  12. data/benchmarks/20k_rows.rb +26 -0
  13. data/benchmarks/init.rb +59 -0
  14. data/benchmarks/memory.rb +49 -0
  15. data/examples/example.rb +42 -0
  16. data/examples/example_align.rb +23 -0
  17. data/examples/example_chart.rb +21 -0
  18. data/examples/example_colors.rb +37 -0
  19. data/examples/example_formula.rb +18 -0
  20. data/examples/example_image.rb +13 -0
  21. data/examples/example_styles.rb +27 -0
  22. data/examples/logo.png +0 -0
  23. data/extconf.rb +0 -0
  24. data/fast_excel.gemspec +20 -0
  25. data/lib/fast_excel.rb +600 -0
  26. data/lib/fast_excel/binding.rb +2819 -0
  27. data/lib/fast_excel/binding/chart.rb +2666 -0
  28. data/lib/fast_excel/binding/format.rb +1177 -0
  29. data/lib/fast_excel/binding/workbook.rb +338 -0
  30. data/lib/fast_excel/binding/worksheet.rb +1555 -0
  31. data/libxlsxwriter/.gitignore +49 -0
  32. data/libxlsxwriter/.indent.pro +125 -0
  33. data/libxlsxwriter/.travis.yml +25 -0
  34. data/libxlsxwriter/CONTRIBUTING.md +226 -0
  35. data/libxlsxwriter/Changes.txt +557 -0
  36. data/libxlsxwriter/LICENSE.txt +89 -0
  37. data/libxlsxwriter/Makefile +156 -0
  38. data/libxlsxwriter/Readme.md +78 -0
  39. data/libxlsxwriter/cocoapods/libxlsxwriter-umbrella.h +30 -0
  40. data/libxlsxwriter/cocoapods/libxlsxwriter.modulemap +7 -0
  41. data/libxlsxwriter/include/xlsxwriter.h +23 -0
  42. data/libxlsxwriter/include/xlsxwriter/app.h +79 -0
  43. data/libxlsxwriter/include/xlsxwriter/chart.h +3476 -0
  44. data/libxlsxwriter/include/xlsxwriter/common.h +372 -0
  45. data/libxlsxwriter/include/xlsxwriter/content_types.h +74 -0
  46. data/libxlsxwriter/include/xlsxwriter/core.h +51 -0
  47. data/libxlsxwriter/include/xlsxwriter/custom.h +52 -0
  48. data/libxlsxwriter/include/xlsxwriter/drawing.h +111 -0
  49. data/libxlsxwriter/include/xlsxwriter/format.h +1214 -0
  50. data/libxlsxwriter/include/xlsxwriter/hash_table.h +76 -0
  51. data/libxlsxwriter/include/xlsxwriter/packager.h +80 -0
  52. data/libxlsxwriter/include/xlsxwriter/relationships.h +77 -0
  53. data/libxlsxwriter/include/xlsxwriter/shared_strings.h +83 -0
  54. data/libxlsxwriter/include/xlsxwriter/styles.h +77 -0
  55. data/libxlsxwriter/include/xlsxwriter/theme.h +47 -0
  56. data/libxlsxwriter/include/xlsxwriter/third_party/ioapi.h +214 -0
  57. data/libxlsxwriter/include/xlsxwriter/third_party/queue.h +694 -0
  58. data/libxlsxwriter/include/xlsxwriter/third_party/tmpfileplus.h +53 -0
  59. data/libxlsxwriter/include/xlsxwriter/third_party/tree.h +801 -0
  60. data/libxlsxwriter/include/xlsxwriter/third_party/zip.h +375 -0
  61. data/libxlsxwriter/include/xlsxwriter/utility.h +166 -0
  62. data/libxlsxwriter/include/xlsxwriter/workbook.h +757 -0
  63. data/libxlsxwriter/include/xlsxwriter/worksheet.h +2641 -0
  64. data/libxlsxwriter/include/xlsxwriter/xmlwriter.h +178 -0
  65. data/libxlsxwriter/lib/.gitignore +0 -0
  66. data/libxlsxwriter/libxlsxwriter.podspec +47 -0
  67. data/libxlsxwriter/src/Makefile +130 -0
  68. data/libxlsxwriter/src/app.c +443 -0
  69. data/libxlsxwriter/src/chart.c +6346 -0
  70. data/libxlsxwriter/src/content_types.c +345 -0
  71. data/libxlsxwriter/src/core.c +293 -0
  72. data/libxlsxwriter/src/custom.c +224 -0
  73. data/libxlsxwriter/src/drawing.c +746 -0
  74. data/libxlsxwriter/src/format.c +729 -0
  75. data/libxlsxwriter/src/hash_table.c +223 -0
  76. data/libxlsxwriter/src/packager.c +948 -0
  77. data/libxlsxwriter/src/relationships.c +245 -0
  78. data/libxlsxwriter/src/shared_strings.c +266 -0
  79. data/libxlsxwriter/src/styles.c +1088 -0
  80. data/libxlsxwriter/src/theme.c +348 -0
  81. data/libxlsxwriter/src/utility.c +515 -0
  82. data/libxlsxwriter/src/workbook.c +1930 -0
  83. data/libxlsxwriter/src/worksheet.c +5022 -0
  84. data/libxlsxwriter/src/xmlwriter.c +355 -0
  85. data/libxlsxwriter/third_party/minizip/Makefile +44 -0
  86. data/libxlsxwriter/third_party/minizip/Makefile.am +45 -0
  87. data/libxlsxwriter/third_party/minizip/Makefile.orig +25 -0
  88. data/libxlsxwriter/third_party/minizip/MiniZip64_Changes.txt +6 -0
  89. data/libxlsxwriter/third_party/minizip/MiniZip64_info.txt +74 -0
  90. data/libxlsxwriter/third_party/minizip/README.txt +5 -0
  91. data/libxlsxwriter/third_party/minizip/configure.ac +32 -0
  92. data/libxlsxwriter/third_party/minizip/crypt.h +131 -0
  93. data/libxlsxwriter/third_party/minizip/ioapi.c +247 -0
  94. data/libxlsxwriter/third_party/minizip/ioapi.h +208 -0
  95. data/libxlsxwriter/third_party/minizip/iowin32.c +456 -0
  96. data/libxlsxwriter/third_party/minizip/iowin32.h +28 -0
  97. data/libxlsxwriter/third_party/minizip/make_vms.com +25 -0
  98. data/libxlsxwriter/third_party/minizip/miniunz.c +660 -0
  99. data/libxlsxwriter/third_party/minizip/miniunzip.1 +63 -0
  100. data/libxlsxwriter/third_party/minizip/minizip.1 +46 -0
  101. data/libxlsxwriter/third_party/minizip/minizip.c +520 -0
  102. data/libxlsxwriter/third_party/minizip/minizip.pc.in +12 -0
  103. data/libxlsxwriter/third_party/minizip/mztools.c +291 -0
  104. data/libxlsxwriter/third_party/minizip/mztools.h +37 -0
  105. data/libxlsxwriter/third_party/minizip/unzip.c +2125 -0
  106. data/libxlsxwriter/third_party/minizip/unzip.h +437 -0
  107. data/libxlsxwriter/third_party/minizip/zip.c +2007 -0
  108. data/libxlsxwriter/third_party/minizip/zip.h +367 -0
  109. data/libxlsxwriter/third_party/tmpfileplus/Makefile +42 -0
  110. data/libxlsxwriter/third_party/tmpfileplus/tmpfileplus.c +342 -0
  111. data/libxlsxwriter/third_party/tmpfileplus/tmpfileplus.h +53 -0
  112. data/libxlsxwriter/version.txt +1 -0
  113. data/test/date_test.rb +22 -0
  114. data/test/default_format_test.rb +19 -0
  115. data/test/format_test.rb +171 -0
  116. data/test/test_helper.rb +52 -0
  117. data/test/tmpfile_test.rb +23 -0
  118. data/test/worksheet_test.rb +86 -0
  119. metadata +182 -0
@@ -0,0 +1,49 @@
1
+ *.a
2
+ *.o
3
+ *.so
4
+ *.to
5
+ *.lo
6
+ *.la
7
+ *.dylib
8
+ *.dll
9
+ test_*
10
+ !test_*.c
11
+ !test_*.cpp
12
+ !test_*.py
13
+ *.tar.gz
14
+ *~
15
+ TAGS
16
+ .#*
17
+ *#
18
+ ~*xlsx
19
+ *.xlsx
20
+ *.bak
21
+ !test/functional/xlsx_files/*.xlsx
22
+ *.pyc
23
+ .cproject
24
+ .project
25
+ .pydevproject
26
+ .settings/
27
+ .DS_Store
28
+ __pycache__
29
+ .cache
30
+ docs/html
31
+ docs/latex
32
+ .deps
33
+ .dirstamp
34
+ _temp.c
35
+ examples/*
36
+ !examples/*.c
37
+ !examples/logo.png
38
+ !examples/Makefile
39
+ cov-int
40
+ libxlsxwriter-coverity.tgz
41
+
42
+ third_party/zlib-1.2.8/configure.log
43
+ third_party/zlib-1.2.8/contrib/minizip/miniunz
44
+ third_party/zlib-1.2.8/contrib/minizip/minizip
45
+ third_party/zlib-1.2.8/example
46
+ third_party/zlib-1.2.8/examplesh
47
+ third_party/zlib-1.2.8/minigzip
48
+ third_party/zlib-1.2.8/minigzipsh
49
+ third_party/zlib-1.2.8/zlib.pc
@@ -0,0 +1,125 @@
1
+ /*
2
+ * Indent rules for libxlsxwriter.
3
+ *
4
+ * The rules for user defined typedefs can be update as follows:
5
+ *
6
+ perl -i -pe 'print and last if /[l]ibxlsxwriter typedefs/' .indent.pro
7
+ ack -h typedef include/xlsxwriter/*.h src/*.c | perl -lne 'print "-T $1" if /\w+\s+\w+\s+(\w+)/' | sort >> .indent.pro
8
+ *
9
+ */
10
+
11
+ /* Command line options used with GNU indent 2.2.10 */
12
+ --braces-on-if-line
13
+ --braces-on-struct-decl-line
14
+ --case-indentation 4
15
+ --continue-at-parentheses
16
+ --declaration-comment-column 0
17
+ --format-first-column-comments
18
+ --honour-newlines
19
+ --ignore-profile
20
+ --indent-label 0
21
+ --indent-level 4
22
+ --no-space-after-function-call-names
23
+ --no-tabs
24
+ --swallow-optional-blank-lines
25
+
26
+ /* Typedefs used in the code. */
27
+ -T int8_t
28
+ -T int16_t
29
+ -T int32_t
30
+ -T int64_t
31
+ -T uint8_t
32
+ -T uint16_t
33
+ -T uint32_t
34
+ -T uint64_t
35
+ -T ssize_t
36
+ -T size_t
37
+ -T time_t
38
+
39
+ -T LIST_ENTRY
40
+ -T RB_ENTRY
41
+ -T SLIST_ENTRY
42
+ -T STAILQ_ENTRY
43
+ -T TAILQ_ENTRY
44
+
45
+ /* libxlsxwriter typedefs. */
46
+ -T lxw_app
47
+ -T lxw_autofilter
48
+ -T lxw_border
49
+ -T lxw_cell
50
+ -T lxw_chart
51
+ -T lxw_chart_axis
52
+ -T lxw_chart_axis_display_unit
53
+ -T lxw_chart_axis_label_position
54
+ -T lxw_chart_axis_tick_mark
55
+ -T lxw_chart_axis_tick_position
56
+ -T lxw_chart_blank
57
+ -T lxw_chart_error_bar_cap
58
+ -T lxw_chart_error_bar_direction
59
+ -T lxw_chart_error_bar_type
60
+ -T lxw_chart_fill
61
+ -T lxw_chart_font
62
+ -T lxw_chart_gridline
63
+ -T lxw_chart_label_position
64
+ -T lxw_chart_label_separator
65
+ -T lxw_chart_legend
66
+ -T lxw_chart_legend_position
67
+ -T lxw_chart_line
68
+ -T lxw_chart_line_dash_type
69
+ -T lxw_chart_marker
70
+ -T lxw_chart_marker_type
71
+ -T lxw_chart_pattern
72
+ -T lxw_chart_pattern_type
73
+ -T lxw_chart_point
74
+ -T lxw_chart_series
75
+ -T lxw_chart_title
76
+ -T lxw_chart_trendline_type
77
+ -T lxw_chart_type
78
+ -T lxw_col_options
79
+ -T lxw_col_t
80
+ -T lxw_color_t
81
+ -T lxw_content_types
82
+ -T lxw_core
83
+ -T lxw_custom
84
+ -T lxw_custom_property
85
+ -T lxw_datetime
86
+ -T lxw_defined_name
87
+ -T lxw_doc_properties
88
+ -T lxw_drawing
89
+ -T lxw_drawing_coords
90
+ -T lxw_drawing_object
91
+ -T lxw_error
92
+ -T lxw_fill
93
+ -T lxw_font
94
+ -T lxw_format
95
+ -T lxw_hash_element
96
+ -T lxw_hash_table
97
+ -T lxw_header_footer_options
98
+ -T lxw_heading_pair
99
+ -T lxw_image_options
100
+ -T lxw_merged_range
101
+ -T lxw_packager
102
+ -T lxw_panes
103
+ -T lxw_part_name
104
+ -T lxw_print_area
105
+ -T lxw_protection
106
+ -T lxw_rel_tuple
107
+ -T lxw_relationships
108
+ -T lxw_repeat_cols
109
+ -T lxw_repeat_rows
110
+ -T lxw_row
111
+ -T lxw_row_col_options
112
+ -T lxw_row_t
113
+ -T lxw_selection
114
+ -T lxw_series_data_point
115
+ -T lxw_series_error_bars
116
+ -T lxw_series_range
117
+ -T lxw_sst
118
+ -T lxw_styles
119
+ -T lxw_theme
120
+ -T lxw_tuple
121
+ -T lxw_workbook
122
+ -T lxw_workbook_options
123
+ -T lxw_worksheet
124
+ -T lxw_worksheet_init_data
125
+ -T lxw_worksheet_name
@@ -0,0 +1,25 @@
1
+ language: c
2
+
3
+ compiler:
4
+ - clang
5
+ - gcc
6
+
7
+ env:
8
+ - CFLAGS='-Werror'
9
+ - NO_VALGRIND=1 USE_STANDARD_TMPFILE=1 CFLAGS='-Werror'
10
+ - NO_VALGRIND=1 CFLAGS='-Werror -m32'
11
+
12
+ install:
13
+ - sudo pip install pytest
14
+ - sudo apt-get update
15
+ - sudo apt-get install -y gcc-multilib
16
+ - sudo apt-get install -y zlib1g-dev
17
+ - sudo apt-get install -y zlib1g-dev:i386
18
+ - sudo apt-get install -y gcc
19
+ - sudo apt-get install -y valgrind
20
+
21
+ script:
22
+ - make V=1
23
+ - make test_functional V=1
24
+ - make test_unit V=1
25
+ - make test_valgrind V=1
@@ -0,0 +1,226 @@
1
+ # libxlsxwriter: Reporting Bugs and submitting Pull Requests
2
+
3
+
4
+ ## Reporting Bugs
5
+
6
+ Here are some tips on reporting bugs in `libxlsxwriter`.
7
+
8
+ ### Upgrade to the latest version of the library
9
+
10
+ Upgrade to the latest version of the library since the bug you are reporting
11
+ may already be fixed.
12
+
13
+ Check the [Changes][changes] section of the documentation to see what has
14
+ changed in the latest versions.
15
+
16
+ [changes]: http://libxlsxwriter.github.io/changes.html
17
+
18
+ You can check which version of `libxlsxwriter` that you are using by checking
19
+ the `xlsxwriter.h` header file or by adding the following to your program:
20
+
21
+ ```C
22
+ #include <stdio.h>
23
+ #include "xlsxwriter.h"
24
+
25
+ int main() {
26
+
27
+ printf("Libxlsxwriter version = %s\n", LXW_VERSION);
28
+
29
+ return 0;
30
+ }
31
+ ```
32
+
33
+
34
+ ### Read the documentation
35
+
36
+ Read or search the `libxlsxwriter` [documentation][docs] to see if the issue
37
+ you are encountering is already explained.
38
+
39
+ [docs]: http://libxlsxwriter.github.io/index.html
40
+
41
+ ### Look at the example programs
42
+
43
+ There are many [examples programs][examples] in the distribution. Try to
44
+ identify an example program that corresponds to your query and adapt it to use
45
+ as a bug report.
46
+
47
+ [examples]: http://libxlsxwriter.github.io/examples.html
48
+
49
+
50
+ ### Use the xlsxwriter Issue Tracker
51
+
52
+ The [libxlsxwriter issue tracker][issues] is on GitHub.
53
+
54
+ [issues]: https://github.com/jmcnamara/libxlsxwriter/issues
55
+
56
+
57
+ ### Tips for submitting a bug report
58
+
59
+ 1. Describe the problem as clearly and as concisely as possible.
60
+ 2. Include a sample program. This is probably the most important step.
61
+ It is generally easier to describe a problem in code than in written
62
+ prose.
63
+ 3. The sample program should be as small as possible to demonstrate the
64
+ problem. Don't copy and paste large non-relevant sections of your
65
+ program.
66
+
67
+ A sample bug report is shown below. This format helps analyze and respond to
68
+ the bug report more quickly.
69
+
70
+
71
+ > Subject: Issue with SOMETHING
72
+ >
73
+ > Greetings,
74
+ >
75
+ > I am using libxlsxwriter to do SOMETHING but it appears to do SOMETHING ELSE.
76
+ >
77
+ > I am using CC version X.Y.Z, OS = uname and libxlsxwriter x.y.z.
78
+ >
79
+ > Here is some code that demonstrates the problem:
80
+ >
81
+ >
82
+ >```C
83
+ >#include "xlsxwriter.h"
84
+ >
85
+ >int main() {
86
+ >
87
+ > lxw_workbook *workbook = workbook_new("bug_report.xlsx");
88
+ > lxw_worksheet *worksheet = workbook_add_worksheet(workbook, NULL);
89
+ >
90
+ > worksheet_write_string(worksheet, 0, 0, "Hello", NULL);
91
+ > worksheet_write_number(worksheet, 1, 0, 123, NULL);
92
+ >
93
+ > return workbook_close(workbook);
94
+ >}
95
+ >```
96
+ >
97
+
98
+
99
+ # Pull Requests and Contributing to Libxlsxwriter
100
+
101
+ All patches and pull requests are welcome but in general you should start with
102
+ an issue tracker to describe what you intend to do before you do it.
103
+
104
+
105
+ ### Getting Started
106
+
107
+ 1. Pull requests and new feature proposals must start with an [issue
108
+ tracker][issues]. This serves as the focal point for the design discussion.
109
+ 2. Describe what you plan to do. If there are API changes add some code
110
+ example to demonstrate them.
111
+ 3. Fork the repository.
112
+ 4. Run all the tests to make sure the current code works on your system using
113
+ `make test`. See the [Running the Test Suite][tests] section of the docs
114
+ for instructions.
115
+ 5. Create a feature branch for your new feature.
116
+
117
+
118
+ [tests]: http://libxlsxwriter.github.io/running_the_tests.html
119
+
120
+ ### Code Style
121
+
122
+ The code style is mainly K&R style with 4 space indents.
123
+
124
+ The author uses GNU indent (`gindent`) 2.2.10 with the following options:
125
+
126
+ ```
127
+ --braces-on-if-line
128
+ --braces-on-struct-decl-line
129
+ --case-indentation 4
130
+ --continue-at-parentheses
131
+ --declaration-comment-column 0
132
+ --format-first-column-comments
133
+ --honour-newlines
134
+ --ignore-profile
135
+ --indent-label 0
136
+ --indent-level 4
137
+ --no-space-after-function-call-names
138
+ --no-tabs
139
+ --swallow-optional-blank-lines
140
+ ```
141
+
142
+ The [indent configuration file][indentpro] is available in the repo. The code
143
+ can be indented automatically if the same version of `gindent` is used with
144
+ the following make command:
145
+
146
+ ```shell
147
+ make indent
148
+ ```
149
+
150
+ Note, make sure you have backed up your files or added them to the index
151
+ before running this command.
152
+
153
+ In general follow the existing style in the code.
154
+
155
+ [indentpro]: https://github.com/jmcnamara/libxlsxwriter/blob/master/.indent.pro
156
+
157
+ ### Writing and Running Tests
158
+
159
+ Any significant features should be accompanied by a test. See the `test`
160
+ directory and the [Running the Test Suite][tests] section of the docs for
161
+ details of the test setup.
162
+
163
+ The tests can be run as follows:
164
+
165
+ ```shell
166
+ make test
167
+ ```
168
+ Same as:
169
+
170
+ ```shell
171
+ make test_unit
172
+ make test_functional
173
+ ```
174
+
175
+ The functional tests require the Python module [pytest][pytest] as a test runner.
176
+
177
+ If you have `valgrind` installed you can use the test suite to check for memory leaks:
178
+
179
+ ```shell
180
+ make test_valgrind
181
+ ```
182
+
183
+ When you push your changes they will also be tested automatically using
184
+ [Travis CI][travis].
185
+
186
+ [Travis]: https://travis-ci.org/jmcnamara/libxlsxwriter/
187
+ [pytest]: http://pytest.org/
188
+
189
+
190
+ ### Documentation
191
+
192
+ The `libxlsxwriter` documentation is written in Doxygen format in the header
193
+ files and in additional `.dox` files in the `docs/src` directory of the
194
+ repo. The documentation can be built as follows:
195
+
196
+ ```shell
197
+ make docs
198
+ open docs/html/index.html
199
+ ```
200
+
201
+
202
+ ### Example programs
203
+
204
+ If applicable add an example program to the `examples` directory. Example
205
+ files can be built using:
206
+
207
+ ```shell
208
+ make docs
209
+ ```
210
+
211
+ ### Copyright and License
212
+
213
+ Copyright remains with the original author. Do not include additional
214
+ copyright claims or Licensing requirements. GitHub and the `git` repository
215
+ will record your contribution and it will be acknowledged it in the Changes
216
+ file.
217
+
218
+
219
+ ### Submitting the Pull Request
220
+
221
+ If your change involves several incremental `git` commits then `rebase` or
222
+ `squash` them onto another branch so that the Pull Request is a single commit
223
+ or a small number of logical commits.
224
+
225
+ Push your changes to GitHub and submit the Pull Request with a hash link to
226
+ the to the Issue tracker that was opened above.
@@ -0,0 +1,557 @@
1
+ /**
2
+ @page changes Changes
3
+
4
+
5
+ ## 0.6.9 January 30 2017
6
+
7
+ - Added chart trendlines. See @ref chart_trendlines and
8
+ @ref chart_data_tools.c.
9
+
10
+
11
+ ## 0.6.8 January 28 2017
12
+
13
+ - Added chart error bars. See @ref chart_error_bars and
14
+ @ref chart_data_tools.c.
15
+
16
+ ## 0.6.7 January 24 2017
17
+
18
+ - Added chart data labels. See @ref chart_labels.
19
+
20
+
21
+ ## 0.6.6 January 22 2017
22
+
23
+ - Added functions to set chart Up-Down bars: see `chart_set_up_down_bars()`
24
+ and `chart_set_up_down_bars_format()` and @ref chart_data_tools.c.
25
+
26
+ - Added functions to handle blank and hidden data in charts: see
27
+ `chart_show_blanks_as()` and `chart_show_hidden_data()`.
28
+
29
+
30
+ ## 0.6.5 January 21 2017
31
+
32
+ - Added functions to set the overlap and gap between series: see
33
+ `chart_set_series_overlap()` and `chart_set_series_gap()`.
34
+
35
+
36
+ ## 0.6.4 January 20 2017
37
+
38
+ - Added chart data table option, see `chart_set_table()` and
39
+ `chart_set_table_grid()`.
40
+
41
+ - Added Clustered Chart example, see @ref chart_clustered.c.
42
+
43
+
44
+ ## 0.6.3 January 19 2017
45
+
46
+ - Added `chart_set_drop_lines()` and `chart_set_high_low_lines()` functions to
47
+ add chart Drop and High-Low lines to indicate category values.
48
+ See @ref chart_data_tools.c.
49
+
50
+
51
+ ## 0.6.2 January 17 2017
52
+
53
+ - Added `chart_series_set_smooth()` function to set the line smoothing
54
+ property of a line or scatter chart series.
55
+
56
+
57
+ ## 0.6.1 January 16 2017
58
+
59
+ - Added option to set formatting for points in a chart. This allow the colors
60
+ of Pie chart segments to be defined. See @ref chart_points.
61
+
62
+
63
+ ## 0.6.0 January 15 2017
64
+
65
+ - Added option to set the number format for a chart axis, see
66
+ `chart_axis_set_num_format()`.
67
+
68
+ - Added "invert if negative" option for series fills, see
69
+ `chart_series_set_invert_if_negative()`.
70
+
71
+
72
+ ## 0.5.9 January 14 2017
73
+
74
+ - Added support for chart axis crossing. See `chart_axis_set_crossing()` and
75
+ `chart_axis_set_crossing_max()`.
76
+
77
+
78
+ ## 0.5.8 January 13 2017
79
+
80
+ - Added `chart_axis_set_major_tick_mark()` and
81
+ `chart_axis_set_minor_tick_mark()` functions to chart axis tick marks.
82
+
83
+
84
+ ## 0.5.7 January 12 2017
85
+
86
+ - Added `chart_axis_set_display_units()` function to set chart axis display
87
+ units.
88
+
89
+
90
+ ## 0.5.6 January 11 2017
91
+
92
+ - Added `chart_axis_set_interval_unit()` and `chart_axis_set_interval_tick()`
93
+ functions to adjust category axis intervals.
94
+
95
+
96
+ ## 0.5.5 January 10 2017
97
+
98
+ - Added `chart_axis_set_major_unit()` and `chart_axis_set_minor_unit()` to set
99
+ the major and minor units of a category axis.
100
+
101
+
102
+ ## 0.5.4 January 9 2017
103
+
104
+ - Added `chart_axis_set_label_position()` option to position the axis labels
105
+ (numbers).
106
+
107
+ - Improved documentation for @ref ww_charts_axes.
108
+
109
+
110
+ ## 0.5.3 January 8 2017
111
+
112
+ - Added `chart_axis_set_position()` option to position a category axis
113
+ horizontally on, or between, the axis tick marks.
114
+
115
+
116
+ ## 0.5.2 January 7 2017
117
+
118
+ - Added option to turn off chart axis: `chart_axis_off()`.
119
+
120
+
121
+ ## 0.5.1 January 6 2017
122
+
123
+ - Added chart major and minor gridlines handling, see:
124
+
125
+ - `chart_axis_major_gridlines_set_visible()`
126
+ - `chart_axis_minor_gridlines_set_visible()`
127
+ - `chart_axis_major_gridlines_set_line()`
128
+ - `chart_axis_minor_gridlines_set_line()`
129
+
130
+
131
+ ## 0.5.0 January 5 2017
132
+
133
+ - Added chart and plot area formatting. See `chart_chartarea_set_line()` and
134
+ `chart_plotarea_set_line()`.
135
+
136
+
137
+ ## 0.4.9 January 4 2017
138
+
139
+ - Added support for chart patterns. See @ref chart_patterns.
140
+
141
+
142
+ ## 0.4.8 January 3 2017
143
+
144
+ - Added support for chart markers. See @ref chart_markers.
145
+
146
+
147
+ ## 0.4.7 January 2 2017
148
+
149
+ - Added `chart_axis_set_reverse()` function to reverse the order of a chart
150
+ axis.
151
+
152
+ - Added `chart_axis_set_min()`and `chart_axis_set_max()` functions to set the
153
+ minimum and maximum value for a chart axis.
154
+
155
+ - Added `chart_axis_set_log_base()` function to set the log base of a chart
156
+ axis.
157
+ Feature request [#70][gh_70].
158
+
159
+ [gh_70]: https://github.com/jmcnamara/libxlsxwriter/issues/70
160
+
161
+
162
+ ## 0.4.6 January 1 2017
163
+
164
+ - Added functions to set chart line and fill properties, see:
165
+
166
+ - `chart_series_set_line()`. Feature request [#83][gh_83].
167
+ - `chart_series_set_fill()`.
168
+ - `chart_axis_set_line()`.
169
+ - `chart_axis_set_fill()`.
170
+ - @ref chart_lines.
171
+ - @ref chart_fills.
172
+
173
+ [gh_83]: https://github.com/jmcnamara/libxlsxwriter/issues/83
174
+
175
+
176
+ ## 0.4.5 December 31 2016
177
+
178
+ - Added functions to set chart legend properties: see `chart_legend_set_position()`,
179
+ `chart_legend_set_font()` and `chart_legend_delete_series()`.
180
+
181
+
182
+ ## 0.4.4 December 30 2016
183
+ - Added chart fonts. See `chart_axis_set_name_font()`, `chart_axis_set_num_font()`,
184
+ `chart_title_set_name_font()` and @ref chart_fonts.
185
+
186
+
187
+ ## 0.4.3 December 26 2016
188
+
189
+ - Added `workbook_get_worksheet_by_name()` function to get a worksheet
190
+ object from its name.
191
+
192
+ - Added `workbook_validate_worksheet_name()` function to validate a worksheet
193
+ name.
194
+
195
+ - Fix for parameter length check when strings are UTF-8.
196
+ Issue [#84][gh_84].
197
+
198
+ [gh_84]: https://github.com/jmcnamara/libxlsxwriter/issues/84
199
+
200
+
201
+ ## 0.4.2 July 14 2016
202
+
203
+ - Added support for OpenBSD and better support for FreeBSD. See @ref gsg_bsd.
204
+
205
+
206
+ ## 0.4.1 July 11 2016
207
+
208
+ - Switched to using
209
+ [tmpfileplus](http://www.di-mgt.com.au/c_function_to_create_temp_file.html)
210
+ for temporary file handles to work around issue when the temp directory on
211
+ Windows isn't writeable. The temp file directory is now also configurable at
212
+ runtime, see @ref gsg_tmpdir.
213
+
214
+ Issue [#63][gh_63].
215
+
216
+ [gh_63]: https://github.com/jmcnamara/libxlsxwriter/issues/63
217
+
218
+
219
+ ## 0.4.0 July 5 2016
220
+
221
+ - Added fixes for MSVC 2010.
222
+
223
+ - Refactored public APIs to return #lxw_error instead of int.
224
+
225
+
226
+ ## 0.3.9 July 2 2016
227
+
228
+ - Added support for MinGW, MinGW-w64, Cygwin, MSYS and MSYS2.
229
+ See @ref gsg_ming.
230
+
231
+
232
+ ## 0.3.8 June 11 2016
233
+
234
+ - Added workbook functions to set custom document properties. See
235
+ `workbook_set_custom_property_string()` and @ref doc_custom_properties.c.
236
+
237
+
238
+ ## 0.3.7 June 2 2016
239
+
240
+ - Added updated Cocoapods file for Cocoapods 1.0.0. This also add support for
241
+ the "use_frameworks" directive. Thanks to Ludovico Rossi. See @ref
242
+ getting_started for instructions on how to use the cocoapod.
243
+
244
+ Pull request [#50][gh_50].
245
+
246
+ [gh_50]: https://github.com/jmcnamara/libxlsxwriter/issues/50
247
+
248
+
249
+ ## 0.3.6 June 1 2016
250
+
251
+ - Fix for `worksheet_insert_image()` issue when handling images with zero dpi.
252
+
253
+
254
+ ## 0.3.5 May 31 2016
255
+
256
+ - Refactored the error handling and reporting for when the file creation
257
+ subsystem fails due to file permissions or other issues. The new error codes
258
+ are in `#lxw_error` and the codes can be converted to strings, for reporting,
259
+ using the new `lxw_strerror()` function.
260
+
261
+ Issue [#49][gh_49].
262
+
263
+ [gh_49]: https://github.com/jmcnamara/libxlsxwriter/issues/49
264
+
265
+
266
+ ## 0.3.4 May 28 2016
267
+
268
+ - Updated the @ref getting_started docs with instructions on how to build
269
+ libxlsxwriter for Windows using Microsoft Visual Studio and added links to
270
+ the example MSVC project:
271
+ [MSVCLibXlsxWriter](https://github.com/jmcnamara/MSVCLibXlsxWriter).
272
+
273
+
274
+ ## 0.3.3 May 23 2016
275
+
276
+ - Added support for charts via the @ref chart.h "The Chart object". See the
277
+ examples of the supported chart types:
278
+
279
+ - @ref chart_area.c "Area chart"
280
+ - @ref chart_bar.c "Bar chart"
281
+ - @ref chart_column.c "Column chart"
282
+ - @ref chart_line.c "Line chart"
283
+ - @ref chart_scatter.c "Scatter chart"
284
+ - @ref chart_radar.c "Radar chart"
285
+ - @ref chart_pie.c "Pie chart"
286
+ - @ref chart_doughnut.c "Doughnut chart"
287
+ - @ref chart_styles.c "Built-in charts styles"
288
+
289
+ Feature request [#36][gh_36].
290
+
291
+ [gh_36]: https://github.com/jmcnamara/libxlsxwriter/issues/36
292
+
293
+
294
+ ## 0.3.2 April 8 2016
295
+
296
+ - Added the `worksheet_write_boolean()` function to write Excel boolean
297
+ values.
298
+ Feature request [#47][gh_47].
299
+
300
+ [gh_47]: https://github.com/jmcnamara/libxlsxwriter/issues/47
301
+
302
+
303
+ ## 0.3.1 January 9 2016
304
+
305
+ - Improved performance 20-30% for large data files.
306
+
307
+
308
+ ## 0.3.0 January 4 2016
309
+
310
+ - Renamed `worksheet_set_row()` function to `worksheet_set_row_opt()` for
311
+ consistency with current and future APIs. The `worksheet_set_row()` function
312
+ is now used without the options parameter.
313
+
314
+ Note: This is a backward incompatible change.
315
+
316
+
317
+ - Renamed `worksheet_set_column()` function to `worksheet_set_column_opt()`
318
+ for consistency with current and future APIs. The `worksheet_set_column()`
319
+ function is now used without the options parameter.
320
+
321
+ Note: This is a backward incompatible change.
322
+
323
+
324
+ ## 0.2.9 January 3 2016
325
+
326
+ - Added the `worksheet_insert_image()` function to add PNG and JPG images to
327
+ worksheets. See @ref demo.c and @ref images.c.
328
+
329
+
330
+ ## 0.2.8 December 22 2015
331
+
332
+ - Added `worksheet_set_default_row()` function to allow setting of default row
333
+ height and hiding unused rows. See the @ref hide_row_col.c example.
334
+
335
+
336
+ ## 0.2.7 December 21 2015
337
+
338
+ - Added support for escaping control characters in strings. This prevents
339
+ unreadable files if string data contains control characters.
340
+ Issue [#42][gh_42].
341
+
342
+ [gh_42]: https://github.com/jmcnamara/libxlsxwriter/issues/42
343
+
344
+
345
+ ## 0.2.6 December 19 2015
346
+
347
+ - Added `worksheet_protect()` function to protect Excel worksheet elements
348
+ from modification. See the @ref worksheet_protection.c example.
349
+
350
+
351
+ ## 0.2.5 December 14 2015
352
+
353
+ - Added `workbook_set_properties()` function to set Excel document properties
354
+ such as Author and Title. See the @ref doc_properties.c example.
355
+
356
+
357
+ ## 0.2.4 December 13 2015
358
+
359
+ - Added `worksheet_hide()` function to hide a worksheet. See the @ref
360
+ hide_sheet.c example.
361
+
362
+ - Added `worksheet_set_first_sheet()` function to set the first visible
363
+ worksheet in a workbook with a large number of worksheets.
364
+
365
+
366
+ ## 0.2.3 December 12 2015
367
+
368
+ - Added `worksheet_set_tab_color()` function to set the worksheet tab
369
+ color. See the @ref tab_colors.c example.
370
+
371
+
372
+ ## 0.2.2 December 11 2015
373
+
374
+ - Replaced shared strings hash table with a Red/Black tree implementation for
375
+ better performance.
376
+ Thanks to Martin Renters. Pull Request [#41][gh_41].
377
+
378
+ [gh_41]: https://github.com/jmcnamara/libxlsxwriter/issues/41
379
+
380
+
381
+ ## 0.2.1 December 11 2015
382
+
383
+ - Added `worksheet_right_to_left()` function. This can be used to change the
384
+ default direction of the worksheet from left-to-right when creating Arabic,
385
+ Hebrew or other near or far eastern worksheets that use right-to-left as the
386
+ default direction.
387
+
388
+ - Added `worksheet_hide_zero()` function to hide zero cell values.
389
+
390
+ - Added `worksheet_set_zoom()` method to set the worksheet zoom factor.
391
+
392
+
393
+ ## 0.2.0 December 9 2015
394
+
395
+ - Added `worksheet_set_selection()` function to set the cell selected range on
396
+ a worksheet.
397
+
398
+
399
+ ## 0.1.9 December 7 2015
400
+
401
+ - Replaced main worksheet data structure with a Red/Black tree implementation
402
+ for better performance when data isn't added in linear row-column order.
403
+ Thanks to Martin Renters. Pull Request [#14][gh_14] and [#16][gh_16].
404
+
405
+ [gh_14]: https://github.com/jmcnamara/libxlsxwriter/issues/14
406
+ [gh_16]: https://github.com/jmcnamara/libxlsxwriter/issues/16
407
+
408
+
409
+ ## 0.1.8 December 7 2015
410
+
411
+ - Added `worksheet_freeze_panes()` and `worksheet_split_panes()` to allow
412
+ setting worksheet panes. See @ref panes.c example.
413
+
414
+ - Added link to [Xcode project][libxlsxwriterCocoaExamples] for iOS and OS X
415
+ with Objective-C and Swift, provided by Ludovico Rossi.
416
+
417
+ - Added improved support for Windows.
418
+
419
+ [libxlsxwriterCocoaExamples]: https://github.com/lrossi/libxlsxwriterCocoaExamples
420
+
421
+ ## 0.1.7 September 27 2015
422
+
423
+ - Fixed Cocoapod spec file for iOS and OS X.
424
+
425
+
426
+ ## 0.1.6 September 27 2015
427
+
428
+ - Added Cocoapod spec file to allow the library to be installed using
429
+ [CocoaPods](https://cocoapods.org).
430
+ Pull Request [#7](https://github.com/jmcnamara/libxlsxwriter/issues/7).
431
+
432
+
433
+ ## 0.1.5 May 3 2015
434
+
435
+ - Added `worksheet_write_url()` function to write urls/hyperlinks to
436
+ worksheets. See also @ref hyperlinks.c.
437
+
438
+
439
+ ## 0.1.4 March 18 2015
440
+
441
+ - Added `worksheet_autofilter()` function to add autofilters to worksheets.
442
+ See also @ref autofilter.c.
443
+
444
+
445
+ ## 0.1.3 March 15 2015
446
+
447
+ - Added `worksheet_write_array_formula()` function to allow writing of
448
+ array formulas in worksheets.
449
+
450
+
451
+ ## 0.1.2 March 14 2015
452
+
453
+ - Added `worksheet_set_h_pagebreaks()` and `worksheet_set_v_pagebreaks()`
454
+ functions to define worksheet page breaks.
455
+
456
+ - Added LXW_FOREACH_WORKSHEET() macro to allow iteration over all the
457
+ worksheets in a workbook.
458
+
459
+ - Added `worksheet_set_print_scale()` function to set the scale factor for
460
+ the printed page.
461
+
462
+ - Added `worksheet_set_start_page()` function to set the start page number
463
+ when printing.
464
+
465
+
466
+ ## 0.1.1 March 13 2015
467
+
468
+ - Added `worksheet_print_area()` function to control the print area of a
469
+ worksheet.
470
+
471
+ - Added `worksheet_fit_to_pages()` function to fit the printed area to a
472
+ specific number of pages both vertically and horizontally.
473
+
474
+
475
+ ## 0.1.0 March 12 2015
476
+
477
+ - Added `worksheet_repeat_rows()` and `worksheet_repeat_columns()` functions
478
+ to control the repeated rows/columns on printed worksheets.
479
+
480
+
481
+ ## 0.0.9 March 9 2015
482
+
483
+ - Added `worksheet_gridlines()` function to show/hide screen and print
484
+ gridlines.
485
+
486
+ - Added `worksheet_center_horizontally()` and `worksheet_center_vertically()`
487
+ functions to center worksheet on the printed page.
488
+
489
+ - Added `worksheet_print_row_col_headers()` function to enable printing of row
490
+ and column headers.
491
+
492
+
493
+ ## 0.0.8 March 8 2015
494
+
495
+ - Added support for worksheet headers and footers via the
496
+ `worksheet_set_header()` and `worksheet_set_footer()` functions. See also
497
+ @ref headers_footers.c.
498
+
499
+
500
+ ## 0.0.7 March 7 2015
501
+
502
+ - Added the `worksheet_merge_range()` method to merge worksheet cells. See
503
+ also @ref merge_range.c.
504
+
505
+
506
+ ## 0.0.6 March 5 2015
507
+
508
+ - Added the `workbook_define_name()` method to create defined names and ranges
509
+ in a workbook or worksheet.
510
+
511
+
512
+ ## 0.0.5 March 6 2015
513
+
514
+ - Added `worksheet_select()` function to set worksheets as selected.
515
+
516
+ - Added `worksheet_activate()` to set the active worksheet.
517
+
518
+ - Several portability fixes to fix warnings with different compilers.
519
+
520
+
521
+ ## 0.0.4 March 1 2015
522
+
523
+ - Added `worksheet_set_margins()` function to set top, bottom, left and right
524
+ margins in a worksheet.
525
+
526
+ - Fix for issue where format objects were written to the file in the order of
527
+ creation rather than the order of use. This issue caused incorrect formats
528
+ in cells.
529
+ Issue [#3](https://github.com/jmcnamara/libxlsxwriter/issues/3).
530
+
531
+ - Fix for issue where tmp files in `constant_memory` mode weren't closed
532
+ until application exited.
533
+ Issue [#1](https://github.com/jmcnamara/libxlsxwriter/issues/1).
534
+
535
+
536
+ ## 0.0.3 January 7 2015
537
+
538
+ - Added worksheet page setup methods.
539
+
540
+ - `worksheet_set_landscape()`
541
+ - `worksheet_set_portrait()`
542
+ - `worksheet_set_page_view()`
543
+ - `worksheet_set_paper()`
544
+ - `worksheet_print_across()`
545
+
546
+
547
+ ## 0.0.2 June 26 2014
548
+
549
+ - First public release.
550
+
551
+
552
+ ## 0.0.1 June 8 2014
553
+
554
+ - First GitHub release.
555
+
556
+
557
+ */