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
|
@@ -90,9 +90,9 @@ FindStaticLibs(MINIZIP)
|
|
|
90
90
|
# -------
|
|
91
91
|
|
|
92
92
|
if(MINIZIP_FOUND)
|
|
93
|
-
|
|
94
|
-
string(REGEX REPLACE ".*
|
|
95
|
-
string(REGEX REPLACE ".*
|
|
93
|
+
file(STRINGS "${MINIZIP_INCLUDE_DIRS}/zlib.h" MINIZIP_VERSION_CONTENTS REGEX "version [0-9]+\\.[0-9]+(\\.[0-9]+)?")
|
|
94
|
+
string(REGEX REPLACE ".*version ([0-9]+)\\.[0-9]+" "\\1" MINIZIP_VERSION_MAJOR "${MINIZIP_VERSION_CONTENTS}")
|
|
95
|
+
string(REGEX REPLACE ".*version [0-9]+\\.([0-9]+)" "\\1" MINIZIP_VERSION_MINOR "${MINIZIP_VERSION_CONTENTS}")
|
|
96
96
|
set(MINIZIP_VERSION_PATCH 0)
|
|
97
97
|
|
|
98
98
|
set(MINIZIP_VERSION_STRING "${MINIZIP_VERSION_MAJOR}.${MINIZIP_VERSION_MINOR}.${MINIZIP_VERSION_PATCH}")
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
#import "app.h"
|
|
5
5
|
#import "chart.h"
|
|
6
6
|
#import "chartsheet.h"
|
|
7
|
+
#import "comment.h"
|
|
7
8
|
#import "common.h"
|
|
8
9
|
#import "content_types.h"
|
|
9
10
|
#import "core.h"
|
|
@@ -11,17 +12,22 @@
|
|
|
11
12
|
#import "drawing.h"
|
|
12
13
|
#import "format.h"
|
|
13
14
|
#import "hash_table.h"
|
|
15
|
+
#import "metadata.h"
|
|
14
16
|
#import "packager.h"
|
|
15
17
|
#import "relationships.h"
|
|
16
18
|
#import "shared_strings.h"
|
|
17
19
|
#import "styles.h"
|
|
20
|
+
#import "table.h"
|
|
18
21
|
#import "theme.h"
|
|
22
|
+
#import "third_party/emyg_dtoa.h"
|
|
19
23
|
#import "third_party/ioapi.h"
|
|
24
|
+
#import "third_party/md5.h"
|
|
20
25
|
#import "third_party/queue.h"
|
|
21
26
|
#import "third_party/tmpfileplus.h"
|
|
22
27
|
#import "third_party/tree.h"
|
|
23
28
|
#import "third_party/zip.h"
|
|
24
29
|
#import "utility.h"
|
|
30
|
+
#import "vml.h"
|
|
25
31
|
#import "workbook.h"
|
|
26
32
|
#import "worksheet.h"
|
|
27
33
|
#import "xmlwriter.h"
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/*
|
|
2
2
|
* libxlsxwriter
|
|
3
3
|
*
|
|
4
|
-
* Copyright 2014-
|
|
4
|
+
* Copyright 2014-2022, John McNamara, jmcnamara@cpan.org. See LICENSE.txt.
|
|
5
5
|
*
|
|
6
6
|
* app - A libxlsxwriter library for creating Excel XLSX app files.
|
|
7
7
|
*
|
|
@@ -46,6 +46,7 @@ typedef struct lxw_app {
|
|
|
46
46
|
|
|
47
47
|
uint32_t num_heading_pairs;
|
|
48
48
|
uint32_t num_part_names;
|
|
49
|
+
uint8_t doc_security;
|
|
49
50
|
|
|
50
51
|
} lxw_app;
|
|
51
52
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/*
|
|
2
2
|
* libxlsxwriter
|
|
3
3
|
*
|
|
4
|
-
* Copyright 2014-
|
|
4
|
+
* Copyright 2014-2022, John McNamara, jmcnamara@cpan.org. See LICENSE.txt.
|
|
5
5
|
*
|
|
6
6
|
* chart - A libxlsxwriter library for creating Excel XLSX chart files.
|
|
7
7
|
*
|
|
@@ -124,6 +124,12 @@ typedef enum lxw_chart_type {
|
|
|
124
124
|
/** Line chart. */
|
|
125
125
|
LXW_CHART_LINE,
|
|
126
126
|
|
|
127
|
+
/** Line chart - stacked. */
|
|
128
|
+
LXW_CHART_LINE_STACKED,
|
|
129
|
+
|
|
130
|
+
/** Line chart - percentage stacked. */
|
|
131
|
+
LXW_CHART_LINE_STACKED_PERCENT,
|
|
132
|
+
|
|
127
133
|
/** Pie chart. */
|
|
128
134
|
LXW_CHART_PIE,
|
|
129
135
|
|
|
@@ -647,9 +653,6 @@ typedef struct lxw_chart_line {
|
|
|
647
653
|
/** Set the transparency of the line. 0 - 100. Default 0. */
|
|
648
654
|
uint8_t transparency;
|
|
649
655
|
|
|
650
|
-
/* Members for internal use only. */
|
|
651
|
-
uint8_t has_color;
|
|
652
|
-
|
|
653
656
|
} lxw_chart_line;
|
|
654
657
|
|
|
655
658
|
/**
|
|
@@ -668,9 +671,6 @@ typedef struct lxw_chart_fill {
|
|
|
668
671
|
/** Set the transparency of the fill. 0 - 100. Default 0. */
|
|
669
672
|
uint8_t transparency;
|
|
670
673
|
|
|
671
|
-
/* Members for internal use only. */
|
|
672
|
-
uint8_t has_color;
|
|
673
|
-
|
|
674
674
|
} lxw_chart_fill;
|
|
675
675
|
|
|
676
676
|
/**
|
|
@@ -689,10 +689,6 @@ typedef struct lxw_chart_pattern {
|
|
|
689
689
|
/** The pattern type. See #lxw_chart_pattern_type. */
|
|
690
690
|
uint8_t type;
|
|
691
691
|
|
|
692
|
-
/* Members for internal use only. */
|
|
693
|
-
uint8_t has_fg_color;
|
|
694
|
-
uint8_t has_bg_color;
|
|
695
|
-
|
|
696
692
|
} lxw_chart_pattern;
|
|
697
693
|
|
|
698
694
|
/**
|
|
@@ -703,7 +699,7 @@ typedef struct lxw_chart_pattern {
|
|
|
703
699
|
typedef struct lxw_chart_font {
|
|
704
700
|
|
|
705
701
|
/** The chart font name, such as "Arial" or "Calibri". */
|
|
706
|
-
char *name;
|
|
702
|
+
const char *name;
|
|
707
703
|
|
|
708
704
|
/** The chart font size. The default is 11. */
|
|
709
705
|
double size;
|
|
@@ -717,25 +713,27 @@ typedef struct lxw_chart_font {
|
|
|
717
713
|
/** The chart font underline property. Set to 0 or 1. */
|
|
718
714
|
uint8_t underline;
|
|
719
715
|
|
|
720
|
-
/** The chart font rotation property. Range: -90 to 90
|
|
716
|
+
/** The chart font rotation property. Range: -90 to 90, and 270, 271 and 360:
|
|
717
|
+
*
|
|
718
|
+
* - The angles -90 to 90 are the normal range shown in the Excel user interface.
|
|
719
|
+
* - The angle 270 gives a stacked (top to bottom) alignment.
|
|
720
|
+
* - The angle 271 gives a stacked alignment for East Asian fonts.
|
|
721
|
+
* - The angle 360 gives an explicit angle of 0 to override the y axis default.
|
|
722
|
+
* */
|
|
721
723
|
int32_t rotation;
|
|
722
724
|
|
|
723
725
|
/** The chart font color. See @ref working_with_colors. */
|
|
724
726
|
lxw_color_t color;
|
|
725
727
|
|
|
726
|
-
/** The chart font pitch family property. Rarely required
|
|
728
|
+
/** The chart font pitch family property. Rarely required, set to 0. */
|
|
727
729
|
uint8_t pitch_family;
|
|
728
730
|
|
|
729
|
-
/** The chart font character set property. Rarely required
|
|
731
|
+
/** The chart font character set property. Rarely required, set to 0. */
|
|
730
732
|
uint8_t charset;
|
|
731
733
|
|
|
732
|
-
/** The chart font baseline property. Rarely required
|
|
734
|
+
/** The chart font baseline property. Rarely required, set to 0. */
|
|
733
735
|
int8_t baseline;
|
|
734
736
|
|
|
735
|
-
/* Members for internal use only. */
|
|
736
|
-
|
|
737
|
-
uint8_t has_color;
|
|
738
|
-
|
|
739
737
|
} lxw_chart_font;
|
|
740
738
|
|
|
741
739
|
typedef struct lxw_chart_marker {
|
|
@@ -792,6 +790,54 @@ typedef struct lxw_chart_point {
|
|
|
792
790
|
|
|
793
791
|
} lxw_chart_point;
|
|
794
792
|
|
|
793
|
+
/**
|
|
794
|
+
* @brief Struct to represent an Excel chart data label.
|
|
795
|
+
*
|
|
796
|
+
* The lxw_chart_data_label struct is used to represent a data label in a
|
|
797
|
+
* chart series so that custom properties can be set for it.
|
|
798
|
+
*/
|
|
799
|
+
typedef struct lxw_chart_data_label {
|
|
800
|
+
|
|
801
|
+
/** The string or formula value for the data label. See
|
|
802
|
+
* @ref chart_custom_labels. */
|
|
803
|
+
const char *value;
|
|
804
|
+
|
|
805
|
+
/** Option to hide/delete the data label from the chart series.
|
|
806
|
+
* See @ref chart_custom_labels. */
|
|
807
|
+
uint8_t hide;
|
|
808
|
+
|
|
809
|
+
/** The font properties for the chart data label. @ref chart_fonts. */
|
|
810
|
+
lxw_chart_font *font;
|
|
811
|
+
|
|
812
|
+
/** The line/border for the chart data label. See @ref chart_lines. */
|
|
813
|
+
lxw_chart_line *line;
|
|
814
|
+
|
|
815
|
+
/** The fill for the chart data label. See @ref chart_fills. */
|
|
816
|
+
lxw_chart_fill *fill;
|
|
817
|
+
|
|
818
|
+
/** The pattern for the chart data label. See @ref chart_patterns.*/
|
|
819
|
+
lxw_chart_pattern *pattern;
|
|
820
|
+
|
|
821
|
+
} lxw_chart_data_label;
|
|
822
|
+
|
|
823
|
+
/* Internal version of lxw_chart_data_label with more metadata. */
|
|
824
|
+
typedef struct lxw_chart_custom_label {
|
|
825
|
+
|
|
826
|
+
char *value;
|
|
827
|
+
uint8_t hide;
|
|
828
|
+
lxw_chart_font *font;
|
|
829
|
+
lxw_chart_line *line;
|
|
830
|
+
lxw_chart_fill *fill;
|
|
831
|
+
lxw_chart_pattern *pattern;
|
|
832
|
+
|
|
833
|
+
/* We use a range to hold the label formula properties even though it
|
|
834
|
+
* will only have 1 point in order to re-use similar functions.*/
|
|
835
|
+
lxw_series_range *range;
|
|
836
|
+
|
|
837
|
+
struct lxw_series_data_point data_point;
|
|
838
|
+
|
|
839
|
+
} lxw_chart_custom_label;
|
|
840
|
+
|
|
795
841
|
/**
|
|
796
842
|
* @brief Define how blank values are displayed in a chart.
|
|
797
843
|
*/
|
|
@@ -921,7 +967,9 @@ typedef struct lxw_chart_series {
|
|
|
921
967
|
lxw_chart_pattern *pattern;
|
|
922
968
|
lxw_chart_marker *marker;
|
|
923
969
|
lxw_chart_point *points;
|
|
970
|
+
lxw_chart_custom_label *data_labels;
|
|
924
971
|
uint16_t point_count;
|
|
972
|
+
uint16_t data_label_count;
|
|
925
973
|
|
|
926
974
|
uint8_t smooth;
|
|
927
975
|
uint8_t invert_if_negative;
|
|
@@ -939,6 +987,9 @@ typedef struct lxw_chart_series {
|
|
|
939
987
|
uint8_t default_label_position;
|
|
940
988
|
char *label_num_format;
|
|
941
989
|
lxw_chart_font *label_font;
|
|
990
|
+
lxw_chart_line *label_line;
|
|
991
|
+
lxw_chart_fill *label_fill;
|
|
992
|
+
lxw_chart_pattern *label_pattern;
|
|
942
993
|
|
|
943
994
|
lxw_series_error_bars *x_error_bars;
|
|
944
995
|
lxw_series_error_bars *y_error_bars;
|
|
@@ -1024,6 +1075,7 @@ typedef struct lxw_chart_axis {
|
|
|
1024
1075
|
uint8_t display_units_visible;
|
|
1025
1076
|
|
|
1026
1077
|
uint8_t has_crossing;
|
|
1078
|
+
uint8_t crossing_min;
|
|
1027
1079
|
uint8_t crossing_max;
|
|
1028
1080
|
double crossing;
|
|
1029
1081
|
|
|
@@ -1043,8 +1095,8 @@ typedef struct lxw_chart {
|
|
|
1043
1095
|
uint8_t subtype;
|
|
1044
1096
|
uint16_t series_index;
|
|
1045
1097
|
|
|
1046
|
-
void (*write_chart_type)
|
|
1047
|
-
void (*write_plot_area)
|
|
1098
|
+
void (*write_chart_type)(struct lxw_chart *);
|
|
1099
|
+
void (*write_plot_area)(struct lxw_chart *);
|
|
1048
1100
|
|
|
1049
1101
|
/**
|
|
1050
1102
|
* A pointer to the chart x_axis object which can be used in functions
|
|
@@ -1627,11 +1679,11 @@ void chart_series_set_smooth(lxw_chart_series *series, uint8_t smooth);
|
|
|
1627
1679
|
* chart_series_set_labels(series);
|
|
1628
1680
|
* @endcode
|
|
1629
1681
|
*
|
|
1630
|
-
* @image html
|
|
1682
|
+
* @image html chart_data_labels1.png
|
|
1631
1683
|
*
|
|
1632
1684
|
* By default data labels are displayed in Excel with only the values shown:
|
|
1633
1685
|
*
|
|
1634
|
-
* @image html
|
|
1686
|
+
* @image html chart_data_labels2.png
|
|
1635
1687
|
*
|
|
1636
1688
|
* However, it is possible to configure other display options, as shown
|
|
1637
1689
|
* in the functions below.
|
|
@@ -1656,7 +1708,7 @@ void chart_series_set_labels(lxw_chart_series *series);
|
|
|
1656
1708
|
* chart_series_set_labels_options(series, LXW_TRUE, LXW_TRUE, LXW_TRUE);
|
|
1657
1709
|
* @endcode
|
|
1658
1710
|
*
|
|
1659
|
-
* @image html
|
|
1711
|
+
* @image html chart_data_labels3.png
|
|
1660
1712
|
*
|
|
1661
1713
|
* For more information see @ref chart_labels.
|
|
1662
1714
|
*/
|
|
@@ -1664,6 +1716,63 @@ void chart_series_set_labels_options(lxw_chart_series *series,
|
|
|
1664
1716
|
uint8_t show_name, uint8_t show_category,
|
|
1665
1717
|
uint8_t show_value);
|
|
1666
1718
|
|
|
1719
|
+
/** @brief Set the properties for data labels in a series.
|
|
1720
|
+
*
|
|
1721
|
+
* @param series A series object created via `chart_add_series()`.
|
|
1722
|
+
* @param data_labels An NULL terminated array of #lxw_chart_data_label pointers.
|
|
1723
|
+
*
|
|
1724
|
+
* @return A #lxw_error.
|
|
1725
|
+
*
|
|
1726
|
+
* The `%chart_series_set_labels_custom()` function is used to set the properties
|
|
1727
|
+
* for data labels in a series. It can also be used to delete individual data
|
|
1728
|
+
* labels in a series.
|
|
1729
|
+
*
|
|
1730
|
+
* In general properties are set for all the data labels in a chart
|
|
1731
|
+
* series. However, it is also possible to set properties for individual data
|
|
1732
|
+
* labels in a series using `%chart_series_set_labels_custom()`.
|
|
1733
|
+
*
|
|
1734
|
+
* The `%chart_series_set_labels_custom()` function takes a pointer to an array
|
|
1735
|
+
* of #lxw_chart_data_label pointers. The list should be `NULL` terminated:
|
|
1736
|
+
*
|
|
1737
|
+
* @code
|
|
1738
|
+
* // Add the series data labels.
|
|
1739
|
+
* chart_series_set_labels(series);
|
|
1740
|
+
*
|
|
1741
|
+
* // Create some custom labels.
|
|
1742
|
+
* lxw_chart_data_label data_label1 = {.value = "Jan"};
|
|
1743
|
+
* lxw_chart_data_label data_label2 = {.value = "Feb"};
|
|
1744
|
+
* lxw_chart_data_label data_label3 = {.value = "Mar"};
|
|
1745
|
+
* lxw_chart_data_label data_label4 = {.value = "Apr"};
|
|
1746
|
+
* lxw_chart_data_label data_label5 = {.value = "May"};
|
|
1747
|
+
* lxw_chart_data_label data_label6 = {.value = "Jun"};
|
|
1748
|
+
*
|
|
1749
|
+
* // Create an array of label pointers. NULL indicates the end of the array.
|
|
1750
|
+
* lxw_chart_data_label *data_labels[] = {
|
|
1751
|
+
* &data_label1,
|
|
1752
|
+
* &data_label2,
|
|
1753
|
+
* &data_label3,
|
|
1754
|
+
* &data_label4,
|
|
1755
|
+
* &data_label5,
|
|
1756
|
+
* &data_label6,
|
|
1757
|
+
* NULL
|
|
1758
|
+
* };
|
|
1759
|
+
*
|
|
1760
|
+
* // Set the custom labels.
|
|
1761
|
+
* chart_series_set_labels_custom(series, data_labels);
|
|
1762
|
+
* @endcode
|
|
1763
|
+
*
|
|
1764
|
+
* @image html chart_data_labels18.png
|
|
1765
|
+
*
|
|
1766
|
+
* @note The array of #lxw_chart_point pointers should be NULL terminated as
|
|
1767
|
+
* shown in the example. Any #lxw_chart_data_label items set to a default
|
|
1768
|
+
* initialization or omitted from the list will be assigned the default data
|
|
1769
|
+
* label value.
|
|
1770
|
+
*
|
|
1771
|
+
* For more details see @ref chart_custom_labels.
|
|
1772
|
+
*/
|
|
1773
|
+
lxw_error chart_series_set_labels_custom(lxw_chart_series *series, lxw_chart_data_label
|
|
1774
|
+
*data_labels[]);
|
|
1775
|
+
|
|
1667
1776
|
/**
|
|
1668
1777
|
* @brief Set the separator for the data label captions.
|
|
1669
1778
|
*
|
|
@@ -1690,7 +1799,7 @@ void chart_series_set_labels_options(lxw_chart_series *series,
|
|
|
1690
1799
|
* chart_series_set_labels_separator(series, LXW_CHART_LABEL_SEPARATOR_NEWLINE);
|
|
1691
1800
|
* @endcode
|
|
1692
1801
|
*
|
|
1693
|
-
* @image html
|
|
1802
|
+
* @image html chart_data_labels4.png
|
|
1694
1803
|
*
|
|
1695
1804
|
* For more information see @ref chart_labels.
|
|
1696
1805
|
*/
|
|
@@ -1711,7 +1820,7 @@ void chart_series_set_labels_separator(lxw_chart_series *series,
|
|
|
1711
1820
|
* chart_series_set_labels_position(series, LXW_CHART_LABEL_POSITION_ABOVE);
|
|
1712
1821
|
* @endcode
|
|
1713
1822
|
*
|
|
1714
|
-
* @image html
|
|
1823
|
+
* @image html chart_data_labels5.png
|
|
1715
1824
|
*
|
|
1716
1825
|
* In Excel the allowable data label positions vary for different chart
|
|
1717
1826
|
* types. The allowable, and default, positions are:
|
|
@@ -1771,7 +1880,7 @@ void chart_series_set_labels_leader_line(lxw_chart_series *series);
|
|
|
1771
1880
|
* chart_series_set_labels_legend(series);
|
|
1772
1881
|
* @endcode
|
|
1773
1882
|
*
|
|
1774
|
-
* @image html
|
|
1883
|
+
* @image html chart_data_labels6.png
|
|
1775
1884
|
*
|
|
1776
1885
|
* For more information see @ref chart_labels.
|
|
1777
1886
|
*/
|
|
@@ -1792,7 +1901,7 @@ void chart_series_set_labels_legend(lxw_chart_series *series);
|
|
|
1792
1901
|
* chart_series_set_labels_percentage(series);
|
|
1793
1902
|
* @endcode
|
|
1794
1903
|
*
|
|
1795
|
-
* @image html
|
|
1904
|
+
* @image html chart_data_labels7.png
|
|
1796
1905
|
*
|
|
1797
1906
|
* For more information see @ref chart_labels.
|
|
1798
1907
|
*/
|
|
@@ -1812,7 +1921,7 @@ void chart_series_set_labels_percentage(lxw_chart_series *series);
|
|
|
1812
1921
|
* chart_series_set_labels_num_format(series, "$0.00");
|
|
1813
1922
|
* @endcode
|
|
1814
1923
|
*
|
|
1815
|
-
* @image html
|
|
1924
|
+
* @image html chart_data_labels8.png
|
|
1816
1925
|
*
|
|
1817
1926
|
* The number format is similar to the Worksheet Cell Format num_format,
|
|
1818
1927
|
* see `format_set_num_format()`.
|
|
@@ -1839,7 +1948,7 @@ void chart_series_set_labels_num_format(lxw_chart_series *series,
|
|
|
1839
1948
|
* chart_series_set_labels_font(series, &font);
|
|
1840
1949
|
* @endcode
|
|
1841
1950
|
*
|
|
1842
|
-
* @image html
|
|
1951
|
+
* @image html chart_data_labels9.png
|
|
1843
1952
|
*
|
|
1844
1953
|
* For more information see @ref chart_fonts and @ref chart_labels.
|
|
1845
1954
|
*
|
|
@@ -1847,6 +1956,67 @@ void chart_series_set_labels_num_format(lxw_chart_series *series,
|
|
|
1847
1956
|
void chart_series_set_labels_font(lxw_chart_series *series,
|
|
1848
1957
|
lxw_chart_font *font);
|
|
1849
1958
|
|
|
1959
|
+
/**
|
|
1960
|
+
* @brief Set the line properties for the data labels in a chart series.
|
|
1961
|
+
*
|
|
1962
|
+
* @param series A series object created via `chart_add_series()`.
|
|
1963
|
+
* @param line A #lxw_chart_line struct.
|
|
1964
|
+
*
|
|
1965
|
+
* Set the line/border properties of the data labels in a chart series:
|
|
1966
|
+
*
|
|
1967
|
+
* @code
|
|
1968
|
+
* lxw_chart_line line = {.color = LXW_COLOR_RED};
|
|
1969
|
+
* lxw_chart_fill fill = {.color = LXW_COLOR_YELLOW};
|
|
1970
|
+
*
|
|
1971
|
+
* chart_series_set_labels_line(series, &line);
|
|
1972
|
+
* chart_series_set_labels_fill(series, &fill);
|
|
1973
|
+
*
|
|
1974
|
+
* @endcode
|
|
1975
|
+
*
|
|
1976
|
+
* @image html chart_data_labels24.png
|
|
1977
|
+
*
|
|
1978
|
+
* For more information see @ref chart_lines and @ref chart_labels.
|
|
1979
|
+
*/
|
|
1980
|
+
void chart_series_set_labels_line(lxw_chart_series *series,
|
|
1981
|
+
lxw_chart_line *line);
|
|
1982
|
+
|
|
1983
|
+
/**
|
|
1984
|
+
* @brief Set the fill properties for the data labels in a chart series.
|
|
1985
|
+
*
|
|
1986
|
+
* @param series A series object created via `chart_add_series()`.
|
|
1987
|
+
* @param fill A #lxw_chart_fill struct.
|
|
1988
|
+
*
|
|
1989
|
+
* Set the fill properties of the data labels in a chart series:
|
|
1990
|
+
*
|
|
1991
|
+
* @code
|
|
1992
|
+
* lxw_chart_fill fill = {.color = LXW_COLOR_YELLOW};
|
|
1993
|
+
*
|
|
1994
|
+
* chart_series_set_labels_fill(series, &fill);
|
|
1995
|
+
* @endcode
|
|
1996
|
+
*
|
|
1997
|
+
* See the example and image above and also see @ref chart_fills and
|
|
1998
|
+
* @ref chart_labels.
|
|
1999
|
+
*/
|
|
2000
|
+
void chart_series_set_labels_fill(lxw_chart_series *series,
|
|
2001
|
+
lxw_chart_fill *fill);
|
|
2002
|
+
|
|
2003
|
+
/**
|
|
2004
|
+
* @brief Set the pattern properties for the data labels in a chart series.
|
|
2005
|
+
*
|
|
2006
|
+
* @param series A series object created via `chart_add_series()`.
|
|
2007
|
+
* @param pattern A #lxw_chart_pattern struct.
|
|
2008
|
+
*
|
|
2009
|
+
* Set the pattern properties of the data labels in a chart series:
|
|
2010
|
+
*
|
|
2011
|
+
* @code
|
|
2012
|
+
* chart_series_set_labels_pattern(series, &pattern);
|
|
2013
|
+
* @endcode
|
|
2014
|
+
*
|
|
2015
|
+
* For more information see #lxw_chart_pattern_type and @ref chart_patterns.
|
|
2016
|
+
*/
|
|
2017
|
+
void chart_series_set_labels_pattern(lxw_chart_series *series,
|
|
2018
|
+
lxw_chart_pattern *pattern);
|
|
2019
|
+
|
|
1850
2020
|
/**
|
|
1851
2021
|
* @brief Turn on a trendline for a chart data series.
|
|
1852
2022
|
*
|
|
@@ -2534,6 +2704,26 @@ void chart_axis_set_crossing(lxw_chart_axis *axis, double value);
|
|
|
2534
2704
|
*/
|
|
2535
2705
|
void chart_axis_set_crossing_max(lxw_chart_axis *axis);
|
|
2536
2706
|
|
|
2707
|
+
/**
|
|
2708
|
+
* @brief Set the opposite axis crossing position as the axis minimum.
|
|
2709
|
+
*
|
|
2710
|
+
* @param axis A pointer to a chart #lxw_chart_axis object.
|
|
2711
|
+
*
|
|
2712
|
+
* Set the position that the opposite axis will cross as the axis minimum.
|
|
2713
|
+
* The default axis crossing position is generally the axis minimum so this
|
|
2714
|
+
* function can be used to reverse the location of the axes without reversing
|
|
2715
|
+
* the number sequence:
|
|
2716
|
+
*
|
|
2717
|
+
* @code
|
|
2718
|
+
* chart_axis_set_crossing_min(chart->x_axis);
|
|
2719
|
+
* chart_axis_set_crossing_min(chart->y_axis);
|
|
2720
|
+
* @endcode
|
|
2721
|
+
*
|
|
2722
|
+
* **Axis types**: This function is applicable to to all axes types.
|
|
2723
|
+
* See @ref ww_charts_axes.
|
|
2724
|
+
*/
|
|
2725
|
+
void chart_axis_set_crossing_min(lxw_chart_axis *axis);
|
|
2726
|
+
|
|
2537
2727
|
/**
|
|
2538
2728
|
* @brief Turn off/hide an axis.
|
|
2539
2729
|
*
|
|
@@ -3045,7 +3235,7 @@ void chart_title_set_name_range(lxw_chart *chart, const char *sheetname,
|
|
|
3045
3235
|
* chart title:
|
|
3046
3236
|
*
|
|
3047
3237
|
* @code
|
|
3048
|
-
* lxw_chart_font font = {.
|
|
3238
|
+
* lxw_chart_font font = {.color = LXW_COLOR_BLUE};
|
|
3049
3239
|
*
|
|
3050
3240
|
* chart_title_set_name(chart, "Year End Results");
|
|
3051
3241
|
* chart_title_set_name_font(chart, &font);
|
|
@@ -3053,6 +3243,20 @@ void chart_title_set_name_range(lxw_chart *chart, const char *sheetname,
|
|
|
3053
3243
|
*
|
|
3054
3244
|
* @image html chart_title_set_name_font.png
|
|
3055
3245
|
*
|
|
3246
|
+
* In Excel a chart title font is bold by default (as shown in the image
|
|
3247
|
+
* above). To turn off bold in the font you cannot use #LXW_FALSE (0) since
|
|
3248
|
+
* that is indistinguishable from an uninitialized value. Instead you should
|
|
3249
|
+
* use #LXW_EXPLICIT_FALSE:
|
|
3250
|
+
*
|
|
3251
|
+
* @code
|
|
3252
|
+
* lxw_chart_font font = {.bold = LXW_EXPLICIT_FALSE, .color = LXW_COLOR_BLUE};
|
|
3253
|
+
*
|
|
3254
|
+
* chart_title_set_name(chart, "Year End Results");
|
|
3255
|
+
* chart_title_set_name_font(chart, &font);
|
|
3256
|
+
* @endcode
|
|
3257
|
+
*
|
|
3258
|
+
* @image html chart_title_set_name_font2.png
|
|
3259
|
+
*
|
|
3056
3260
|
* For more information see @ref chart_fonts.
|
|
3057
3261
|
*/
|
|
3058
3262
|
void chart_title_set_name_font(lxw_chart *chart, lxw_chart_font *font);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/*
|
|
2
2
|
* libxlsxwriter
|
|
3
3
|
*
|
|
4
|
-
* Copyright 2014-
|
|
4
|
+
* Copyright 2014-2022, John McNamara, jmcnamara@cpan.org. See LICENSE.txt.
|
|
5
5
|
*
|
|
6
6
|
* chartsheet - A libxlsxwriter library for creating Excel XLSX chartsheet files.
|
|
7
7
|
*
|
|
@@ -77,13 +77,13 @@ typedef struct lxw_chartsheet {
|
|
|
77
77
|
lxw_worksheet *worksheet;
|
|
78
78
|
lxw_chart *chart;
|
|
79
79
|
|
|
80
|
-
struct
|
|
80
|
+
struct lxw_protection_obj protection;
|
|
81
81
|
uint8_t is_protected;
|
|
82
82
|
|
|
83
|
-
char *name;
|
|
84
|
-
char *quoted_name;
|
|
85
|
-
char *tmpdir;
|
|
86
|
-
|
|
83
|
+
const char *name;
|
|
84
|
+
const char *quoted_name;
|
|
85
|
+
const char *tmpdir;
|
|
86
|
+
uint16_t index;
|
|
87
87
|
uint8_t active;
|
|
88
88
|
uint8_t selected;
|
|
89
89
|
uint8_t hidden;
|
|
@@ -143,7 +143,7 @@ lxw_error chartsheet_set_chart(lxw_chartsheet *chartsheet, lxw_chart *chart);
|
|
|
143
143
|
/* Not currently required since scale options aren't useful in a chartsheet. */
|
|
144
144
|
lxw_error chartsheet_set_chart_opt(lxw_chartsheet *chartsheet,
|
|
145
145
|
lxw_chart *chart,
|
|
146
|
-
|
|
146
|
+
lxw_chart_options *user_options);
|
|
147
147
|
|
|
148
148
|
/**
|
|
149
149
|
* @brief Make a chartsheet the active, i.e., visible chartsheet.
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* libxlsxwriter
|
|
3
|
+
*
|
|
4
|
+
* Copyright 2014-2022, John McNamara, jmcnamara@cpan.org. See LICENSE.txt.
|
|
5
|
+
*
|
|
6
|
+
* comment - A libxlsxwriter library for creating Excel XLSX comment files.
|
|
7
|
+
*
|
|
8
|
+
*/
|
|
9
|
+
#ifndef __LXW_COMMENT_H__
|
|
10
|
+
#define __LXW_COMMENT_H__
|
|
11
|
+
|
|
12
|
+
#include <stdint.h>
|
|
13
|
+
|
|
14
|
+
#include "common.h"
|
|
15
|
+
#include "worksheet.h"
|
|
16
|
+
|
|
17
|
+
/* Define the tree.h RB structs for the red-black head types. */
|
|
18
|
+
RB_HEAD(lxw_author_ids, lxw_author_id);
|
|
19
|
+
|
|
20
|
+
/*
|
|
21
|
+
* Struct to represent a comment object.
|
|
22
|
+
*/
|
|
23
|
+
typedef struct lxw_comment {
|
|
24
|
+
|
|
25
|
+
FILE *file;
|
|
26
|
+
struct lxw_comment_objs *comment_objs;
|
|
27
|
+
struct lxw_author_ids *author_ids;
|
|
28
|
+
char *comment_author;
|
|
29
|
+
uint32_t author_id;
|
|
30
|
+
|
|
31
|
+
} lxw_comment;
|
|
32
|
+
|
|
33
|
+
/* Struct to an author id */
|
|
34
|
+
typedef struct lxw_author_id {
|
|
35
|
+
uint32_t id;
|
|
36
|
+
char *author;
|
|
37
|
+
|
|
38
|
+
RB_ENTRY (lxw_author_id) tree_pointers;
|
|
39
|
+
} lxw_author_id;
|
|
40
|
+
|
|
41
|
+
#define LXW_RB_GENERATE_AUTHOR_IDS(name, type, field, cmp) \
|
|
42
|
+
RB_GENERATE_INSERT_COLOR(name, type, field, static) \
|
|
43
|
+
RB_GENERATE_REMOVE_COLOR(name, type, field, static) \
|
|
44
|
+
RB_GENERATE_INSERT(name, type, field, cmp, static) \
|
|
45
|
+
RB_GENERATE_REMOVE(name, type, field, static) \
|
|
46
|
+
RB_GENERATE_FIND(name, type, field, cmp, static) \
|
|
47
|
+
RB_GENERATE_NEXT(name, type, field, static) \
|
|
48
|
+
RB_GENERATE_MINMAX(name, type, field, static) \
|
|
49
|
+
/* Add unused struct to allow adding a semicolon */ \
|
|
50
|
+
struct lxw_rb_generate_author_ids{int unused;}
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
/* *INDENT-OFF* */
|
|
54
|
+
#ifdef __cplusplus
|
|
55
|
+
extern "C" {
|
|
56
|
+
#endif
|
|
57
|
+
/* *INDENT-ON* */
|
|
58
|
+
|
|
59
|
+
lxw_comment *lxw_comment_new(void);
|
|
60
|
+
void lxw_comment_free(lxw_comment *comment);
|
|
61
|
+
void lxw_comment_assemble_xml_file(lxw_comment *self);
|
|
62
|
+
|
|
63
|
+
/* Declarations required for unit testing. */
|
|
64
|
+
#ifdef TESTING
|
|
65
|
+
|
|
66
|
+
STATIC void _comment_xml_declaration(lxw_comment *self);
|
|
67
|
+
|
|
68
|
+
#endif /* TESTING */
|
|
69
|
+
|
|
70
|
+
/* *INDENT-OFF* */
|
|
71
|
+
#ifdef __cplusplus
|
|
72
|
+
}
|
|
73
|
+
#endif
|
|
74
|
+
/* *INDENT-ON* */
|
|
75
|
+
|
|
76
|
+
#endif /* __LXW_COMMENT_H__ */
|