write_xlsx 1.12.3 → 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 +22 -0
- data/Changes +23 -0
- data/README.md +1 -1
- 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 +35 -83
- 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 +203 -0
- data/lib/write_xlsx/package/app.rb +3 -3
- 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 +192 -0
- data/lib/write_xlsx/shape.rb +97 -100
- data/lib/write_xlsx/sheets.rb +9 -4
- 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/asset_manager.rb +60 -0
- data/lib/write_xlsx/worksheet/autofilter.rb +390 -0
- data/lib/write_xlsx/worksheet/cell_data.rb +13 -6
- data/lib/write_xlsx/worksheet/cell_data_manager.rb +47 -0
- data/lib/write_xlsx/worksheet/cell_data_store.rb +61 -0
- data/lib/write_xlsx/worksheet/columns.rb +204 -0
- data/lib/write_xlsx/worksheet/comments_support.rb +61 -0
- data/lib/write_xlsx/worksheet/conditional_formats.rb +30 -0
- data/lib/write_xlsx/worksheet/data_validation.rb +9 -1
- data/lib/write_xlsx/worksheet/data_writing.rb +1017 -0
- data/lib/write_xlsx/worksheet/drawing_methods.rb +308 -0
- data/lib/write_xlsx/worksheet/drawing_preparation.rb +290 -0
- data/lib/write_xlsx/worksheet/drawing_relations.rb +76 -0
- data/lib/write_xlsx/worksheet/drawing_xml_writer.rb +50 -0
- data/lib/write_xlsx/worksheet/formatting.rb +418 -0
- data/lib/write_xlsx/worksheet/hyperlink.rb +9 -1
- data/lib/write_xlsx/worksheet/initialization.rb +146 -0
- data/lib/write_xlsx/worksheet/panes.rb +64 -0
- data/lib/write_xlsx/worksheet/print_options.rb +72 -0
- data/lib/write_xlsx/worksheet/protection.rb +65 -0
- data/lib/write_xlsx/worksheet/rich_text_helpers.rb +78 -0
- data/lib/write_xlsx/worksheet/row_col_sizing.rb +69 -0
- data/lib/write_xlsx/worksheet/rows.rb +84 -0
- data/lib/write_xlsx/worksheet/selection.rb +41 -0
- data/lib/write_xlsx/worksheet/xml_writer.rb +1246 -0
- data/lib/write_xlsx/worksheet.rb +376 -4530
- metadata +66 -4
- data/lib/write_xlsx/utility.rb +0 -986
- data/lib/write_xlsx/worksheet/page_setup.rb +0 -192
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
|
@@ -46,6 +46,13 @@ Lint/DuplicateBranch:
|
|
|
46
46
|
IgnoreLiteralBranches: true
|
|
47
47
|
Exclude:
|
|
48
48
|
- 'lib/write_xlsx/worksheet.rb'
|
|
49
|
+
- 'lib/write_xlsx/worksheet/data_writing.rb'
|
|
50
|
+
|
|
51
|
+
Lint/DuplicateMethods:
|
|
52
|
+
Enabled: false
|
|
53
|
+
|
|
54
|
+
Lint/FloatComparison:
|
|
55
|
+
Enabled: false
|
|
49
56
|
|
|
50
57
|
Lint/UnderscorePrefixedVariableName:
|
|
51
58
|
Enabled: false
|
|
@@ -94,6 +101,9 @@ Naming/MethodParameterName:
|
|
|
94
101
|
Naming/PredicateMethod:
|
|
95
102
|
Enabled: false
|
|
96
103
|
|
|
104
|
+
Naming/PredicatePrefix:
|
|
105
|
+
Enabled: false
|
|
106
|
+
|
|
97
107
|
Naming/VariableNumber:
|
|
98
108
|
Enabled: false
|
|
99
109
|
|
|
@@ -129,9 +139,18 @@ Style/NumericLiterals:
|
|
|
129
139
|
Style/OptionalBooleanParameter:
|
|
130
140
|
Enabled: false
|
|
131
141
|
|
|
142
|
+
Style/ParallelAssignment:
|
|
143
|
+
Enabled: false
|
|
144
|
+
|
|
145
|
+
Style/PreferredHashMethods:
|
|
146
|
+
Enabled: false
|
|
147
|
+
|
|
132
148
|
Style/RaiseArgs:
|
|
133
149
|
Enabled: false
|
|
134
150
|
|
|
151
|
+
Style/RedundantSelf:
|
|
152
|
+
Enabled: false
|
|
153
|
+
|
|
135
154
|
Style/SlicingWithRange:
|
|
136
155
|
Enabled: false
|
|
137
156
|
|
|
@@ -141,3 +160,6 @@ Style/StringLiterals:
|
|
|
141
160
|
Style/StringLiteralsInInterpolation:
|
|
142
161
|
Enabled: true
|
|
143
162
|
EnforcedStyle: double_quotes
|
|
163
|
+
|
|
164
|
+
Styles/TrivialAccessors:
|
|
165
|
+
Enabled: false
|
data/Changes
CHANGED
|
@@ -1,5 +1,28 @@
|
|
|
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
|
+
|
|
23
|
+
2026-03-12 v1.13.0
|
|
24
|
+
fix sheet name quoting with upstream Perl implementation.
|
|
25
|
+
|
|
3
26
|
2025-10-28 v1.12.3
|
|
4
27
|
fix compatibility with rubyzip 3.x
|
|
5
28
|
|
data/README.md
CHANGED
|
@@ -85,7 +85,7 @@ the first worksheet in an Excel XML spreadsheet called ruby.xlsx:
|
|
|
85
85
|
Original Perl module was written by John McNamara(jmcnamara@cpan.org).
|
|
86
86
|
|
|
87
87
|
Converted to ruby by Hideo NAKAMURA(nakamrua.hideo@gmail.com)
|
|
88
|
-
Copyright (c) 2012-
|
|
88
|
+
Copyright (c) 2012-2026 Hideo NAKAMURA.
|
|
89
89
|
|
|
90
90
|
See LICENSE.txt for further details.
|
|
91
91
|
|
|
@@ -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
|