kmadej_fast_excel_fork 0.2.2

Sign up to get free protection for your applications and to get access to all the features.
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
+ */