fast_excel 0.6.0 → 0.6.1

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 (97) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/test.yml +1 -1
  3. data/CHANGELOG.md +3 -1
  4. data/Rakefile +4 -1
  5. data/fast_excel.gemspec +1 -1
  6. data/lib/fast_excel/binding/workbook.rb +9 -0
  7. data/lib/fast_excel/binding/worksheet.rb +2 -2
  8. data/lib/fast_excel/binding.rb +16 -13
  9. data/libxlsxwriter/.cirrus.yml +9 -0
  10. data/libxlsxwriter/.github/workflows/cmake_actions.yml +10 -6
  11. data/libxlsxwriter/.github/workflows/code_style.yml +2 -0
  12. data/libxlsxwriter/.github/workflows/make_32_actions.yml +43 -0
  13. data/libxlsxwriter/.github/workflows/windows_build.yml +7 -6
  14. data/libxlsxwriter/.github/workflows/zig_build.yml +1 -3
  15. data/libxlsxwriter/.gitignore +9 -7
  16. data/libxlsxwriter/.indent.pro +6 -0
  17. data/libxlsxwriter/CMakeLists.txt +377 -238
  18. data/libxlsxwriter/Changes.txt +189 -0
  19. data/libxlsxwriter/LICENSE.txt +1 -1
  20. data/libxlsxwriter/Makefile +36 -4
  21. data/libxlsxwriter/Readme.md +1 -1
  22. data/libxlsxwriter/build.zig +181 -92
  23. data/libxlsxwriter/build.zig.zon +15 -4
  24. data/libxlsxwriter/cocoapods/libxlsxwriter-umbrella.h +4 -0
  25. data/libxlsxwriter/include/xlsxwriter/app.h +2 -1
  26. data/libxlsxwriter/include/xlsxwriter/chart.h +134 -1
  27. data/libxlsxwriter/include/xlsxwriter/chartsheet.h +2 -1
  28. data/libxlsxwriter/include/xlsxwriter/comment.h +2 -1
  29. data/libxlsxwriter/include/xlsxwriter/common.h +12 -8
  30. data/libxlsxwriter/include/xlsxwriter/content_types.h +3 -1
  31. data/libxlsxwriter/include/xlsxwriter/core.h +2 -1
  32. data/libxlsxwriter/include/xlsxwriter/custom.h +2 -1
  33. data/libxlsxwriter/include/xlsxwriter/drawing.h +2 -1
  34. data/libxlsxwriter/include/xlsxwriter/format.h +34 -3
  35. data/libxlsxwriter/include/xlsxwriter/hash_table.h +2 -1
  36. data/libxlsxwriter/include/xlsxwriter/metadata.h +5 -1
  37. data/libxlsxwriter/include/xlsxwriter/packager.h +6 -1
  38. data/libxlsxwriter/include/xlsxwriter/relationships.h +3 -1
  39. data/libxlsxwriter/include/xlsxwriter/rich_value.h +51 -0
  40. data/libxlsxwriter/include/xlsxwriter/rich_value_rel.h +50 -0
  41. data/libxlsxwriter/include/xlsxwriter/rich_value_structure.h +53 -0
  42. data/libxlsxwriter/include/xlsxwriter/rich_value_types.h +49 -0
  43. data/libxlsxwriter/include/xlsxwriter/shared_strings.h +2 -1
  44. data/libxlsxwriter/include/xlsxwriter/styles.h +2 -1
  45. data/libxlsxwriter/include/xlsxwriter/table.h +2 -1
  46. data/libxlsxwriter/include/xlsxwriter/theme.h +2 -1
  47. data/libxlsxwriter/include/xlsxwriter/third_party/ioapi.h +4 -4
  48. data/libxlsxwriter/include/xlsxwriter/third_party/zip.h +3 -3
  49. data/libxlsxwriter/include/xlsxwriter/utility.h +58 -7
  50. data/libxlsxwriter/include/xlsxwriter/vml.h +2 -1
  51. data/libxlsxwriter/include/xlsxwriter/workbook.h +59 -2
  52. data/libxlsxwriter/include/xlsxwriter/worksheet.h +159 -13
  53. data/libxlsxwriter/include/xlsxwriter/xmlwriter.h +11 -10
  54. data/libxlsxwriter/include/xlsxwriter.h +5 -4
  55. data/libxlsxwriter/libxlsxwriter.podspec +6 -6
  56. data/libxlsxwriter/src/Makefile +2 -1
  57. data/libxlsxwriter/src/app.c +2 -1
  58. data/libxlsxwriter/src/chart.c +360 -63
  59. data/libxlsxwriter/src/chartsheet.c +2 -1
  60. data/libxlsxwriter/src/comment.c +2 -1
  61. data/libxlsxwriter/src/content_types.c +22 -1
  62. data/libxlsxwriter/src/core.c +2 -1
  63. data/libxlsxwriter/src/custom.c +2 -1
  64. data/libxlsxwriter/src/drawing.c +7 -3
  65. data/libxlsxwriter/src/format.c +21 -1
  66. data/libxlsxwriter/src/hash_table.c +2 -1
  67. data/libxlsxwriter/src/metadata.c +176 -20
  68. data/libxlsxwriter/src/packager.c +306 -6
  69. data/libxlsxwriter/src/relationships.c +25 -1
  70. data/libxlsxwriter/src/rich_value.c +191 -0
  71. data/libxlsxwriter/src/rich_value_rel.c +142 -0
  72. data/libxlsxwriter/src/rich_value_structure.c +162 -0
  73. data/libxlsxwriter/src/rich_value_types.c +199 -0
  74. data/libxlsxwriter/src/shared_strings.c +2 -1
  75. data/libxlsxwriter/src/styles.c +31 -7
  76. data/libxlsxwriter/src/table.c +2 -1
  77. data/libxlsxwriter/src/theme.c +2 -1
  78. data/libxlsxwriter/src/utility.c +136 -46
  79. data/libxlsxwriter/src/vml.c +2 -1
  80. data/libxlsxwriter/src/workbook.c +191 -10
  81. data/libxlsxwriter/src/worksheet.c +514 -34
  82. data/libxlsxwriter/src/xmlwriter.c +17 -22
  83. data/libxlsxwriter/third_party/minizip/Makefile.orig +1 -1
  84. data/libxlsxwriter/third_party/minizip/configure.ac +1 -1
  85. data/libxlsxwriter/third_party/minizip/ioapi.h +6 -6
  86. data/libxlsxwriter/third_party/minizip/miniunz.c +16 -2
  87. data/libxlsxwriter/third_party/minizip/unzip.c +4 -4
  88. data/libxlsxwriter/third_party/minizip/unzip.h +1 -1
  89. data/libxlsxwriter/third_party/minizip/zip.c +5 -5
  90. data/libxlsxwriter/third_party/minizip/zip.h +3 -3
  91. data/libxlsxwriter/version.txt +1 -1
  92. data/test/validations_test.rb +3 -3
  93. data/test/worksheet_test.rb +10 -2
  94. metadata +11 -4
  95. data/libxlsxwriter/cmake/FindMINIZIP.cmake +0 -121
  96. data/libxlsxwriter/cmake/FindPackage.cmake +0 -183
  97. data/libxlsxwriter/cmake/i686-toolchain.cmake +0 -7
