fast_excel 0.4.1 → 0.5.0
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.
- checksums.yaml +4 -4
- data/.github/workflows/test.yml +1 -7
- data/CHANGELOG.md +9 -0
- data/Gemfile +1 -1
- data/examples/example.rb +2 -0
- data/examples/example_date_time.rb +38 -0
- data/fast_excel.gemspec +2 -2
- data/lib/fast_excel/binding/format.rb +17 -0
- data/lib/fast_excel/binding/workbook.rb +39 -17
- data/lib/fast_excel/binding/worksheet.rb +57 -13
- data/lib/fast_excel/binding.rb +7 -7
- data/lib/fast_excel.rb +27 -20
- data/libxlsxwriter/.github/FUNDING.yml +1 -0
- data/libxlsxwriter/.github/ISSUE_TEMPLATE.md +85 -0
- data/libxlsxwriter/.github/PULL_REQUEST_TEMPLATE.md +130 -0
- data/libxlsxwriter/.github/workflows/cmake_actions.yml +48 -0
- data/libxlsxwriter/.github/workflows/code_style.yml +23 -0
- data/libxlsxwriter/.github/workflows/coverity.yml +22 -0
- data/libxlsxwriter/.github/workflows/make_actions.yml +52 -0
- data/libxlsxwriter/.github/workflows/valgrind.yml +23 -0
- data/libxlsxwriter/.github/workflows/windows_build.yml +54 -0
- data/libxlsxwriter/.github/workflows/zig_build.yml +22 -0
- data/libxlsxwriter/.gitignore +16 -1
- data/libxlsxwriter/.indent.pro +24 -0
- data/libxlsxwriter/CMakeLists.txt +156 -56
- data/libxlsxwriter/CONTRIBUTING.md +2 -2
- data/libxlsxwriter/Changes.txt +344 -2
- data/libxlsxwriter/LICENSE.txt +66 -8
- data/libxlsxwriter/Makefile +151 -54
- data/libxlsxwriter/Package.swift +42 -0
- data/libxlsxwriter/Readme.md +4 -2
- data/libxlsxwriter/build.zig +324 -0
- data/libxlsxwriter/build.zig.zon +11 -0
- data/libxlsxwriter/cmake/FindMINIZIP.cmake +3 -3
- data/libxlsxwriter/cocoapods/libxlsxwriter-umbrella.h +6 -0
- data/libxlsxwriter/include/xlsxwriter/app.h +2 -1
- data/libxlsxwriter/include/xlsxwriter/chart.h +236 -32
- data/libxlsxwriter/include/xlsxwriter/chartsheet.h +7 -7
- data/libxlsxwriter/include/xlsxwriter/comment.h +76 -0
- data/libxlsxwriter/include/xlsxwriter/common.h +111 -50
- data/libxlsxwriter/include/xlsxwriter/content_types.h +8 -1
- data/libxlsxwriter/include/xlsxwriter/core.h +1 -1
- data/libxlsxwriter/include/xlsxwriter/custom.h +1 -1
- data/libxlsxwriter/include/xlsxwriter/drawing.h +11 -20
- data/libxlsxwriter/include/xlsxwriter/format.h +121 -8
- data/libxlsxwriter/include/xlsxwriter/hash_table.h +1 -1
- data/libxlsxwriter/include/xlsxwriter/metadata.h +49 -0
- data/libxlsxwriter/include/xlsxwriter/packager.h +27 -16
- data/libxlsxwriter/include/xlsxwriter/relationships.h +1 -1
- data/libxlsxwriter/include/xlsxwriter/shared_strings.h +1 -1
- data/libxlsxwriter/include/xlsxwriter/styles.h +13 -7
- data/libxlsxwriter/include/xlsxwriter/table.h +51 -0
- data/libxlsxwriter/include/xlsxwriter/theme.h +1 -1
- data/libxlsxwriter/include/xlsxwriter/third_party/emyg_dtoa.h +26 -0
- data/libxlsxwriter/include/xlsxwriter/third_party/ioapi.h +27 -25
- data/libxlsxwriter/include/xlsxwriter/third_party/md5.h +45 -0
- data/libxlsxwriter/include/xlsxwriter/third_party/zip.h +155 -153
- data/libxlsxwriter/include/xlsxwriter/utility.h +70 -8
- data/libxlsxwriter/include/xlsxwriter/vml.h +55 -0
- data/libxlsxwriter/include/xlsxwriter/workbook.h +218 -47
- data/libxlsxwriter/include/xlsxwriter/worksheet.h +2770 -241
- data/libxlsxwriter/include/xlsxwriter/xmlwriter.h +12 -8
- data/libxlsxwriter/include/xlsxwriter.h +4 -2
- data/libxlsxwriter/libxlsxwriter.podspec +8 -5
- data/libxlsxwriter/src/Makefile +58 -21
- data/libxlsxwriter/src/app.c +5 -2
- data/libxlsxwriter/src/chart.c +396 -81
- data/libxlsxwriter/src/chartsheet.c +22 -22
- data/libxlsxwriter/src/comment.c +443 -0
- data/libxlsxwriter/src/content_types.c +40 -1
- data/libxlsxwriter/src/core.c +2 -2
- data/libxlsxwriter/src/custom.c +1 -1
- data/libxlsxwriter/src/drawing.c +160 -40
- data/libxlsxwriter/src/format.c +109 -25
- data/libxlsxwriter/src/hash_table.c +1 -1
- data/libxlsxwriter/src/metadata.c +283 -0
- data/libxlsxwriter/src/packager.c +794 -94
- data/libxlsxwriter/src/relationships.c +1 -1
- data/libxlsxwriter/src/shared_strings.c +2 -4
- data/libxlsxwriter/src/styles.c +353 -58
- data/libxlsxwriter/src/table.c +304 -0
- data/libxlsxwriter/src/theme.c +1 -1
- data/libxlsxwriter/src/utility.c +143 -43
- data/libxlsxwriter/src/vml.c +1062 -0
- data/libxlsxwriter/src/workbook.c +567 -77
- data/libxlsxwriter/src/worksheet.c +6668 -1462
- data/libxlsxwriter/src/xmlwriter.c +95 -5
- data/libxlsxwriter/third_party/dtoa/Makefile +42 -0
- data/libxlsxwriter/third_party/dtoa/emyg_dtoa.c +461 -0
- data/libxlsxwriter/third_party/dtoa/emyg_dtoa.h +26 -0
- data/libxlsxwriter/third_party/md5/Makefile +42 -0
- data/libxlsxwriter/third_party/md5/md5.c +291 -0
- data/libxlsxwriter/third_party/md5/md5.h +45 -0
- data/libxlsxwriter/third_party/minizip/Makefile +3 -8
- data/libxlsxwriter/third_party/minizip/Makefile.orig +8 -4
- data/libxlsxwriter/third_party/minizip/MiniZip64_Changes.txt +1 -1
- data/libxlsxwriter/third_party/minizip/configure.ac +1 -1
- data/libxlsxwriter/third_party/minizip/crypt.h +13 -16
- data/libxlsxwriter/third_party/minizip/ioapi.c +31 -57
- data/libxlsxwriter/third_party/minizip/ioapi.h +31 -23
- data/libxlsxwriter/third_party/minizip/iowin32.c +29 -45
- data/libxlsxwriter/third_party/minizip/iowin32.h +4 -4
- data/libxlsxwriter/third_party/minizip/miniunz.c +29 -56
- data/libxlsxwriter/third_party/minizip/minizip.c +38 -49
- data/libxlsxwriter/third_party/minizip/mztools.c +1 -7
- data/libxlsxwriter/third_party/minizip/unzip.c +202 -342
- data/libxlsxwriter/third_party/minizip/unzip.h +74 -74
- data/libxlsxwriter/third_party/minizip/zip.c +165 -218
- data/libxlsxwriter/third_party/minizip/zip.h +164 -154
- data/libxlsxwriter/third_party/tmpfileplus/Makefile +3 -3
- data/libxlsxwriter/version.txt +1 -1
- data/test/auto_width_test.rb +20 -0
- data/test/default_format_test.rb +1 -1
- data/test/validations_test.rb +3 -3
- data/test/worksheet_test.rb +6 -1
- metadata +33 -7
- data/libxlsxwriter/.travis.yml +0 -37
|
@@ -0,0 +1,283 @@
|
|
|
1
|
+
/*****************************************************************************
|
|
2
|
+
* metadata - A library for creating Excel XLSX metadata files.
|
|
3
|
+
*
|
|
4
|
+
* Used in conjunction with the libxlsxwriter library.
|
|
5
|
+
*
|
|
6
|
+
* Copyright 2014-2022, John McNamara, jmcnamara@cpan.org. See LICENSE.txt.
|
|
7
|
+
*
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
#include "xlsxwriter/xmlwriter.h"
|
|
11
|
+
#include "xlsxwriter/metadata.h"
|
|
12
|
+
#include "xlsxwriter/utility.h"
|
|
13
|
+
|
|
14
|
+
/*
|
|
15
|
+
* Forward declarations.
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
/*****************************************************************************
|
|
19
|
+
*
|
|
20
|
+
* Private functions.
|
|
21
|
+
*
|
|
22
|
+
****************************************************************************/
|
|
23
|
+
|
|
24
|
+
/*
|
|
25
|
+
* Create a new metadata object.
|
|
26
|
+
*/
|
|
27
|
+
lxw_metadata *
|
|
28
|
+
lxw_metadata_new(void)
|
|
29
|
+
{
|
|
30
|
+
lxw_metadata *metadata = calloc(1, sizeof(lxw_metadata));
|
|
31
|
+
GOTO_LABEL_ON_MEM_ERROR(metadata, mem_error);
|
|
32
|
+
|
|
33
|
+
return metadata;
|
|
34
|
+
|
|
35
|
+
mem_error:
|
|
36
|
+
lxw_metadata_free(metadata);
|
|
37
|
+
return NULL;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
/*
|
|
41
|
+
* Free a metadata object.
|
|
42
|
+
*/
|
|
43
|
+
void
|
|
44
|
+
lxw_metadata_free(lxw_metadata *metadata)
|
|
45
|
+
{
|
|
46
|
+
if (!metadata)
|
|
47
|
+
return;
|
|
48
|
+
|
|
49
|
+
free(metadata);
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
/*****************************************************************************
|
|
53
|
+
*
|
|
54
|
+
* XML functions.
|
|
55
|
+
*
|
|
56
|
+
****************************************************************************/
|
|
57
|
+
|
|
58
|
+
/*
|
|
59
|
+
* Write the XML declaration.
|
|
60
|
+
*/
|
|
61
|
+
STATIC void
|
|
62
|
+
_metadata_xml_declaration(lxw_metadata *self)
|
|
63
|
+
{
|
|
64
|
+
lxw_xml_declaration(self->file);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
/*
|
|
68
|
+
* Write the <metadata> element.
|
|
69
|
+
*/
|
|
70
|
+
STATIC void
|
|
71
|
+
_metadata_write_metadata(lxw_metadata *self)
|
|
72
|
+
{
|
|
73
|
+
struct xml_attribute_list attributes;
|
|
74
|
+
struct xml_attribute *attribute;
|
|
75
|
+
char xmlns[] = "http://schemas.openxmlformats.org/"
|
|
76
|
+
"spreadsheetml/2006/main";
|
|
77
|
+
char xmlns_xda[] = "http://schemas.microsoft.com/office/"
|
|
78
|
+
"spreadsheetml/2017/dynamicarray";
|
|
79
|
+
|
|
80
|
+
LXW_INIT_ATTRIBUTES();
|
|
81
|
+
LXW_PUSH_ATTRIBUTES_STR("xmlns", xmlns);
|
|
82
|
+
LXW_PUSH_ATTRIBUTES_STR("xmlns:xda", xmlns_xda);
|
|
83
|
+
|
|
84
|
+
lxw_xml_start_tag(self->file, "metadata", &attributes);
|
|
85
|
+
|
|
86
|
+
LXW_FREE_ATTRIBUTES();
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
/*
|
|
90
|
+
* Write the <metadataType> element.
|
|
91
|
+
*/
|
|
92
|
+
STATIC void
|
|
93
|
+
_metadata_write_metadata_type(lxw_metadata *self)
|
|
94
|
+
{
|
|
95
|
+
struct xml_attribute_list attributes;
|
|
96
|
+
struct xml_attribute *attribute;
|
|
97
|
+
|
|
98
|
+
LXW_INIT_ATTRIBUTES();
|
|
99
|
+
LXW_PUSH_ATTRIBUTES_STR("name", "XLDAPR");
|
|
100
|
+
LXW_PUSH_ATTRIBUTES_INT("minSupportedVersion", 120000);
|
|
101
|
+
LXW_PUSH_ATTRIBUTES_INT("copy", 1);
|
|
102
|
+
LXW_PUSH_ATTRIBUTES_INT("pasteAll", 1);
|
|
103
|
+
LXW_PUSH_ATTRIBUTES_INT("pasteValues", 1);
|
|
104
|
+
LXW_PUSH_ATTRIBUTES_INT("merge", 1);
|
|
105
|
+
LXW_PUSH_ATTRIBUTES_INT("splitFirst", 1);
|
|
106
|
+
LXW_PUSH_ATTRIBUTES_INT("rowColShift", 1);
|
|
107
|
+
LXW_PUSH_ATTRIBUTES_INT("clearFormats", 1);
|
|
108
|
+
LXW_PUSH_ATTRIBUTES_INT("clearComments", 1);
|
|
109
|
+
LXW_PUSH_ATTRIBUTES_INT("assign", 1);
|
|
110
|
+
LXW_PUSH_ATTRIBUTES_INT("coerce", 1);
|
|
111
|
+
LXW_PUSH_ATTRIBUTES_INT("cellMeta", 1);
|
|
112
|
+
|
|
113
|
+
lxw_xml_empty_tag(self->file, "metadataType", &attributes);
|
|
114
|
+
|
|
115
|
+
LXW_FREE_ATTRIBUTES();
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
/*
|
|
119
|
+
* Write the <metadataTypes> element.
|
|
120
|
+
*/
|
|
121
|
+
STATIC void
|
|
122
|
+
_metadata_write_metadata_types(lxw_metadata *self)
|
|
123
|
+
{
|
|
124
|
+
struct xml_attribute_list attributes;
|
|
125
|
+
struct xml_attribute *attribute;
|
|
126
|
+
|
|
127
|
+
LXW_INIT_ATTRIBUTES();
|
|
128
|
+
LXW_PUSH_ATTRIBUTES_INT("count", 1);
|
|
129
|
+
|
|
130
|
+
lxw_xml_start_tag(self->file, "metadataTypes", &attributes);
|
|
131
|
+
|
|
132
|
+
/* Write the metadataType element. */
|
|
133
|
+
_metadata_write_metadata_type(self);
|
|
134
|
+
|
|
135
|
+
lxw_xml_end_tag(self->file, "metadataTypes");
|
|
136
|
+
|
|
137
|
+
LXW_FREE_ATTRIBUTES();
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
/*
|
|
141
|
+
* Write the <xda:dynamicArrayProperties> element.
|
|
142
|
+
*/
|
|
143
|
+
STATIC void
|
|
144
|
+
_metadata_write_xda_dynamic_array_properties(lxw_metadata *self)
|
|
145
|
+
{
|
|
146
|
+
struct xml_attribute_list attributes;
|
|
147
|
+
struct xml_attribute *attribute;
|
|
148
|
+
|
|
149
|
+
LXW_INIT_ATTRIBUTES();
|
|
150
|
+
LXW_PUSH_ATTRIBUTES_STR("fDynamic", "1");
|
|
151
|
+
LXW_PUSH_ATTRIBUTES_STR("fCollapsed", "0");
|
|
152
|
+
|
|
153
|
+
lxw_xml_empty_tag(self->file, "xda:dynamicArrayProperties", &attributes);
|
|
154
|
+
|
|
155
|
+
LXW_FREE_ATTRIBUTES();
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
/*
|
|
159
|
+
* Write the <ext> element.
|
|
160
|
+
*/
|
|
161
|
+
STATIC void
|
|
162
|
+
_metadata_write_ext(lxw_metadata *self)
|
|
163
|
+
{
|
|
164
|
+
struct xml_attribute_list attributes;
|
|
165
|
+
struct xml_attribute *attribute;
|
|
166
|
+
|
|
167
|
+
LXW_INIT_ATTRIBUTES();
|
|
168
|
+
LXW_PUSH_ATTRIBUTES_STR("uri", "{bdbb8cdc-fa1e-496e-a857-3c3f30c029c3}");
|
|
169
|
+
|
|
170
|
+
lxw_xml_start_tag(self->file, "ext", &attributes);
|
|
171
|
+
|
|
172
|
+
/* Write the xda:dynamicArrayProperties element. */
|
|
173
|
+
_metadata_write_xda_dynamic_array_properties(self);
|
|
174
|
+
|
|
175
|
+
lxw_xml_end_tag(self->file, "ext");
|
|
176
|
+
|
|
177
|
+
LXW_FREE_ATTRIBUTES();
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
/*
|
|
181
|
+
* Write the <futureMetadata> element.
|
|
182
|
+
*/
|
|
183
|
+
STATIC void
|
|
184
|
+
_metadata_write_future_metadata(lxw_metadata *self)
|
|
185
|
+
{
|
|
186
|
+
struct xml_attribute_list attributes;
|
|
187
|
+
struct xml_attribute *attribute;
|
|
188
|
+
|
|
189
|
+
LXW_INIT_ATTRIBUTES();
|
|
190
|
+
LXW_PUSH_ATTRIBUTES_STR("name", "XLDAPR");
|
|
191
|
+
LXW_PUSH_ATTRIBUTES_INT("count", 1);
|
|
192
|
+
|
|
193
|
+
lxw_xml_start_tag(self->file, "futureMetadata", &attributes);
|
|
194
|
+
|
|
195
|
+
lxw_xml_start_tag(self->file, "bk", NULL);
|
|
196
|
+
|
|
197
|
+
lxw_xml_start_tag(self->file, "extLst", NULL);
|
|
198
|
+
|
|
199
|
+
/* Write the ext element. */
|
|
200
|
+
_metadata_write_ext(self);
|
|
201
|
+
|
|
202
|
+
lxw_xml_end_tag(self->file, "extLst");
|
|
203
|
+
|
|
204
|
+
lxw_xml_end_tag(self->file, "bk");
|
|
205
|
+
|
|
206
|
+
lxw_xml_end_tag(self->file, "futureMetadata");
|
|
207
|
+
|
|
208
|
+
LXW_FREE_ATTRIBUTES();
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
/*
|
|
212
|
+
* Write the <rc> element.
|
|
213
|
+
*/
|
|
214
|
+
STATIC void
|
|
215
|
+
_metadata_write_rc(lxw_metadata *self)
|
|
216
|
+
{
|
|
217
|
+
struct xml_attribute_list attributes;
|
|
218
|
+
struct xml_attribute *attribute;
|
|
219
|
+
|
|
220
|
+
LXW_INIT_ATTRIBUTES();
|
|
221
|
+
LXW_PUSH_ATTRIBUTES_STR("t", "1");
|
|
222
|
+
LXW_PUSH_ATTRIBUTES_STR("v", "0");
|
|
223
|
+
|
|
224
|
+
lxw_xml_empty_tag(self->file, "rc", &attributes);
|
|
225
|
+
|
|
226
|
+
LXW_FREE_ATTRIBUTES();
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
/*
|
|
230
|
+
* Write the <cellMetadata> element.
|
|
231
|
+
*/
|
|
232
|
+
STATIC void
|
|
233
|
+
_metadata_write_cell_metadata(lxw_metadata *self)
|
|
234
|
+
{
|
|
235
|
+
struct xml_attribute_list attributes;
|
|
236
|
+
struct xml_attribute *attribute;
|
|
237
|
+
|
|
238
|
+
LXW_INIT_ATTRIBUTES();
|
|
239
|
+
LXW_PUSH_ATTRIBUTES_STR("count", "1");
|
|
240
|
+
|
|
241
|
+
lxw_xml_start_tag(self->file, "cellMetadata", &attributes);
|
|
242
|
+
|
|
243
|
+
lxw_xml_start_tag(self->file, "bk", NULL);
|
|
244
|
+
|
|
245
|
+
/* Write the rc element. */
|
|
246
|
+
_metadata_write_rc(self);
|
|
247
|
+
|
|
248
|
+
lxw_xml_end_tag(self->file, "bk");
|
|
249
|
+
|
|
250
|
+
lxw_xml_end_tag(self->file, "cellMetadata");
|
|
251
|
+
|
|
252
|
+
LXW_FREE_ATTRIBUTES();
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
/*****************************************************************************
|
|
256
|
+
*
|
|
257
|
+
* XML file assembly functions.
|
|
258
|
+
*
|
|
259
|
+
****************************************************************************/
|
|
260
|
+
|
|
261
|
+
/*
|
|
262
|
+
* Assemble and write the XML file.
|
|
263
|
+
*/
|
|
264
|
+
void
|
|
265
|
+
lxw_metadata_assemble_xml_file(lxw_metadata *self)
|
|
266
|
+
{
|
|
267
|
+
/* Write the XML declaration. */
|
|
268
|
+
_metadata_xml_declaration(self);
|
|
269
|
+
|
|
270
|
+
/* Write the metadata element. */
|
|
271
|
+
_metadata_write_metadata(self);
|
|
272
|
+
|
|
273
|
+
/* Write the metadataTypes element. */
|
|
274
|
+
_metadata_write_metadata_types(self);
|
|
275
|
+
|
|
276
|
+
/* Write the futureMetadata element. */
|
|
277
|
+
_metadata_write_future_metadata(self);
|
|
278
|
+
|
|
279
|
+
/* Write the cellMetadata element. */
|
|
280
|
+
_metadata_write_cell_metadata(self);
|
|
281
|
+
|
|
282
|
+
lxw_xml_end_tag(self->file, "metadata");
|
|
283
|
+
}
|