write_xlsx 1.13.0 → 1.15.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/.rubocop.yml +15 -0
- data/Changes +20 -0
- data/lib/write_xlsx/chart/area.rb +2 -2
- data/lib/write_xlsx/chart/axis.rb +55 -32
- data/lib/write_xlsx/chart/axis_writer.rb +528 -0
- data/lib/write_xlsx/chart/bar.rb +2 -2
- data/lib/write_xlsx/chart/caption.rb +16 -9
- data/lib/write_xlsx/chart/chart_area.rb +121 -0
- data/lib/write_xlsx/chart/column.rb +2 -2
- data/lib/write_xlsx/chart/d_pt_point_writer.rb +14 -0
- data/lib/write_xlsx/chart/doughnut.rb +0 -3
- data/lib/write_xlsx/chart/formatting_writer.rb +652 -0
- data/lib/write_xlsx/chart/initialization.rb +100 -0
- data/lib/write_xlsx/chart/line.rb +4 -3
- data/lib/write_xlsx/chart/pie.rb +6 -2
- data/lib/write_xlsx/chart/radar.rb +2 -2
- data/lib/write_xlsx/chart/scatter.rb +4 -3
- data/lib/write_xlsx/chart/series.rb +35 -15
- data/lib/write_xlsx/chart/series_data.rb +132 -0
- data/lib/write_xlsx/chart/series_writer.rb +318 -0
- data/lib/write_xlsx/chart/settings.rb +226 -0
- data/lib/write_xlsx/chart/stock.rb +2 -2
- data/lib/write_xlsx/chart/table.rb +50 -0
- data/lib/write_xlsx/chart/xml_writer.rb +305 -0
- data/lib/write_xlsx/chart.rb +286 -2477
- data/lib/write_xlsx/chartsheet.rb +31 -82
- data/lib/write_xlsx/constants.rb +11 -0
- data/lib/write_xlsx/drawing.rb +5 -3
- data/lib/write_xlsx/format/alignment_state.rb +39 -0
- data/lib/write_xlsx/format/alignment_style.rb +92 -0
- data/lib/write_xlsx/format/border_state.rb +47 -0
- data/lib/write_xlsx/format/border_style.rb +116 -0
- data/lib/write_xlsx/format/fill_state.rb +26 -0
- data/lib/write_xlsx/format/fill_style.rb +52 -0
- data/lib/write_xlsx/format/font_state.rb +74 -0
- data/lib/write_xlsx/format/font_style.rb +172 -0
- data/lib/write_xlsx/format/format_state.rb +65 -0
- data/lib/write_xlsx/format/number_format_state.rb +20 -0
- data/lib/write_xlsx/format/number_format_style.rb +28 -0
- data/lib/write_xlsx/format/protection_state.rb +20 -0
- data/lib/write_xlsx/format/protection_style.rb +28 -0
- data/lib/write_xlsx/format.rb +1093 -426
- data/lib/write_xlsx/formats.rb +0 -2
- data/lib/write_xlsx/image_property.rb +4 -1
- data/lib/write_xlsx/inserted_chart.rb +1 -1
- data/lib/write_xlsx/object_positioning.rb +15 -1
- data/lib/write_xlsx/package/app.rb +2 -2
- data/lib/write_xlsx/package/button.rb +6 -2
- data/lib/write_xlsx/package/comments.rb +11 -3
- data/lib/write_xlsx/package/conditional_format.rb +7 -3
- data/lib/write_xlsx/package/content_types.rb +2 -2
- data/lib/write_xlsx/package/core.rb +2 -2
- data/lib/write_xlsx/package/custom.rb +3 -2
- data/lib/write_xlsx/package/metadata.rb +2 -2
- data/lib/write_xlsx/package/packager.rb +0 -3
- data/lib/write_xlsx/package/relationships.rb +2 -2
- data/lib/write_xlsx/package/rich_value.rb +4 -2
- data/lib/write_xlsx/package/rich_value_rel.rb +2 -2
- data/lib/write_xlsx/package/rich_value_structure.rb +2 -2
- data/lib/write_xlsx/package/rich_value_types.rb +3 -3
- data/lib/write_xlsx/package/shared_strings.rb +2 -2
- data/lib/write_xlsx/package/styles.rb +13 -9
- data/lib/write_xlsx/package/table.rb +8 -2
- data/lib/write_xlsx/package/theme.rb +0 -3
- data/lib/write_xlsx/package/vml.rb +2 -2
- data/lib/write_xlsx/page_setup.rb +3 -1
- data/lib/write_xlsx/shape.rb +97 -100
- data/lib/write_xlsx/sheets.rb +6 -1
- data/lib/write_xlsx/sparkline.rb +2 -2
- data/lib/write_xlsx/utility/cell_reference.rb +124 -0
- data/lib/write_xlsx/utility/chart_formatting.rb +262 -0
- data/lib/write_xlsx/utility/common.rb +44 -0
- data/lib/write_xlsx/utility/date_time.rb +113 -0
- data/lib/write_xlsx/utility/dimensions.rb +40 -0
- data/lib/write_xlsx/utility/drawing.rb +136 -0
- data/lib/write_xlsx/utility/rich_text.rb +184 -0
- data/lib/write_xlsx/utility/sheetname_quoting.rb +73 -0
- data/lib/write_xlsx/utility/string_width.rb +45 -0
- data/lib/write_xlsx/utility/url.rb +27 -0
- data/lib/write_xlsx/utility/xml_primitives.rb +32 -0
- data/lib/write_xlsx/version.rb +1 -1
- data/lib/write_xlsx/workbook/chart_data.rb +188 -0
- data/lib/write_xlsx/workbook/format_preparation.rb +199 -0
- data/lib/write_xlsx/workbook/initialization.rb +223 -0
- data/lib/write_xlsx/workbook/package_preparation.rb +231 -0
- data/lib/write_xlsx/workbook/workbook_writer.rb +164 -0
- data/lib/write_xlsx/workbook.rb +143 -981
- data/lib/write_xlsx/worksheet/autofilter.rb +3 -1
- data/lib/write_xlsx/worksheet/cell_data.rb +5 -1
- data/lib/write_xlsx/worksheet/columns.rb +8 -3
- data/lib/write_xlsx/worksheet/data_validation.rb +9 -1
- data/lib/write_xlsx/worksheet/data_writing.rb +37 -10
- data/lib/write_xlsx/worksheet/formatting.rb +3 -1
- data/lib/write_xlsx/worksheet/hyperlink.rb +9 -1
- data/lib/write_xlsx/worksheet/row_col_sizing.rb +3 -1
- data/lib/write_xlsx/worksheet/xml_writer.rb +9 -4
- data/lib/write_xlsx/worksheet.rb +19 -2
- metadata +41 -2
- data/lib/write_xlsx/utility.rb +0 -1034
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: e475548e954baadcd73499953c8a6a01a3e668ec2e023d3a98f382e633b0b460
|
|
4
|
+
data.tar.gz: 57f95edde86df1b2a6d9d8bae225f0ad085a3d3f1f93e093c56d8f0be21897d4
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 4565dea924eb24aeae0297e3bc8c418815618ffaa24c4f92b8ecb642bf5b18d1dc47731caf944092caeb9974c6f659a919a744b46a5b674933816d8f496ec096
|
|
7
|
+
data.tar.gz: a5b5094db8ce823dfb0fa773bf9f5e0c69a6fcc767cbbf2b1817ab5bc4735db9b02ebe5ab0d6c629cf3dc51cc29a8cd92735c4a03e595744974892334bf89f1d
|
data/.rubocop.yml
CHANGED
|
@@ -48,6 +48,9 @@ Lint/DuplicateBranch:
|
|
|
48
48
|
- 'lib/write_xlsx/worksheet.rb'
|
|
49
49
|
- 'lib/write_xlsx/worksheet/data_writing.rb'
|
|
50
50
|
|
|
51
|
+
Lint/DuplicateMethods:
|
|
52
|
+
Enabled: false
|
|
53
|
+
|
|
51
54
|
Lint/FloatComparison:
|
|
52
55
|
Enabled: false
|
|
53
56
|
|
|
@@ -136,9 +139,18 @@ Style/NumericLiterals:
|
|
|
136
139
|
Style/OptionalBooleanParameter:
|
|
137
140
|
Enabled: false
|
|
138
141
|
|
|
142
|
+
Style/ParallelAssignment:
|
|
143
|
+
Enabled: false
|
|
144
|
+
|
|
145
|
+
Style/PreferredHashMethods:
|
|
146
|
+
Enabled: false
|
|
147
|
+
|
|
139
148
|
Style/RaiseArgs:
|
|
140
149
|
Enabled: false
|
|
141
150
|
|
|
151
|
+
Style/RedundantSelf:
|
|
152
|
+
Enabled: false
|
|
153
|
+
|
|
142
154
|
Style/SlicingWithRange:
|
|
143
155
|
Enabled: false
|
|
144
156
|
|
|
@@ -148,3 +160,6 @@ Style/StringLiterals:
|
|
|
148
160
|
Style/StringLiteralsInInterpolation:
|
|
149
161
|
Enabled: true
|
|
150
162
|
EnforcedStyle: double_quotes
|
|
163
|
+
|
|
164
|
+
Styles/TrivialAccessors:
|
|
165
|
+
Enabled: false
|
data/Changes
CHANGED
|
@@ -1,5 +1,25 @@
|
|
|
1
1
|
Change history of write_xlsx rubygem.
|
|
2
2
|
|
|
3
|
+
2026-03-20 v1.15.0
|
|
4
|
+
Add the option to position custom data labels in the same way that the
|
|
5
|
+
data labels can be positioned for the entire series.
|
|
6
|
+
|
|
7
|
+
Add border, fill, gradient and pattern formatting options for
|
|
8
|
+
chart titles and also chart axis titles.
|
|
9
|
+
|
|
10
|
+
Added documentation for the Worksheet `autofit()` method.
|
|
11
|
+
|
|
12
|
+
Fix failed match for range string in conditional format.
|
|
13
|
+
Strings used in a cell equality must be quoted. In order to
|
|
14
|
+
ensure this there is a check for non-range/non-numeric strings.
|
|
15
|
+
However this test wasn't anchored properly and gave a false
|
|
16
|
+
positive.
|
|
17
|
+
|
|
18
|
+
Fixed an issue where `set_row()` with the default height of 15 was
|
|
19
|
+
ignored if `set_default_row()` was also used.
|
|
20
|
+
|
|
21
|
+
Fixed issue with 0 DPI in PNG images.
|
|
22
|
+
|
|
3
23
|
2026-03-12 v1.13.0
|
|
4
24
|
fix sheet name quoting with upstream Perl implementation.
|
|
5
25
|
|
|
@@ -15,12 +15,12 @@
|
|
|
15
15
|
|
|
16
16
|
require 'write_xlsx/package/xml_writer_simple'
|
|
17
17
|
require 'write_xlsx/chart'
|
|
18
|
-
require 'write_xlsx/utility'
|
|
18
|
+
require 'write_xlsx/utility/xml_primitives'
|
|
19
19
|
|
|
20
20
|
module Writexlsx
|
|
21
21
|
class Chart
|
|
22
22
|
class Area < self
|
|
23
|
-
include Writexlsx::Utility
|
|
23
|
+
include Writexlsx::Utility::XmlPrimitives
|
|
24
24
|
|
|
25
25
|
def initialize(subtype)
|
|
26
26
|
super
|
|
@@ -2,13 +2,13 @@
|
|
|
2
2
|
# frozen_string_literal: true
|
|
3
3
|
|
|
4
4
|
require 'write_xlsx/package/xml_writer_simple'
|
|
5
|
-
require 'write_xlsx/utility'
|
|
6
5
|
require 'write_xlsx/chart/caption'
|
|
7
6
|
|
|
8
7
|
module Writexlsx
|
|
9
8
|
class Chart
|
|
10
|
-
class Axis
|
|
11
|
-
include Writexlsx::Utility
|
|
9
|
+
class Axis
|
|
10
|
+
include Writexlsx::Utility::Common
|
|
11
|
+
include Writexlsx::Utility::RichText
|
|
12
12
|
|
|
13
13
|
attr_accessor :defaults
|
|
14
14
|
attr_accessor :min, :max, :num_format, :position
|
|
@@ -19,39 +19,79 @@ module Writexlsx
|
|
|
19
19
|
attr_reader :num_format_linked, :num_font, :layout, :interval_unit
|
|
20
20
|
attr_reader :interval_tick, :major_gridlines, :minor_gridlines, :reverse
|
|
21
21
|
attr_reader :line, :fill, :text_axis, :label_align
|
|
22
|
+
attr_reader :title
|
|
23
|
+
|
|
24
|
+
def initialize(chart)
|
|
25
|
+
@chart = chart
|
|
26
|
+
@title = Caption.new(chart)
|
|
27
|
+
end
|
|
22
28
|
|
|
23
29
|
#
|
|
24
30
|
# Convert user defined axis values into axis instance.
|
|
25
31
|
#
|
|
26
|
-
def
|
|
27
|
-
super
|
|
32
|
+
def apply_options(params) # :nodoc:
|
|
28
33
|
args = (defaults || {}).merge(params)
|
|
29
34
|
|
|
35
|
+
apply_axis_options(args)
|
|
36
|
+
apply_axis_display_options(args)
|
|
37
|
+
apply_axis_format_options(args)
|
|
38
|
+
apply_axis_tick_options(args)
|
|
39
|
+
apply_axis_title_options(args)
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def apply_axis_options(args)
|
|
30
43
|
%i[
|
|
31
44
|
reverse min max minor_unit major_unit minor_unit_type
|
|
32
45
|
major_unit_type log_base crossing position_axis
|
|
33
46
|
label_position num_format num_format_linked interval_unit
|
|
34
47
|
interval_tick line fill label_align
|
|
35
48
|
].each { |val| instance_variable_set("@#{val}", args[val]) }
|
|
36
|
-
set_major_minor_gridlines(args)
|
|
37
49
|
|
|
38
|
-
@visible
|
|
50
|
+
@visible = args[:visible] || 1
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
def apply_axis_display_options(args)
|
|
54
|
+
set_major_minor_gridlines(args)
|
|
39
55
|
set_display_units(args)
|
|
40
56
|
set_display_units_visible(args)
|
|
41
57
|
set_position(args)
|
|
42
58
|
set_position_axis
|
|
43
|
-
|
|
44
|
-
set_axis_name_layout(args)
|
|
45
|
-
set_axis_line(args)
|
|
46
|
-
set_axis_fill(args)
|
|
59
|
+
|
|
47
60
|
if ptrue?(args[:text_axis])
|
|
48
|
-
chart.date_category = false
|
|
61
|
+
@chart.date_category = false
|
|
49
62
|
@text_axis = true
|
|
50
63
|
end
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
def apply_axis_format_options(args)
|
|
67
|
+
@num_font = convert_font_args(args[:num_font])
|
|
68
|
+
@line = @chart.line_properties(args[:line])
|
|
69
|
+
@fill = @chart.fill_properties(args[:fill])
|
|
70
|
+
end
|
|
51
71
|
|
|
52
|
-
|
|
53
|
-
@major_tick_mark = get_tick_type(
|
|
54
|
-
@minor_tick_mark = get_tick_type(
|
|
72
|
+
def apply_axis_tick_options(args)
|
|
73
|
+
@major_tick_mark = get_tick_type(args[:major_tick_mark])
|
|
74
|
+
@minor_tick_mark = get_tick_type(args[:minor_tick_mark])
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
def apply_axis_title_options(args)
|
|
78
|
+
# Set the axis title properties.
|
|
79
|
+
@title.apply_text_options(
|
|
80
|
+
name: args[:name],
|
|
81
|
+
name_formula: args[:name_formula],
|
|
82
|
+
data: args[:data],
|
|
83
|
+
name_font: args[:name_font],
|
|
84
|
+
layout: args[:name_layout]
|
|
85
|
+
)
|
|
86
|
+
|
|
87
|
+
# Set the format properties.
|
|
88
|
+
@title.apply_format_options(
|
|
89
|
+
line: args[:name_line],
|
|
90
|
+
border: args[:name_border],
|
|
91
|
+
fill: args[:name_fill],
|
|
92
|
+
pattern: args[:name_pattern],
|
|
93
|
+
gradient: args[:name_gradient]
|
|
94
|
+
)
|
|
55
95
|
end
|
|
56
96
|
|
|
57
97
|
#
|
|
@@ -171,23 +211,6 @@ module Writexlsx
|
|
|
171
211
|
end
|
|
172
212
|
end
|
|
173
213
|
end
|
|
174
|
-
|
|
175
|
-
def set_font_properties(args)
|
|
176
|
-
@num_font = convert_font_args(args[:num_font])
|
|
177
|
-
@name_font = convert_font_args(args[:name_font])
|
|
178
|
-
end
|
|
179
|
-
|
|
180
|
-
def set_axis_name_layout(args)
|
|
181
|
-
@layout = chart.layout_properties(args[:name_layout], 1)
|
|
182
|
-
end
|
|
183
|
-
|
|
184
|
-
def set_axis_line(args)
|
|
185
|
-
@line = chart.line_properties(args[:line])
|
|
186
|
-
end
|
|
187
|
-
|
|
188
|
-
def set_axis_fill(args)
|
|
189
|
-
@fill = chart.fill_properties(args[:fill])
|
|
190
|
-
end
|
|
191
214
|
end
|
|
192
215
|
end
|
|
193
216
|
end
|