fast_excel 0.2.2 → 0.4.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 +5 -5
- data/.dockerignore +2 -0
- data/.gitignore +7 -0
- data/.travis.yml +32 -9
- data/CHANGELOG.md +36 -1
- data/Dockerfile.test +17 -0
- data/Gemfile +2 -1
- data/Gemfile.lock +33 -24
- data/LICENSE +21 -0
- data/Makefile +13 -0
- data/README.md +177 -40
- data/Rakefile +11 -1
- data/benchmarks/1k_rows.rb +17 -4
- data/benchmarks/20k_rows.rb +4 -0
- data/benchmarks/auto_width.rb +37 -0
- data/benchmarks/init.rb +14 -2
- data/benchmarks/memory.rb +8 -0
- data/benchmarks/profiler.rb +27 -0
- data/benchmarks/write_value.rb +62 -0
- data/examples/example.rb +3 -3
- data/examples/example_auto_width.rb +26 -0
- data/examples/example_filters.rb +36 -0
- data/examples/example_formula.rb +1 -3
- data/examples/example_hyperlink.rb +20 -0
- data/ext/fast_excel/extconf.rb +3 -0
- data/ext/fast_excel/text_width_ext.c +460 -0
- data/fast_excel.gemspec +3 -4
- data/letters.html +114 -0
- data/lib/fast_excel.rb +131 -25
- data/lib/fast_excel/binding.rb +33 -21
- data/lib/fast_excel/binding/chart.rb +20 -1
- data/lib/fast_excel/binding/format.rb +11 -4
- data/lib/fast_excel/binding/workbook.rb +10 -2
- data/lib/fast_excel/binding/worksheet.rb +44 -27
- data/libxlsxwriter/.gitignore +1 -0
- data/libxlsxwriter/.indent.pro +8 -0
- data/libxlsxwriter/.travis.yml +12 -0
- data/libxlsxwriter/CMakeLists.txt +338 -0
- data/libxlsxwriter/CONTRIBUTING.md +1 -1
- data/libxlsxwriter/Changes.txt +162 -0
- data/libxlsxwriter/LICENSE.txt +65 -4
- data/libxlsxwriter/Makefile +33 -11
- data/libxlsxwriter/Readme.md +3 -1
- data/libxlsxwriter/cocoapods/libxlsxwriter-umbrella.h +2 -1
- data/libxlsxwriter/cocoapods/libxlsxwriter.modulemap +2 -2
- data/libxlsxwriter/include/xlsxwriter.h +2 -2
- data/libxlsxwriter/include/xlsxwriter/app.h +2 -2
- data/libxlsxwriter/include/xlsxwriter/chart.h +164 -13
- data/libxlsxwriter/include/xlsxwriter/chartsheet.h +544 -0
- data/libxlsxwriter/include/xlsxwriter/common.h +35 -6
- data/libxlsxwriter/include/xlsxwriter/content_types.h +5 -2
- data/libxlsxwriter/include/xlsxwriter/core.h +2 -2
- data/libxlsxwriter/include/xlsxwriter/custom.h +2 -2
- data/libxlsxwriter/include/xlsxwriter/drawing.h +3 -2
- data/libxlsxwriter/include/xlsxwriter/format.h +8 -8
- data/libxlsxwriter/include/xlsxwriter/hash_table.h +1 -1
- data/libxlsxwriter/include/xlsxwriter/packager.h +18 -8
- data/libxlsxwriter/include/xlsxwriter/relationships.h +2 -2
- data/libxlsxwriter/include/xlsxwriter/shared_strings.h +5 -3
- data/libxlsxwriter/include/xlsxwriter/styles.h +10 -5
- data/libxlsxwriter/include/xlsxwriter/theme.h +2 -2
- data/libxlsxwriter/include/xlsxwriter/utility.h +35 -5
- data/libxlsxwriter/include/xlsxwriter/workbook.h +234 -57
- data/libxlsxwriter/include/xlsxwriter/worksheet.h +780 -91
- data/libxlsxwriter/include/xlsxwriter/xmlwriter.h +4 -2
- data/libxlsxwriter/libxlsxwriter.podspec +4 -2
- data/libxlsxwriter/src/Makefile +31 -6
- data/libxlsxwriter/src/app.c +2 -2
- data/libxlsxwriter/src/chart.c +116 -23
- data/libxlsxwriter/src/chartsheet.c +508 -0
- data/libxlsxwriter/src/content_types.c +12 -4
- data/libxlsxwriter/src/core.c +11 -11
- data/libxlsxwriter/src/custom.c +3 -3
- data/libxlsxwriter/src/drawing.c +114 -17
- data/libxlsxwriter/src/format.c +5 -5
- data/libxlsxwriter/src/hash_table.c +1 -1
- data/libxlsxwriter/src/packager.c +378 -61
- data/libxlsxwriter/src/relationships.c +2 -2
- data/libxlsxwriter/src/shared_strings.c +18 -4
- data/libxlsxwriter/src/styles.c +59 -12
- data/libxlsxwriter/src/theme.c +2 -2
- data/libxlsxwriter/src/utility.c +93 -6
- data/libxlsxwriter/src/workbook.c +379 -61
- data/libxlsxwriter/src/worksheet.c +1240 -174
- data/libxlsxwriter/src/xmlwriter.c +18 -9
- data/libxlsxwriter/third_party/minizip/Makefile +6 -1
- data/libxlsxwriter/third_party/minizip/ioapi.c +10 -0
- data/libxlsxwriter/third_party/minizip/zip.c +2 -0
- data/libxlsxwriter/third_party/tmpfileplus/tmpfileplus.c +2 -2
- data/libxlsxwriter/version.txt +1 -1
- data/test/auto_width_test.rb +19 -0
- data/test/date_test.rb +34 -0
- data/test/format_test.rb +8 -0
- data/test/reopen_test.rb +22 -0
- data/test/test_helper.rb +8 -5
- data/test/text_width_test.rb +80 -0
- data/test/tmpfile_test.rb +1 -0
- data/test/validations_test.rb +47 -0
- data/test/worksheet_test.rb +44 -1
- metadata +33 -9
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/*
|
|
2
2
|
* libxlsxwriter
|
|
3
3
|
*
|
|
4
|
-
* Copyright 2014-
|
|
4
|
+
* Copyright 2014-2019, John McNamara, jmcnamara@cpan.org. See LICENSE.txt.
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
7
|
/**
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
*
|
|
10
10
|
* @brief Common functions and defines for the libxlsxwriter library.
|
|
11
11
|
*
|
|
12
|
-
* <!-- Copyright 2014-
|
|
12
|
+
* <!-- Copyright 2014-2019, John McNamara, jmcnamara@cpan.org -->
|
|
13
13
|
*
|
|
14
14
|
*/
|
|
15
15
|
#ifndef __LXW_COMMON_H__
|
|
@@ -65,13 +65,25 @@ typedef enum lxw_error {
|
|
|
65
65
|
/** Error encountered when creating a tmpfile during file assembly. */
|
|
66
66
|
LXW_ERROR_CREATING_TMPFILE,
|
|
67
67
|
|
|
68
|
-
/**
|
|
68
|
+
/** Error reading a tmpfile. */
|
|
69
|
+
LXW_ERROR_READING_TMPFILE,
|
|
70
|
+
|
|
71
|
+
/** Zip generic error ZIP_ERRNO while creating the xlsx file. */
|
|
69
72
|
LXW_ERROR_ZIP_FILE_OPERATION,
|
|
70
73
|
|
|
71
|
-
/**
|
|
74
|
+
/** Zip error ZIP_PARAMERROR while creating the xlsx file. */
|
|
75
|
+
LXW_ERROR_ZIP_PARAMETER_ERROR,
|
|
76
|
+
|
|
77
|
+
/** Zip error ZIP_BADZIPFILE (use_zip64 option may be required). */
|
|
78
|
+
LXW_ERROR_ZIP_BAD_ZIP_FILE,
|
|
79
|
+
|
|
80
|
+
/** Zip error ZIP_INTERNALERROR while creating the xlsx file. */
|
|
81
|
+
LXW_ERROR_ZIP_INTERNAL_ERROR,
|
|
82
|
+
|
|
83
|
+
/** File error or unknown zip error when adding sub file to xlsx file. */
|
|
72
84
|
LXW_ERROR_ZIP_FILE_ADD,
|
|
73
85
|
|
|
74
|
-
/**
|
|
86
|
+
/** Unknown zip error when closing xlsx file. */
|
|
75
87
|
LXW_ERROR_ZIP_CLOSE,
|
|
76
88
|
|
|
77
89
|
/** NULL function parameter ignored. */
|
|
@@ -83,12 +95,21 @@ typedef enum lxw_error {
|
|
|
83
95
|
/** Worksheet name exceeds Excel's limit of 31 characters. */
|
|
84
96
|
LXW_ERROR_SHEETNAME_LENGTH_EXCEEDED,
|
|
85
97
|
|
|
86
|
-
/** Worksheet name
|
|
98
|
+
/** Worksheet name cannot contain invalid characters: '[ ] : * ? / \\' */
|
|
87
99
|
LXW_ERROR_INVALID_SHEETNAME_CHARACTER,
|
|
88
100
|
|
|
101
|
+
/** Worksheet name cannot start or end with an apostrophe. */
|
|
102
|
+
LXW_ERROR_SHEETNAME_START_END_APOSTROPHE,
|
|
103
|
+
|
|
89
104
|
/** Worksheet name is already in use. */
|
|
90
105
|
LXW_ERROR_SHEETNAME_ALREADY_USED,
|
|
91
106
|
|
|
107
|
+
/** Worksheet name 'History' is reserved by Excel. */
|
|
108
|
+
LXW_ERROR_SHEETNAME_RESERVED,
|
|
109
|
+
|
|
110
|
+
/** Parameter exceeds Excel's limit of 32 characters. */
|
|
111
|
+
LXW_ERROR_32_STRING_LENGTH_EXCEEDED,
|
|
112
|
+
|
|
92
113
|
/** Parameter exceeds Excel's limit of 128 characters. */
|
|
93
114
|
LXW_ERROR_128_STRING_LENGTH_EXCEEDED,
|
|
94
115
|
|
|
@@ -174,6 +195,9 @@ enum lxw_custom_property_types {
|
|
|
174
195
|
#define LXW_FILENAME_LENGTH 128
|
|
175
196
|
#define LXW_IGNORE 1
|
|
176
197
|
|
|
198
|
+
#define LXW_PORTRAIT 1
|
|
199
|
+
#define LXW_LANDSCAPE 0
|
|
200
|
+
|
|
177
201
|
#define LXW_SCHEMA_MS "http://schemas.microsoft.com/office/2006/relationships"
|
|
178
202
|
#define LXW_SCHEMA_ROOT "http://schemas.openxmlformats.org"
|
|
179
203
|
#define LXW_SCHEMA_DRAWING LXW_SCHEMA_ROOT "/drawingml/2006"
|
|
@@ -265,9 +289,14 @@ enum lxw_custom_property_types {
|
|
|
265
289
|
(((n) & 0xFF0000) >> 8) | \
|
|
266
290
|
(((n) & 0xFF000000) >> 24))
|
|
267
291
|
#define LXW_UINT16_NETWORK(n) ((((n) & 0x00FF) << 8) | (((n) & 0xFF00) >> 8))
|
|
292
|
+
#define LXW_UINT32_HOST(n) (n)
|
|
268
293
|
#else
|
|
269
294
|
#define LXW_UINT32_NETWORK(n) (n)
|
|
270
295
|
#define LXW_UINT16_NETWORK(n) (n)
|
|
296
|
+
#define LXW_UINT32_HOST(n) ((((n) & 0xFF) << 24) | \
|
|
297
|
+
(((n) & 0xFF00) << 8) | \
|
|
298
|
+
(((n) & 0xFF0000) >> 8) | \
|
|
299
|
+
(((n) & 0xFF000000) >> 24))
|
|
271
300
|
#endif
|
|
272
301
|
|
|
273
302
|
/* *INDENT-OFF* */
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/*
|
|
2
2
|
* libxlsxwriter
|
|
3
3
|
*
|
|
4
|
-
* Copyright 2014-
|
|
4
|
+
* Copyright 2014-2019, John McNamara, jmcnamara@cpan.org. See LICENSE.txt.
|
|
5
5
|
*
|
|
6
6
|
* content_types - A libxlsxwriter library for creating Excel XLSX
|
|
7
7
|
* content_types files.
|
|
@@ -17,6 +17,7 @@
|
|
|
17
17
|
|
|
18
18
|
#define LXW_APP_PACKAGE "application/vnd.openxmlformats-package."
|
|
19
19
|
#define LXW_APP_DOCUMENT "application/vnd.openxmlformats-officedocument."
|
|
20
|
+
#define LXW_APP_MSEXCEL "application/vnd.ms-excel."
|
|
20
21
|
|
|
21
22
|
/*
|
|
22
23
|
* Struct to represent a content_types.
|
|
@@ -37,7 +38,7 @@ extern "C" {
|
|
|
37
38
|
#endif
|
|
38
39
|
/* *INDENT-ON* */
|
|
39
40
|
|
|
40
|
-
lxw_content_types *lxw_content_types_new();
|
|
41
|
+
lxw_content_types *lxw_content_types_new(void);
|
|
41
42
|
void lxw_content_types_free(lxw_content_types *content_types);
|
|
42
43
|
void lxw_content_types_assemble_xml_file(lxw_content_types *content_types);
|
|
43
44
|
void lxw_ct_add_default(lxw_content_types *content_types, const char *key,
|
|
@@ -46,6 +47,8 @@ void lxw_ct_add_override(lxw_content_types *content_types, const char *key,
|
|
|
46
47
|
const char *value);
|
|
47
48
|
void lxw_ct_add_worksheet_name(lxw_content_types *content_types,
|
|
48
49
|
const char *name);
|
|
50
|
+
void lxw_ct_add_chartsheet_name(lxw_content_types *content_types,
|
|
51
|
+
const char *name);
|
|
49
52
|
void lxw_ct_add_chart_name(lxw_content_types *content_types,
|
|
50
53
|
const char *name);
|
|
51
54
|
void lxw_ct_add_drawing_name(lxw_content_types *content_types,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/*
|
|
2
2
|
* libxlsxwriter
|
|
3
3
|
*
|
|
4
|
-
* Copyright 2014-
|
|
4
|
+
* Copyright 2014-2019, John McNamara, jmcnamara@cpan.org. See LICENSE.txt.
|
|
5
5
|
*
|
|
6
6
|
* core - A libxlsxwriter library for creating Excel XLSX core files.
|
|
7
7
|
*
|
|
@@ -31,7 +31,7 @@ extern "C" {
|
|
|
31
31
|
#endif
|
|
32
32
|
/* *INDENT-ON* */
|
|
33
33
|
|
|
34
|
-
lxw_core *lxw_core_new();
|
|
34
|
+
lxw_core *lxw_core_new(void);
|
|
35
35
|
void lxw_core_free(lxw_core *core);
|
|
36
36
|
void lxw_core_assemble_xml_file(lxw_core *self);
|
|
37
37
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/*
|
|
2
2
|
* libxlsxwriter
|
|
3
3
|
*
|
|
4
|
-
* Copyright 2014-
|
|
4
|
+
* Copyright 2014-2019, John McNamara, jmcnamara@cpan.org. See LICENSE.txt.
|
|
5
5
|
*
|
|
6
6
|
* custom - A libxlsxwriter library for creating Excel custom property files.
|
|
7
7
|
*
|
|
@@ -32,7 +32,7 @@ extern "C" {
|
|
|
32
32
|
#endif
|
|
33
33
|
/* *INDENT-ON* */
|
|
34
34
|
|
|
35
|
-
lxw_custom *lxw_custom_new();
|
|
35
|
+
lxw_custom *lxw_custom_new(void);
|
|
36
36
|
void lxw_custom_free(lxw_custom *custom);
|
|
37
37
|
void lxw_custom_assemble_xml_file(lxw_custom *self);
|
|
38
38
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/*
|
|
2
2
|
* libxlsxwriter
|
|
3
3
|
*
|
|
4
|
-
* Copyright 2014-
|
|
4
|
+
* Copyright 2014-2019, John McNamara, jmcnamara@cpan.org. See LICENSE.txt.
|
|
5
5
|
*
|
|
6
6
|
* drawing - A libxlsxwriter library for creating Excel XLSX drawing files.
|
|
7
7
|
*
|
|
@@ -77,6 +77,7 @@ typedef struct lxw_drawing {
|
|
|
77
77
|
FILE *file;
|
|
78
78
|
|
|
79
79
|
uint8_t embedded;
|
|
80
|
+
uint8_t orientation;
|
|
80
81
|
|
|
81
82
|
struct lxw_drawing_objects *drawing_objects;
|
|
82
83
|
|
|
@@ -89,7 +90,7 @@ extern "C" {
|
|
|
89
90
|
#endif
|
|
90
91
|
/* *INDENT-ON* */
|
|
91
92
|
|
|
92
|
-
lxw_drawing *lxw_drawing_new();
|
|
93
|
+
lxw_drawing *lxw_drawing_new(void);
|
|
93
94
|
void lxw_drawing_free(lxw_drawing *drawing);
|
|
94
95
|
void lxw_drawing_assemble_xml_file(lxw_drawing *self);
|
|
95
96
|
void lxw_free_drawing_object(struct lxw_drawing_object *drawing_object);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/*
|
|
2
2
|
* libxlsxwriter
|
|
3
3
|
*
|
|
4
|
-
* Copyright 2014-
|
|
4
|
+
* Copyright 2014-2019, John McNamara, jmcnamara@cpan.org. See LICENSE.txt.
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
7
|
/**
|
|
@@ -81,8 +81,8 @@ typedef int32_t lxw_color_t;
|
|
|
81
81
|
#define LXW_PROPERTY_UNSET -1
|
|
82
82
|
#define LXW_COLOR_UNSET -1
|
|
83
83
|
#define LXW_COLOR_MASK 0xFFFFFF
|
|
84
|
-
#define LXW_MIN_FONT_SIZE 1
|
|
85
|
-
#define LXW_MAX_FONT_SIZE 409
|
|
84
|
+
#define LXW_MIN_FONT_SIZE 1.0
|
|
85
|
+
#define LXW_MAX_FONT_SIZE 409.0
|
|
86
86
|
|
|
87
87
|
#define LXW_FORMAT_FIELD_COPY(dst, src) \
|
|
88
88
|
do{ \
|
|
@@ -360,7 +360,7 @@ typedef struct lxw_format {
|
|
|
360
360
|
uint16_t font_index;
|
|
361
361
|
uint8_t has_font;
|
|
362
362
|
uint8_t has_dxf_font;
|
|
363
|
-
|
|
363
|
+
double font_size;
|
|
364
364
|
uint8_t bold;
|
|
365
365
|
uint8_t italic;
|
|
366
366
|
lxw_color_t font_color;
|
|
@@ -427,7 +427,7 @@ typedef struct lxw_format {
|
|
|
427
427
|
typedef struct lxw_font {
|
|
428
428
|
|
|
429
429
|
char font_name[LXW_FORMAT_FIELD_LEN];
|
|
430
|
-
|
|
430
|
+
double font_size;
|
|
431
431
|
uint8_t bold;
|
|
432
432
|
uint8_t italic;
|
|
433
433
|
uint8_t underline;
|
|
@@ -480,7 +480,7 @@ extern "C" {
|
|
|
480
480
|
#endif
|
|
481
481
|
/* *INDENT-ON* */
|
|
482
482
|
|
|
483
|
-
lxw_format *lxw_format_new();
|
|
483
|
+
lxw_format *lxw_format_new(void);
|
|
484
484
|
void lxw_format_free(lxw_format *format);
|
|
485
485
|
int32_t lxw_format_get_xf_index(lxw_format *format);
|
|
486
486
|
lxw_font *lxw_format_get_font_key(lxw_format *format);
|
|
@@ -529,7 +529,7 @@ void format_set_font_name(lxw_format *format, const char *font_name);
|
|
|
529
529
|
* size in the row. You can also explicitly specify the height of a
|
|
530
530
|
* row using the worksheet_set_row() function.
|
|
531
531
|
*/
|
|
532
|
-
void format_set_font_size(lxw_format *format,
|
|
532
|
+
void format_set_font_size(lxw_format *format, double size);
|
|
533
533
|
|
|
534
534
|
/**
|
|
535
535
|
* @brief Set the color of the font used in the cell.
|
|
@@ -691,7 +691,7 @@ void format_set_num_format(lxw_format *format, const char *num_format);
|
|
|
691
691
|
*
|
|
692
692
|
* @code
|
|
693
693
|
* format = workbook_add_format(workbook);
|
|
694
|
-
*
|
|
694
|
+
* format_set_num_format_index(format, 0x0F); // d-mmm-yy
|
|
695
695
|
* @endcode
|
|
696
696
|
*
|
|
697
697
|
* @note
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/*
|
|
2
2
|
* libxlsxwriter
|
|
3
3
|
*
|
|
4
|
-
* Copyright 2014-
|
|
4
|
+
* Copyright 2014-2019, John McNamara, jmcnamara@cpan.org. See LICENSE.txt.
|
|
5
5
|
*
|
|
6
6
|
* packager - A libxlsxwriter library for creating Excel XLSX packager files.
|
|
7
7
|
*
|
|
@@ -10,7 +10,12 @@
|
|
|
10
10
|
#define __LXW_PACKAGER_H__
|
|
11
11
|
|
|
12
12
|
#include <stdint.h>
|
|
13
|
+
|
|
14
|
+
#ifdef USE_SYSTEM_MINIZIP
|
|
15
|
+
#include "minizip/zip.h"
|
|
16
|
+
#else
|
|
13
17
|
#include "third_party/zip.h"
|
|
18
|
+
#endif
|
|
14
19
|
|
|
15
20
|
#include "common.h"
|
|
16
21
|
#include "workbook.h"
|
|
@@ -27,11 +32,17 @@
|
|
|
27
32
|
|
|
28
33
|
#define LXW_ZIP_BUFFER_SIZE (16384)
|
|
29
34
|
|
|
30
|
-
/* If
|
|
31
|
-
* return a default libxlsxwriter error. */
|
|
35
|
+
/* If zip returns a ZIP_XXX error then errno is set and we can trap that in
|
|
36
|
+
* workbook.c. Otherwise return a default libxlsxwriter error. */
|
|
32
37
|
#define RETURN_ON_ZIP_ERROR(err, default_err) \
|
|
33
|
-
if (err ==
|
|
38
|
+
if (err == ZIP_ERRNO) \
|
|
34
39
|
return LXW_ERROR_ZIP_FILE_OPERATION; \
|
|
40
|
+
else if (err == ZIP_PARAMERROR) \
|
|
41
|
+
return LXW_ERROR_ZIP_PARAMETER_ERROR; \
|
|
42
|
+
else if (err == ZIP_BADZIPFILE) \
|
|
43
|
+
return LXW_ERROR_ZIP_BAD_ZIP_FILE; \
|
|
44
|
+
else if (err == ZIP_INTERNALERROR) \
|
|
45
|
+
return LXW_ERROR_ZIP_INTERNAL_ERROR; \
|
|
35
46
|
else \
|
|
36
47
|
return default_err;
|
|
37
48
|
|
|
@@ -49,9 +60,7 @@ typedef struct lxw_packager {
|
|
|
49
60
|
char *filename;
|
|
50
61
|
char *buffer;
|
|
51
62
|
char *tmpdir;
|
|
52
|
-
|
|
53
|
-
uint16_t chart_count;
|
|
54
|
-
uint16_t drawing_count;
|
|
63
|
+
uint8_t use_zip64;
|
|
55
64
|
|
|
56
65
|
} lxw_packager;
|
|
57
66
|
|
|
@@ -62,7 +71,8 @@ extern "C" {
|
|
|
62
71
|
#endif
|
|
63
72
|
/* *INDENT-ON* */
|
|
64
73
|
|
|
65
|
-
lxw_packager *lxw_packager_new(const char *filename, char *tmpdir
|
|
74
|
+
lxw_packager *lxw_packager_new(const char *filename, char *tmpdir,
|
|
75
|
+
uint8_t use_zip64);
|
|
66
76
|
void lxw_packager_free(lxw_packager *packager);
|
|
67
77
|
lxw_error lxw_create_package(lxw_packager *self);
|
|
68
78
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/*
|
|
2
2
|
* libxlsxwriter
|
|
3
3
|
*
|
|
4
|
-
* Copyright 2014-
|
|
4
|
+
* Copyright 2014-2019, John McNamara, jmcnamara@cpan.org. See LICENSE.txt.
|
|
5
5
|
*
|
|
6
6
|
* relationships - A libxlsxwriter library for creating Excel XLSX
|
|
7
7
|
* relationships files.
|
|
@@ -47,7 +47,7 @@ extern "C" {
|
|
|
47
47
|
#endif
|
|
48
48
|
/* *INDENT-ON* */
|
|
49
49
|
|
|
50
|
-
lxw_relationships *lxw_relationships_new();
|
|
50
|
+
lxw_relationships *lxw_relationships_new(void);
|
|
51
51
|
void lxw_free_relationships(lxw_relationships *relationships);
|
|
52
52
|
void lxw_relationships_assemble_xml_file(lxw_relationships *self);
|
|
53
53
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/*
|
|
2
2
|
* libxlsxwriter
|
|
3
3
|
*
|
|
4
|
-
* Copyright 2014-
|
|
4
|
+
* Copyright 2014-2019, John McNamara, jmcnamara@cpan.org. See LICENSE.txt.
|
|
5
5
|
*
|
|
6
6
|
* shared_strings - A libxlsxwriter library for creating Excel XLSX
|
|
7
7
|
* sst files.
|
|
@@ -37,6 +37,7 @@ STAILQ_HEAD(sst_order_list, sst_element);
|
|
|
37
37
|
struct sst_element {
|
|
38
38
|
uint32_t index;
|
|
39
39
|
char *string;
|
|
40
|
+
uint8_t is_rich_string;
|
|
40
41
|
|
|
41
42
|
STAILQ_ENTRY (sst_element) sst_order_pointers;
|
|
42
43
|
RB_ENTRY (sst_element) sst_tree_pointers;
|
|
@@ -62,9 +63,10 @@ extern "C" {
|
|
|
62
63
|
#endif
|
|
63
64
|
/* *INDENT-ON* */
|
|
64
65
|
|
|
65
|
-
lxw_sst *lxw_sst_new();
|
|
66
|
+
lxw_sst *lxw_sst_new(void);
|
|
66
67
|
void lxw_sst_free(lxw_sst *sst);
|
|
67
|
-
struct sst_element *lxw_get_sst_index(lxw_sst *sst, const char *string
|
|
68
|
+
struct sst_element *lxw_get_sst_index(lxw_sst *sst, const char *string,
|
|
69
|
+
uint8_t is_rich_string);
|
|
68
70
|
void lxw_sst_assemble_xml_file(lxw_sst *self);
|
|
69
71
|
|
|
70
72
|
/* Declarations required for unit testing. */
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/*
|
|
2
2
|
* libxlsxwriter
|
|
3
3
|
*
|
|
4
|
-
* Copyright 2014-
|
|
4
|
+
* Copyright 2014-2019, John McNamara, jmcnamara@cpan.org. See LICENSE.txt.
|
|
5
5
|
*
|
|
6
6
|
* styles - A libxlsxwriter library for creating Excel XLSX styles files.
|
|
7
7
|
*
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
#define __LXW_STYLES_H__
|
|
11
11
|
|
|
12
12
|
#include <stdint.h>
|
|
13
|
+
#include <ctype.h>
|
|
13
14
|
|
|
14
15
|
#include "format.h"
|
|
15
16
|
|
|
@@ -37,21 +38,25 @@ extern "C" {
|
|
|
37
38
|
#endif
|
|
38
39
|
/* *INDENT-ON* */
|
|
39
40
|
|
|
40
|
-
lxw_styles *lxw_styles_new();
|
|
41
|
+
lxw_styles *lxw_styles_new(void);
|
|
41
42
|
void lxw_styles_free(lxw_styles *styles);
|
|
42
43
|
void lxw_styles_assemble_xml_file(lxw_styles *self);
|
|
44
|
+
void lxw_styles_write_string_fragment(lxw_styles *self, char *string);
|
|
45
|
+
void lxw_styles_write_rich_font(lxw_styles *lxw_styles, lxw_format *format);
|
|
43
46
|
|
|
44
47
|
/* Declarations required for unit testing. */
|
|
45
48
|
#ifdef TESTING
|
|
46
49
|
|
|
47
50
|
STATIC void _styles_xml_declaration(lxw_styles *self);
|
|
48
51
|
STATIC void _write_style_sheet(lxw_styles *self);
|
|
49
|
-
STATIC void _write_font_size(lxw_styles *self,
|
|
52
|
+
STATIC void _write_font_size(lxw_styles *self, double font_size);
|
|
50
53
|
STATIC void _write_font_color_theme(lxw_styles *self, uint8_t theme);
|
|
51
|
-
STATIC void _write_font_name(lxw_styles *self, const char *font_name
|
|
54
|
+
STATIC void _write_font_name(lxw_styles *self, const char *font_name,
|
|
55
|
+
uint8_t is_rich_string);
|
|
52
56
|
STATIC void _write_font_family(lxw_styles *self, uint8_t font_family);
|
|
53
57
|
STATIC void _write_font_scheme(lxw_styles *self, const char *font_scheme);
|
|
54
|
-
STATIC void _write_font(lxw_styles *self, lxw_format *format
|
|
58
|
+
STATIC void _write_font(lxw_styles *self, lxw_format *format,
|
|
59
|
+
uint8_t is_rich_string);
|
|
55
60
|
STATIC void _write_fonts(lxw_styles *self);
|
|
56
61
|
STATIC void _write_default_fill(lxw_styles *self, const char *pattern);
|
|
57
62
|
STATIC void _write_fills(lxw_styles *self);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/*
|
|
2
2
|
* libxlsxwriter
|
|
3
3
|
*
|
|
4
|
-
* Copyright 2014-
|
|
4
|
+
* Copyright 2014-2019, John McNamara, jmcnamara@cpan.org. See LICENSE.txt.
|
|
5
5
|
*
|
|
6
6
|
* theme - A libxlsxwriter library for creating Excel XLSX theme files.
|
|
7
7
|
*
|
|
@@ -28,7 +28,7 @@ extern "C" {
|
|
|
28
28
|
#endif
|
|
29
29
|
/* *INDENT-ON* */
|
|
30
30
|
|
|
31
|
-
lxw_theme *lxw_theme_new();
|
|
31
|
+
lxw_theme *lxw_theme_new(void);
|
|
32
32
|
void lxw_theme_free(lxw_theme *theme);
|
|
33
33
|
void lxw_theme_xml_declaration(lxw_theme *self);
|
|
34
34
|
void lxw_theme_assemble_xml_file(lxw_theme *self);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/*
|
|
2
2
|
* libxlsxwriter
|
|
3
3
|
*
|
|
4
|
-
* Copyright 2014-
|
|
4
|
+
* Copyright 2014-2019, John McNamara, jmcnamara@cpan.org. See LICENSE.txt.
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
7
|
/**
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
*
|
|
10
10
|
* @brief Utility functions for libxlsxwriter.
|
|
11
11
|
*
|
|
12
|
-
* <!-- Copyright 2014-
|
|
12
|
+
* <!-- Copyright 2014-2019, John McNamara, jmcnamara@cpan.org -->
|
|
13
13
|
*
|
|
14
14
|
*/
|
|
15
15
|
|
|
@@ -17,7 +17,9 @@
|
|
|
17
17
|
#define __LXW_UTILITY_H__
|
|
18
18
|
|
|
19
19
|
#include <stdint.h>
|
|
20
|
+
#include <strings.h>
|
|
20
21
|
#include "common.h"
|
|
22
|
+
#include "xmlwriter.h"
|
|
21
23
|
|
|
22
24
|
/**
|
|
23
25
|
* @brief Convert an Excel `A1` cell string into a `(row, col)` pair.
|
|
@@ -85,6 +87,20 @@ extern "C" {
|
|
|
85
87
|
#endif
|
|
86
88
|
/* *INDENT-ON* */
|
|
87
89
|
|
|
90
|
+
/**
|
|
91
|
+
* @brief Retrieve the library version.
|
|
92
|
+
*
|
|
93
|
+
* @return The "X.Y.Z" version string.
|
|
94
|
+
*
|
|
95
|
+
* Get the library version as a "X.Y.Z" version string
|
|
96
|
+
*
|
|
97
|
+
* @code
|
|
98
|
+
* printf("Libxlsxwriter version = %s\n", lxw_version());
|
|
99
|
+
* @endcode
|
|
100
|
+
*
|
|
101
|
+
*/
|
|
102
|
+
const char *lxw_version(void);
|
|
103
|
+
|
|
88
104
|
/**
|
|
89
105
|
* @brief Converts a libxlsxwriter error number to a string.
|
|
90
106
|
*
|
|
@@ -145,18 +161,32 @@ uint16_t lxw_name_to_col_2(const char *col_str);
|
|
|
145
161
|
double lxw_datetime_to_excel_date(lxw_datetime *datetime, uint8_t date_1904);
|
|
146
162
|
|
|
147
163
|
char *lxw_strdup(const char *str);
|
|
164
|
+
char *lxw_strdup_formula(const char *formula);
|
|
148
165
|
|
|
149
166
|
size_t lxw_utf8_strlen(const char *str);
|
|
150
167
|
|
|
151
168
|
void lxw_str_tolower(char *str);
|
|
152
169
|
|
|
153
|
-
|
|
170
|
+
/* Define a portable version of strcasecmp(). */
|
|
171
|
+
#ifdef _MSC_VER
|
|
172
|
+
#define lxw_strcasecmp _stricmp
|
|
173
|
+
#else
|
|
174
|
+
#define lxw_strcasecmp strcasecmp
|
|
175
|
+
#endif
|
|
154
176
|
|
|
155
|
-
|
|
156
|
-
#ifdef TESTING
|
|
177
|
+
FILE *lxw_tmpfile(char *tmpdir);
|
|
157
178
|
|
|
179
|
+
/* Use a user defined function to format doubles in sprintf or else a simple
|
|
180
|
+
* macro (the default). */
|
|
181
|
+
#ifdef USE_DOUBLE_FUNCTION
|
|
182
|
+
int lxw_sprintf_dbl(char *data, double number);
|
|
183
|
+
#else
|
|
184
|
+
#define lxw_sprintf_dbl(data, number) \
|
|
185
|
+
lxw_snprintf(data, LXW_ATTR_32, "%.16g", number)
|
|
158
186
|
#endif
|
|
159
187
|
|
|
188
|
+
uint16_t lxw_hash_password(const char *password);
|
|
189
|
+
|
|
160
190
|
/* *INDENT-OFF* */
|
|
161
191
|
#ifdef __cplusplus
|
|
162
192
|
}
|