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
@@ -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__ */
|