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