@@ -1,6 +1,195 @@
1
1
  /**
2
2
  @page changes Changes
3
3
 
4
+ ## Information for Packagers
5
+
6
+ - This is serial version 1.2.4. This is not a semver version number.
7
+
8
+ - This is shared object library version `libxlsxwriter.so.11`. This should be
9
+ updated automatically via `make` and `cmake` as part of the build process.
10
+ This version contains ABI changes since the previous release.
11
+
12
+ - Please report any downstream patches back upstream to help improve the overall
13
+ build process.
14
+
15
+
16
+ ## 1.2.4 Jan 6 2026
17
+
18
+ - Added validation of `lxw_datetime` fields to ensure that they are
19
+ within Excel's allowable ranges.
20
+
21
+ Issue [#491][gh_491].
22
+
23
+ [gh_491]: https://github.com/jmcnamara/libxlsxwriter/issues/491
24
+
25
+ - Fixed an issue where setting the x or y scales to math.h
26
+ `INFINITY` resulted in an infinite loop.
27
+
28
+ Issue [#490][gh_490].
29
+
30
+ [gh_490]: https://github.com/jmcnamara/libxlsxwriter/issues/490
31
+
32
+ - Added validation checks for various enum values.
33
+
34
+ Issue [#487][gh_487].
35
+
36
+ [gh_487]: https://github.com/jmcnamara/libxlsxwriter/issues/487
37
+
38
+ - Fixed handling of invalid chart types.
39
+
40
+ Issue [#486][gh_486].
41
+
42
+ [gh_486]: https://github.com/jmcnamara/libxlsxwriter/issues/486
43
+
44
+ - zig: Updated to Zig 0.15.0. Also, Zig build refactored for compatibility with
45
+ v0.15.1 - 0.16.0-dev.
46
+
47
+
48
+ ## 1.2.3 Jun 30 2025
49
+
50
+ - Added support for handling dates in the Excel 1904 epoch. See
51
+ `workbook_use_1904_epoch()`.
52
+
53
+ Feature request [#483][gh_483].
54
+
55
+ [gh_483]: https://github.com/jmcnamara/libxlsxwriter/issues/483
56
+
57
+ - Fixed undefined behavior bugs in string indexing.
58
+
59
+ Issue [#482][gh_482].
60
+
61
+ [gh_482]: https://github.com/jmcnamara/libxlsxwriter/issues/482
62
+
63
+
64
+ ## 1.2.2 March 29 2025
65
+
66
+ - Added support for manually positioning chart elements such as the
67
+ chart axis labels, the chart legend, the chart plot area and the chart title.
68
+ See @ref chart_layout for more details.
69
+
70
+ Feature request [#477][gh_477].
71
+
72
+ [gh_477]: https://github.com/jmcnamara/libxlsxwriter/issues/477
73
+
74
+
75
+ ## 1.2.1 February 26 2025
76
+
77
+ - Added the `workbook_set_size()` function to set the size of the window when
78
+ the file is opened. This is generally only useful on macOS since Microsoft
79
+ Windows uses the window size from the last time an Excel file was
80
+ opened/saved. Feature request [#472][gh_472].
81
+
82
+ [gh_472]: https://github.com/jmcnamara/libxlsxwriter/issues/472
83
+
84
+ - Improved the cmake build support for using the `minizip` library.
85
+ Pull request [#471][gh_471].
86
+
87
+ [gh_471]: https://github.com/jmcnamara/libxlsxwriter/issues/471
88
+
89
+ - Fix buffer overflow in Table formula expansion.
90
+
91
+
92
+ ## 1.2.0 January 11 2025
93
+
94
+ - Added `format_set_font_family()` and `format_set_font_charset()` format
95
+ functions to support Middle Eastern and Asian fonts.
96
+ Feature request [#468][gh_468].
97
+
98
+ [gh_468]: https://github.com/jmcnamara/libxlsxwriter/issues/468
99
+
100
+
101
+ ## 1.1.9 October 24 2024
102
+
103
+ - Fix minor pointer/value error in `lxw_name_to_row()` and `lxw_name_to_col()`
104
+ utility functions. Issue [#459][gh_459].
105
+
106
+ [gh_459]: https://github.com/jmcnamara/libxlsxwriter/issues/459
107
+
108
+
109
+ ## 1.1.8 July 31 2024
110
+
111
+ - Added support for embedding images into worksheets with
112
+ `worksheet_embed_image()`.
113
+
114
+ This can be useful if you are building up a spreadsheet of products with a
115
+ column of images for each product. Embedded images move with the cell so they
116
+ can be used in worksheet tables or data ranges that will be sorted or
117
+ filtered.
118
+
119
+ This functionality is the equivalent of Excel's menu option to insert an image
120
+ using the option to "Place in Cell" which is available in Excel 365 versions
121
+ from 2023 onwards.
122
+
123
+ - Fixed various issues:
124
+
125
+ - [Failure on 32bit architectures #441](https://github.com/jmcnamara/libxlsxwriter/issues/441)
126
+ - [workbook_validate_sheet_name buffer-overflow #442](https://github.com/jmcnamara/libxlsxwriter/issues/442)
127
+ - [workbook_add_worksheet does not return a reasonable worksheet #443](https://github.com/jmcnamara/libxlsxwriter/issues/443)
128
+ - [workbook_define_name stack-buffer-underflow #444](https://github.com/jmcnamara/libxlsxwriter/issues/444)
129
+ - [workbook_close stack-buffer-overflow #445](https://github.com/jmcnamara/libxlsxwriter/issues/445)
130
+ - [_store_array_formula heap-buffer-overflow #446](https://github.com/jmcnamara/libxlsxwriter/issues/446)
131
+ - [worksheet_set_selection stack-buffer-overflow #447](https://github.com/jmcnamara/libxlsxwriter/issues/447)
132
+
133
+
134
+ - Note this version is tagged as `v1.1.8` instead of `RELEASE_1.1.8` for better
135
+ interoperability with Xcode.
136
+
137
+
138
+ ## 1.1.7 April 5 2024
139
+
140
+ - Bump `.so` version to 6. This was missed in the previous release.
141
+
142
+
143
+ ## 1.1.6 April 4 2024
144
+
145
+ - Updated vendored version of minizip to v 1.3.0 to include upstream fixes.
146
+
147
+ Feature request [#419][gh_419].
148
+
149
+ [gh_419]: https://github.com/jmcnamara/libxlsxwriter/issues/419
150
+
151
+ - Added `quote_prefix` format property.
152
+
153
+ Feature request [#385][gh_385].
154
+
155
+ [gh_385]: https://github.com/jmcnamara/libxlsxwriter/issues/385
156
+
157
+ - Added support for signed VBA projects.
158
+ </p>
159
+
160
+ - Fix worksheet password hashing algorithm for long passwords. Replace/fix
161
+ the worksheet protection password algorithm so that is works correctly
162
+ for strings over 24 chars.
163
+ </p>
164
+
165
+ - Fix cmake minizip version check.
166
+
167
+ Feature request [#405][gh_405].
168
+
169
+ [gh_405]: https://github.com/jmcnamara/libxlsxwriter/issues/405
170
+
171
+ - Fix for buffer overflow with utf-8 strings in data validation.
172
+
173
+ Feature request [#394][gh_394].
174
+
175
+ [gh_394]: https://github.com/jmcnamara/libxlsxwriter/issues/394
176
+
177
+ - Fix for range in text type conditional format.
178
+
179
+ Feature request [#395][gh_395].
180
+
181
+ [gh_395]: https://github.com/jmcnamara/libxlsxwriter/issues/395
182
+
183
+ - Fix 32bit multiply with overflow issue for images.
184
+
185
+ Fix multiply with overflow issue when image locations in the worksheet
186
+ were greater than the u32 max value.
187
+
188
+ - Added Swift package manager support.
189
+ </p>
190
+
191
+ - Added support for building Zig library.
192
+ </p>
4
193
 
5
194
  ## 1.1.5 December 30 2022
6
195
 
@@ -4,7 +4,7 @@
4
4
 
5
5
  Libxlsxwriter is released under a FreeBSD license:
6
6
 
7
- Copyright 2014-2022, John McNamara <jmcnamara@cpan.org>
7
+ Copyright 2014-2026, John McNamara <jmcnamara@cpan.org>
8
8
  All rights reserved.
9
9
 
10
10
  Redistribution and use in source and binary forms, with or without
@@ -2,7 +2,8 @@
2
2
  #
3
3
  # Makefile for libxlsxwriter library.
4
4
  #
5
- # Copyright 2014-2022, John McNamara, jmcnamara@cpan.org
5
+ # SPDX-License-Identifier: BSD-2-Clause
6
+ # Copyright 2014-2026, John McNamara, jmcnamara@cpan.org.
6
7
  #
7
8
 
8
9
  # Keep the output quiet by default.
@@ -20,6 +21,14 @@ PYTESTFILES ?= test
20
21
  VERSION = $(shell sed -n -e 's/.*LXW_VERSION \"\(.*\)\"/\1/p' include/xlsxwriter.h)
21
22
  SOVERSION = $(shell sed -n -e 's/.*LXW_SOVERSION \"\(.*\)\"/\1/p' include/xlsxwriter.h)
22
23
 
24
+ ENABLED_OPTIONS = zlib
25
+ ifdef USE_SYSTEM_MINIZIP
26
+ ENABLED_OPTIONS += minizip
27
+ endif
28
+ ifdef USE_OPENSSL_MD5
29
+ ENABLED_OPTIONS += libcrypto
30
+ endif
31
+
23
32
  .PHONY: docs tags examples third_party
24
33
 
25
34
  # Build libxlsxwriter.
@@ -98,11 +107,21 @@ test_const : all
98
107
  $(Q)! $(MAKE) -C test/functional/src CFLAGS=-Wwrite-strings 2>&1 | grep -A 1 "note:"
99
108
 
100
109
 
101
- # Run the functional tests.
110
+ # Run the functional tests. Can be run as a subset:
111
+ # make test_functional PYTESTFILES="test_image" SRCTESTFILES="test_image*.c"
112
+ #
102
113
  test_functional : all
103
114
  $(Q)$(MAKE) -C test/functional/src
104
115
  $(Q)$(PYTEST) test/functional -v -k $(PYTESTFILES)
105
116
 
117
+ # Similar to `test_functional` above but builds all the test cases into a single
118
+ # executable to avoid a slow link step per test. Can be run as a subset:
119
+ # make fast_functional PYTESTFILES="test_image" SRCTESTFILES="test_image*.c"
120
+ #
121
+ fast_functional : all
122
+ $(Q)$(MAKE) -C test/functional/src functional_all
123
+ $(Q)LXW_FUNCTIONAL_EXE=./functional_all $(PYTEST) test/functional -v -k $(PYTESTFILES)
124
+
106
125
  # Run all tests.
107
126
  test_unit : all
108
127
  $(Q)$(MAKE) -C src test_lib
@@ -117,7 +136,10 @@ test_cpp : all
117
136
  test_cmake :
118
137
  ifneq ($(findstring m32,$(CFLAGS)),m32)
119
138
  $(Q)$(MAKE) -C src clean
120
- $(Q)cd cmake; cmake .. -DBUILD_TESTS=ON -DBUILD_EXAMPLES=ON; make clean; make; cp libxlsxwriter.a ../src/
139
+ $(Q)mkdir -p build
140
+ $(Q)cd build
141
+ $(Q)cmake .. -DBUILD_TESTS=ON -DBUILD_EXAMPLES=ON
142
+ $(Q)make clean; make; cp libxlsxwriter.a ../src/
121
143
  $(Q)cmake/xlsxwriter_unit
122
144
  $(Q)$(MAKE) -C test/functional/src
123
145
  $(Q)$(PYTEST) test/functional -v -k $(PYTESTFILES)
@@ -139,6 +161,7 @@ test_compile :
139
161
  # Indent the source files with the .indent.pro settings.
140
162
  indent:
141
163
  $(Q)gindent src/*.c include/*.h include/xlsxwriter/*.h
164
+ $(Q)gersemi --no-warn-about-unknown-commands -i CMakeLists.txt
142
165
 
143
166
  tags:
144
167
  $(Q)rm -f TAGS
@@ -163,7 +186,11 @@ install: all
163
186
  $(Q)mkdir -p $(DESTDIR)$(PREFIX)/lib
164
187
  $(Q)cp -R lib/* $(DESTDIR)$(PREFIX)/lib
165
188
  $(Q)mkdir -p $(DESTDIR)$(PREFIX)/lib/pkgconfig
166
- $(Q)sed -e 's|@PREFIX@|$(PREFIX)|g' -e 's|@VERSION@|$(VERSION)|g' dev/release/pkg-config.txt > $(DESTDIR)$(PREFIX)/lib/pkgconfig/xlsxwriter.pc
189
+ $(Q)sed -e 's|@PREFIX@|$(PREFIX)|g' \
190
+ -e 's|@VERSION@|$(VERSION)|g' \
191
+ -e 's|@ENABLED_OPTIONS@|$(ENABLED_OPTIONS)|g' \
192
+ dev/release/pkg-config.txt \
193
+ > $(DESTDIR)$(PREFIX)/lib/pkgconfig/xlsxwriter.pc
167
194
 
168
195
  # Simpler uninstall.
169
196
  uninstall:
@@ -184,6 +211,11 @@ coverity: clean_src third_party
184
211
  $(Q)$(MAKE) -C src clean
185
212
  $(Q)rm -f lib/*
186
213
 
214
+ # Run address sanitiser.
215
+ address_sanitiser: third_party
216
+ $(Q)$(MAKE) -C src libxlsxwriter.a CFLAGS="-fsanitize=address -O1 -fsanitize-coverage=trace-pc-guard -fno-omit-frame-pointer -g"
217
+ $(Q)$(MAKE) -C examples CFLAGS="-fsanitize=address -O1 -fsanitize-coverage=trace-pc-guard -fno-omit-frame-pointer -g"
218
+
187
219
  # Run gcov coverage analysis.
188
220
  gcov: third_party
189
221
  $(Q)$(MAKE) -C src clean
@@ -20,7 +20,7 @@ It supports features such as:
20
20
  - Defined names.
21
21
  - Autofilters.
22
22
  - Charts.
23
- - Data validation and drop down lists.
23
+ - Data validation and dropdown lists.
24
24
  - Conditional formatting.
25
25
  - Worksheet PNG/JPEG/GIF images.
26
26
  - Cell comments.