fast_excel 0.4.1 → 0.5.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
+
}
|