caxlsx 3.3.0 → 3.4.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/CHANGELOG.md +9 -0
- data/README.md +24 -5
- data/Rakefile +0 -1
- data/lib/axlsx/content_type/abstract_content_type.rb +2 -5
- data/lib/axlsx/content_type/content_type.rb +0 -4
- data/lib/axlsx/content_type/default.rb +1 -5
- data/lib/axlsx/content_type/override.rb +0 -4
- data/lib/axlsx/doc_props/app.rb +1 -6
- data/lib/axlsx/doc_props/core.rb +1 -6
- data/lib/axlsx/drawing/area_chart.rb +3 -6
- data/lib/axlsx/drawing/area_series.rb +1 -4
- data/lib/axlsx/drawing/ax_data_source.rb +1 -6
- data/lib/axlsx/drawing/axes.rb +5 -6
- data/lib/axlsx/drawing/axis.rb +7 -12
- data/lib/axlsx/drawing/bar_3D_chart.rb +7 -10
- data/lib/axlsx/drawing/bar_chart.rb +6 -9
- data/lib/axlsx/drawing/bar_series.rb +2 -8
- data/lib/axlsx/drawing/bubble_chart.rb +2 -5
- data/lib/axlsx/drawing/bubble_series.rb +3 -6
- data/lib/axlsx/drawing/cat_axis.rb +2 -7
- data/lib/axlsx/drawing/chart.rb +7 -12
- data/lib/axlsx/drawing/d_lbls.rb +23 -22
- data/lib/axlsx/drawing/drawing.rb +4 -8
- data/lib/axlsx/drawing/graphic_frame.rb +0 -3
- data/lib/axlsx/drawing/hyperlink.rb +4 -7
- data/lib/axlsx/drawing/line_3D_chart.rb +10 -14
- data/lib/axlsx/drawing/line_chart.rb +3 -6
- data/lib/axlsx/drawing/line_series.rb +1 -4
- data/lib/axlsx/drawing/marker.rb +5 -9
- data/lib/axlsx/drawing/num_data.rb +4 -9
- data/lib/axlsx/drawing/num_data_source.rb +3 -7
- data/lib/axlsx/drawing/num_val.rb +2 -5
- data/lib/axlsx/drawing/one_cell_anchor.rb +4 -6
- data/lib/axlsx/drawing/pic.rb +46 -13
- data/lib/axlsx/drawing/picture_locking.rb +3 -6
- data/lib/axlsx/drawing/pie_3D_chart.rb +2 -7
- data/lib/axlsx/drawing/pie_series.rb +1 -6
- data/lib/axlsx/drawing/scaling.rb +2 -5
- data/lib/axlsx/drawing/scatter_chart.rb +2 -5
- data/lib/axlsx/drawing/scatter_series.rb +2 -5
- data/lib/axlsx/drawing/ser_axis.rb +2 -6
- data/lib/axlsx/drawing/series.rb +3 -5
- data/lib/axlsx/drawing/series_title.rb +0 -2
- data/lib/axlsx/drawing/str_data.rb +3 -8
- data/lib/axlsx/drawing/str_val.rb +2 -5
- data/lib/axlsx/drawing/title.rb +12 -15
- data/lib/axlsx/drawing/two_cell_anchor.rb +5 -7
- data/lib/axlsx/drawing/val_axis.rb +1 -4
- data/lib/axlsx/drawing/view_3D.rb +24 -24
- data/lib/axlsx/drawing/vml_drawing.rb +2 -5
- data/lib/axlsx/drawing/vml_shape.rb +4 -7
- data/lib/axlsx/package.rb +35 -36
- data/lib/axlsx/rels/relationship.rb +21 -24
- data/lib/axlsx/rels/relationships.rb +3 -6
- data/lib/axlsx/stylesheet/border.rb +1 -4
- data/lib/axlsx/stylesheet/border_pr.rb +3 -5
- data/lib/axlsx/stylesheet/cell_alignment.rb +2 -10
- data/lib/axlsx/stylesheet/cell_protection.rb +1 -4
- data/lib/axlsx/stylesheet/cell_style.rb +3 -7
- data/lib/axlsx/stylesheet/color.rb +6 -5
- data/lib/axlsx/stylesheet/dxf.rb +2 -6
- data/lib/axlsx/stylesheet/fill.rb +0 -4
- data/lib/axlsx/stylesheet/font.rb +7 -6
- data/lib/axlsx/stylesheet/gradient_fill.rb +4 -6
- data/lib/axlsx/stylesheet/gradient_stop.rb +2 -3
- data/lib/axlsx/stylesheet/num_fmt.rb +1 -4
- data/lib/axlsx/stylesheet/pattern_fill.rb +3 -5
- data/lib/axlsx/stylesheet/styles.rb +53 -45
- data/lib/axlsx/stylesheet/table_style.rb +5 -8
- data/lib/axlsx/stylesheet/table_style_element.rb +1 -4
- data/lib/axlsx/stylesheet/table_styles.rb +3 -7
- data/lib/axlsx/stylesheet/xf.rb +3 -6
- data/lib/axlsx/util/accessors.rb +2 -4
- data/lib/axlsx/util/constants.rb +3 -5
- data/lib/axlsx/util/mime_type_utils.rb +13 -0
- data/lib/axlsx/util/options_parser.rb +1 -2
- data/lib/axlsx/util/serialized_attributes.rb +4 -5
- data/lib/axlsx/util/simple_typed_list.rb +18 -17
- data/lib/axlsx/util/storage.rb +32 -36
- data/lib/axlsx/util/validators.rb +7 -4
- data/lib/axlsx/util/zip_command.rb +0 -2
- data/lib/axlsx/version.rb +1 -2
- data/lib/axlsx/workbook/defined_name.rb +6 -5
- data/lib/axlsx/workbook/defined_names.rb +1 -2
- data/lib/axlsx/workbook/shared_strings_table.rb +3 -6
- data/lib/axlsx/workbook/workbook.rb +96 -91
- data/lib/axlsx/workbook/workbook_view.rb +5 -10
- data/lib/axlsx/workbook/workbook_views.rb +1 -3
- data/lib/axlsx/workbook/worksheet/auto_filter/auto_filter.rb +9 -8
- data/lib/axlsx/workbook/worksheet/auto_filter/filter_column.rb +6 -6
- data/lib/axlsx/workbook/worksheet/auto_filter/filters.rb +13 -14
- data/lib/axlsx/workbook/worksheet/border_creator.rb +29 -26
- data/lib/axlsx/workbook/worksheet/break.rb +2 -5
- data/lib/axlsx/workbook/worksheet/cell.rb +46 -26
- data/lib/axlsx/workbook/worksheet/cell_serializer.rb +11 -11
- data/lib/axlsx/workbook/worksheet/cfvo.rb +2 -2
- data/lib/axlsx/workbook/worksheet/cfvos.rb +3 -5
- data/lib/axlsx/workbook/worksheet/col.rb +4 -7
- data/lib/axlsx/workbook/worksheet/col_breaks.rb +4 -5
- data/lib/axlsx/workbook/worksheet/color_scale.rb +10 -12
- data/lib/axlsx/workbook/worksheet/cols.rb +6 -6
- data/lib/axlsx/workbook/worksheet/comment.rb +4 -5
- data/lib/axlsx/workbook/worksheet/comments.rb +6 -10
- data/lib/axlsx/workbook/worksheet/conditional_formatting.rb +4 -5
- data/lib/axlsx/workbook/worksheet/conditional_formatting_rule.rb +2 -6
- data/lib/axlsx/workbook/worksheet/conditional_formattings.rb +2 -4
- data/lib/axlsx/workbook/worksheet/data_bar.rb +20 -22
- data/lib/axlsx/workbook/worksheet/data_validation.rb +4 -5
- data/lib/axlsx/workbook/worksheet/data_validations.rb +2 -5
- data/lib/axlsx/workbook/worksheet/date_time_converter.rb +1 -3
- data/lib/axlsx/workbook/worksheet/dimension.rb +5 -4
- data/lib/axlsx/workbook/worksheet/header_footer.rb +0 -1
- data/lib/axlsx/workbook/worksheet/icon_set.rb +2 -3
- data/lib/axlsx/workbook/worksheet/merged_cells.rb +8 -8
- data/lib/axlsx/workbook/worksheet/outline_pr.rb +0 -1
- data/lib/axlsx/workbook/worksheet/page_margins.rb +2 -2
- data/lib/axlsx/workbook/worksheet/page_set_up_pr.rb +1 -3
- data/lib/axlsx/workbook/worksheet/page_setup.rb +117 -120
- data/lib/axlsx/workbook/worksheet/pane.rb +16 -17
- data/lib/axlsx/workbook/worksheet/pivot_table.rb +8 -11
- data/lib/axlsx/workbook/worksheet/pivot_table_cache_definition.rb +8 -11
- data/lib/axlsx/workbook/worksheet/pivot_tables.rb +3 -4
- data/lib/axlsx/workbook/worksheet/print_options.rb +0 -1
- data/lib/axlsx/workbook/worksheet/protected_range.rb +4 -5
- data/lib/axlsx/workbook/worksheet/protected_ranges.rb +9 -9
- data/lib/axlsx/workbook/worksheet/rich_text.rb +4 -6
- data/lib/axlsx/workbook/worksheet/rich_text_run.rb +21 -5
- data/lib/axlsx/workbook/worksheet/row.rb +24 -15
- data/lib/axlsx/workbook/worksheet/row_breaks.rb +3 -4
- data/lib/axlsx/workbook/worksheet/selection.rb +7 -9
- data/lib/axlsx/workbook/worksheet/sheet_calc_pr.rb +5 -6
- data/lib/axlsx/workbook/worksheet/sheet_data.rb +4 -6
- data/lib/axlsx/workbook/worksheet/sheet_format_pr.rb +18 -18
- data/lib/axlsx/workbook/worksheet/sheet_pr.rb +4 -4
- data/lib/axlsx/workbook/worksheet/sheet_protection.rb +12 -13
- data/lib/axlsx/workbook/worksheet/sheet_view.rb +35 -42
- data/lib/axlsx/workbook/worksheet/table.rb +7 -9
- data/lib/axlsx/workbook/worksheet/table_style_info.rb +2 -3
- data/lib/axlsx/workbook/worksheet/tables.rb +4 -4
- data/lib/axlsx/workbook/worksheet/worksheet.rb +63 -35
- data/lib/axlsx/workbook/worksheet/worksheet_comments.rb +6 -6
- data/lib/axlsx/workbook/worksheet/worksheet_drawing.rb +3 -2
- data/lib/axlsx/workbook/worksheet/worksheet_hyperlink.rb +5 -6
- data/lib/axlsx/workbook/worksheet/worksheet_hyperlinks.rb +4 -4
- data/lib/axlsx.rb +23 -9
- data/lib/caxlsx.rb +0 -1
- metadata +3 -3
data/lib/axlsx/drawing/pic.rb
CHANGED
|
@@ -1,14 +1,13 @@
|
|
|
1
|
-
# encoding: UTF-8
|
|
2
1
|
module Axlsx
|
|
3
2
|
# a Pic object represents an image in your worksheet
|
|
4
3
|
# Worksheet#add_image is the recommended way to manage images in your sheets
|
|
5
4
|
# @see Worksheet#add_image
|
|
6
5
|
class Pic
|
|
7
|
-
|
|
8
6
|
include Axlsx::OptionsParser
|
|
9
7
|
|
|
10
8
|
# Creates a new Pic(ture) object
|
|
11
9
|
# @param [Anchor] anchor the anchor that holds this image
|
|
10
|
+
# @option options [Boolean] :remote indicates if image_src is a remote URI
|
|
12
11
|
# @option options [String] :name
|
|
13
12
|
# @option options [String] :descr
|
|
14
13
|
# @option options [String] :image_src
|
|
@@ -16,10 +15,11 @@ module Axlsx
|
|
|
16
15
|
# @option options [Integer] :width
|
|
17
16
|
# @option options [Integer] :height
|
|
18
17
|
# @option options [Float] :opacity - set the picture opacity, accepts a value between 0.0 and 1.0
|
|
19
|
-
def initialize(anchor, options={})
|
|
18
|
+
def initialize(anchor, options = {})
|
|
20
19
|
@anchor = anchor
|
|
21
20
|
@hyperlink = nil
|
|
22
21
|
@anchor.drawing.worksheet.workbook.images << self
|
|
22
|
+
@remote = options[:remote]
|
|
23
23
|
parse_options options
|
|
24
24
|
start_at(*options[:start_at]) if options[:start_at]
|
|
25
25
|
yield self if block_given?
|
|
@@ -56,10 +56,14 @@ module Axlsx
|
|
|
56
56
|
# @return [Integer]
|
|
57
57
|
attr_reader :opacity
|
|
58
58
|
|
|
59
|
+
# Flag for remote picture (from URI)
|
|
60
|
+
# @return [Boolean]
|
|
61
|
+
attr_reader :remote
|
|
62
|
+
|
|
59
63
|
# sets or updates a hyperlink for this image.
|
|
60
64
|
# @param [String] v The href value for the hyper link
|
|
61
65
|
# @option options @see Hyperlink#initialize All options available to the Hyperlink class apply - however href will be overridden with the v parameter value.
|
|
62
|
-
def hyperlink=(v, options={})
|
|
66
|
+
def hyperlink=(v, options = {})
|
|
63
67
|
options[:href] = v
|
|
64
68
|
if hyperlink.is_a?(Hyperlink)
|
|
65
69
|
options.each do |o|
|
|
@@ -73,8 +77,14 @@ module Axlsx
|
|
|
73
77
|
|
|
74
78
|
def image_src=(v)
|
|
75
79
|
Axlsx::validate_string(v)
|
|
76
|
-
|
|
77
|
-
|
|
80
|
+
if remote?
|
|
81
|
+
RegexValidator.validate('Pic.image_src', /\A#{URI::DEFAULT_PARSER.make_regexp}\z/, v)
|
|
82
|
+
RestrictionValidator.validate 'Pic.image_src', ALLOWED_MIME_TYPES, MimeTypeUtils.get_mime_type_from_uri(v)
|
|
83
|
+
else
|
|
84
|
+
RestrictionValidator.validate 'Pic.image_src', ALLOWED_MIME_TYPES, MimeTypeUtils.get_mime_type(v)
|
|
85
|
+
raise ArgumentError, "File does not exist" unless File.exist?(v)
|
|
86
|
+
end
|
|
87
|
+
|
|
78
88
|
@image_src = v
|
|
79
89
|
end
|
|
80
90
|
|
|
@@ -84,10 +94,17 @@ module Axlsx
|
|
|
84
94
|
# @see descr
|
|
85
95
|
def descr=(v) Axlsx::validate_string(v); @descr = v; end
|
|
86
96
|
|
|
97
|
+
# @see remote
|
|
98
|
+
def remote=(v) Axlsx::validate_boolean(v); @remote = v; end
|
|
99
|
+
|
|
100
|
+
def remote?
|
|
101
|
+
remote == 1 || remote.to_s == 'true'
|
|
102
|
+
end
|
|
103
|
+
|
|
87
104
|
# The file name of image_src without any path information
|
|
88
105
|
# @return [String]
|
|
89
106
|
def file_name
|
|
90
|
-
File.basename(image_src) unless image_src.nil?
|
|
107
|
+
File.basename(image_src) unless remote? || image_src.nil?
|
|
91
108
|
end
|
|
92
109
|
|
|
93
110
|
# returns the extension of image_src without the preceeding '.'
|
|
@@ -105,19 +122,24 @@ module Axlsx
|
|
|
105
122
|
# The part name for this image used in serialization and relationship building
|
|
106
123
|
# @return [String]
|
|
107
124
|
def pn
|
|
108
|
-
"#{IMAGE_PN % [(index+1), extname]}"
|
|
125
|
+
"#{IMAGE_PN % [(index + 1), extname]}"
|
|
109
126
|
end
|
|
110
127
|
|
|
111
128
|
# The relationship object for this pic.
|
|
112
129
|
# @return [Relationship]
|
|
113
130
|
def relationship
|
|
114
|
-
|
|
131
|
+
if remote?
|
|
132
|
+
Relationship.new(self, IMAGE_R, "#{image_src}", target_mode: :External)
|
|
133
|
+
else
|
|
134
|
+
Relationship.new(self, IMAGE_R, "../#{pn}")
|
|
135
|
+
end
|
|
115
136
|
end
|
|
116
137
|
|
|
117
138
|
# providing access to the anchor's width attribute
|
|
118
139
|
# @see OneCellAnchor.width
|
|
119
140
|
def width
|
|
120
141
|
return unless @anchor.is_a?(OneCellAnchor)
|
|
142
|
+
|
|
121
143
|
@anchor.width
|
|
122
144
|
end
|
|
123
145
|
|
|
@@ -147,7 +169,7 @@ module Axlsx
|
|
|
147
169
|
# @param [Integer] x The column
|
|
148
170
|
# @param [Integer] y The row
|
|
149
171
|
# @return [Marker]
|
|
150
|
-
def start_at(x, y=nil)
|
|
172
|
+
def start_at(x, y = nil)
|
|
151
173
|
@anchor.start_at x, y
|
|
152
174
|
@anchor.from
|
|
153
175
|
end
|
|
@@ -156,7 +178,7 @@ module Axlsx
|
|
|
156
178
|
# @param [Integer] x The column
|
|
157
179
|
# @param [Integer] y The row
|
|
158
180
|
# @return [Marker]
|
|
159
|
-
def end_at(x, y=nil)
|
|
181
|
+
def end_at(x, y = nil)
|
|
160
182
|
use_two_cell_anchor unless @anchor.is_a?(TwoCellAnchor)
|
|
161
183
|
@anchor.end_at x, y
|
|
162
184
|
@anchor.to
|
|
@@ -174,7 +196,7 @@ module Axlsx
|
|
|
174
196
|
picture_locking.to_xml_string(str)
|
|
175
197
|
str << '</xdr:cNvPicPr></xdr:nvPicPr>'
|
|
176
198
|
str << '<xdr:blipFill>'
|
|
177
|
-
str <<
|
|
199
|
+
str << relationship_xml_portion
|
|
178
200
|
if opacity
|
|
179
201
|
str << "<a:alphaModFix amt=\"#{opacity}\"/>"
|
|
180
202
|
end
|
|
@@ -186,16 +208,27 @@ module Axlsx
|
|
|
186
208
|
|
|
187
209
|
private
|
|
188
210
|
|
|
211
|
+
# Return correct xml relationship string portion
|
|
212
|
+
def relationship_xml_portion
|
|
213
|
+
if remote?
|
|
214
|
+
('<a:blip xmlns:r ="' << XML_NS_R << '" r:link="' << relationship.Id << '">')
|
|
215
|
+
else
|
|
216
|
+
('<a:blip xmlns:r ="' << XML_NS_R << '" r:embed="' << relationship.Id << '">')
|
|
217
|
+
end
|
|
218
|
+
end
|
|
219
|
+
|
|
189
220
|
# Changes the anchor to a one cell anchor.
|
|
190
221
|
def use_one_cell_anchor
|
|
191
222
|
return if @anchor.is_a?(OneCellAnchor)
|
|
223
|
+
|
|
192
224
|
new_anchor = OneCellAnchor.new(@anchor.drawing, :start_at => [@anchor.from.col, @anchor.from.row])
|
|
193
225
|
swap_anchor(new_anchor)
|
|
194
226
|
end
|
|
195
227
|
|
|
196
|
-
#changes the anchor type to a two cell anchor
|
|
228
|
+
# changes the anchor type to a two cell anchor
|
|
197
229
|
def use_two_cell_anchor
|
|
198
230
|
return if @anchor.is_a?(TwoCellAnchor)
|
|
231
|
+
|
|
199
232
|
new_anchor = TwoCellAnchor.new(@anchor.drawing, :start_at => [@anchor.from.col, @anchor.from.row])
|
|
200
233
|
swap_anchor(new_anchor)
|
|
201
234
|
end
|
|
@@ -1,15 +1,13 @@
|
|
|
1
|
-
# encoding: UTF-8
|
|
2
1
|
module Axlsx
|
|
3
2
|
# The picture locking class defines the locking properties for pictures in your workbook.
|
|
4
3
|
class PictureLocking
|
|
5
|
-
|
|
6
4
|
include Axlsx::OptionsParser
|
|
7
5
|
include Axlsx::SerializedAttributes
|
|
8
6
|
include Axlsx::Accessors
|
|
9
7
|
|
|
10
8
|
boolean_attr_accessor :noGrp, :noSelect, :noRot, :noChangeAspect,
|
|
11
|
-
|
|
12
|
-
|
|
9
|
+
:noMove, :noResize, :noEditPoints, :noAdjustHandles,
|
|
10
|
+
:noChangeArrowheads, :noChangeShapeType
|
|
13
11
|
|
|
14
12
|
serializable_attributes :noGrp, :noSelect, :noRot, :noChangeAspect,
|
|
15
13
|
:noMove, :noResize, :noEditPoints, :noAdjustHandles,
|
|
@@ -26,7 +24,7 @@ module Axlsx
|
|
|
26
24
|
# @option options [Boolean] noAdjustHandles
|
|
27
25
|
# @option options [Boolean] noChangeArrowheads
|
|
28
26
|
# @option options [Boolean] noChangeShapeType
|
|
29
|
-
def initialize(options={})
|
|
27
|
+
def initialize(options = {})
|
|
30
28
|
@noChangeAspect = true
|
|
31
29
|
parse_options options
|
|
32
30
|
end
|
|
@@ -37,6 +35,5 @@ module Axlsx
|
|
|
37
35
|
def to_xml_string(str = '')
|
|
38
36
|
serialized_tag('a:picLocks', str)
|
|
39
37
|
end
|
|
40
|
-
|
|
41
38
|
end
|
|
42
39
|
end
|
|
@@ -1,13 +1,9 @@
|
|
|
1
|
-
# encoding: UTF-8
|
|
2
1
|
module Axlsx
|
|
3
|
-
|
|
4
|
-
|
|
5
2
|
# The Pie3DChart is a three dimentional piechart (who would have guessed?) that you can add to your worksheet.
|
|
6
3
|
# @see Worksheet#add_chart
|
|
7
4
|
# @see Chart#add_series
|
|
8
5
|
# @see README for an example
|
|
9
6
|
class Pie3DChart < Chart
|
|
10
|
-
|
|
11
7
|
# Creates a new pie chart object
|
|
12
8
|
# @param [GraphicFrame] frame The workbook that owns this chart.
|
|
13
9
|
# @option options [Cell, String] title
|
|
@@ -22,11 +18,11 @@ module Axlsx
|
|
|
22
18
|
# @option options [Integer] perspective
|
|
23
19
|
# @see Chart
|
|
24
20
|
# @see View3D
|
|
25
|
-
def initialize(frame, options={})
|
|
21
|
+
def initialize(frame, options = {})
|
|
26
22
|
@vary_colors = true
|
|
27
23
|
super(frame, options)
|
|
28
24
|
@series_type = PieSeries
|
|
29
|
-
@view_3D = View3D.new({:rot_x =>30, :perspective=>30}.merge(options))
|
|
25
|
+
@view_3D = View3D.new({ :rot_x => 30, :perspective => 30 }.merge(options))
|
|
30
26
|
@d_lbls = nil
|
|
31
27
|
end
|
|
32
28
|
|
|
@@ -42,6 +38,5 @@ module Axlsx
|
|
|
42
38
|
str << '</c:pie3DChart>'
|
|
43
39
|
end
|
|
44
40
|
end
|
|
45
|
-
|
|
46
41
|
end
|
|
47
42
|
end
|
|
@@ -1,12 +1,9 @@
|
|
|
1
|
-
# encoding: UTF-8
|
|
2
1
|
module Axlsx
|
|
3
|
-
|
|
4
2
|
# A PieSeries defines the data and labels and explosion for pie charts series.
|
|
5
3
|
# @note The recommended way to manage series is to use Chart#add_series
|
|
6
4
|
# @see Worksheet#add_chart
|
|
7
5
|
# @see Chart#add_series
|
|
8
6
|
class PieSeries < Series
|
|
9
|
-
|
|
10
7
|
# The data for this series.
|
|
11
8
|
# @return [SimpleTypedList]
|
|
12
9
|
attr_reader :data
|
|
@@ -28,7 +25,7 @@ module Axlsx
|
|
|
28
25
|
# @option options [String] title
|
|
29
26
|
# @option options [Integer] explosion
|
|
30
27
|
# @param [Chart] chart
|
|
31
|
-
def initialize(chart, options={})
|
|
28
|
+
def initialize(chart, options = {})
|
|
32
29
|
@explosion = nil
|
|
33
30
|
@colors = []
|
|
34
31
|
super(chart, options)
|
|
@@ -68,7 +65,5 @@ module Axlsx
|
|
|
68
65
|
|
|
69
66
|
# assigns the labels for this series
|
|
70
67
|
def labels=(v) DataTypeValidator.validate "Series.labels", [AxDataSource], v; @labels = v; end
|
|
71
|
-
|
|
72
68
|
end
|
|
73
|
-
|
|
74
69
|
end
|
|
@@ -1,8 +1,6 @@
|
|
|
1
|
-
# encoding: UTF-8
|
|
2
1
|
module Axlsx
|
|
3
2
|
# The Scaling class defines axis scaling
|
|
4
3
|
class Scaling
|
|
5
|
-
|
|
6
4
|
include Axlsx::OptionsParser
|
|
7
5
|
|
|
8
6
|
# creates a new Scaling object
|
|
@@ -10,7 +8,7 @@ module Axlsx
|
|
|
10
8
|
# @option options [Symbol] orientation
|
|
11
9
|
# @option options [Float] max
|
|
12
10
|
# @option options [Float] min
|
|
13
|
-
def initialize(options={})
|
|
11
|
+
def initialize(options = {})
|
|
14
12
|
@orientation = :minMax
|
|
15
13
|
@logBase, @min, @max = nil, nil, nil
|
|
16
14
|
parse_options options
|
|
@@ -35,7 +33,7 @@ module Axlsx
|
|
|
35
33
|
attr_reader :min
|
|
36
34
|
|
|
37
35
|
# @see logBase
|
|
38
|
-
def logBase=(v) DataTypeValidator.validate "Scaling.logBase", [Integer], v, lambda { |arg| arg >= 2 && arg <= 1000}; @logBase = v; end
|
|
36
|
+
def logBase=(v) DataTypeValidator.validate "Scaling.logBase", [Integer], v, lambda { |arg| arg >= 2 && arg <= 1000 }; @logBase = v; end
|
|
39
37
|
# @see orientation
|
|
40
38
|
def orientation=(v) RestrictionValidator.validate "Scaling.orientation", [:minMax, :maxMin], v; @orientation = v; end
|
|
41
39
|
# @see max
|
|
@@ -55,6 +53,5 @@ module Axlsx
|
|
|
55
53
|
str << ('<c:max val="' << @max.to_s << '"/>') unless @max.nil?
|
|
56
54
|
str << '</c:scaling>'
|
|
57
55
|
end
|
|
58
|
-
|
|
59
56
|
end
|
|
60
57
|
end
|
|
@@ -1,12 +1,9 @@
|
|
|
1
|
-
# encoding: UTF-8
|
|
2
1
|
module Axlsx
|
|
3
|
-
|
|
4
2
|
# The ScatterChart allows you to insert a scatter chart into your worksheet
|
|
5
3
|
# @see Worksheet#add_chart
|
|
6
4
|
# @see Chart#add_series
|
|
7
5
|
# @see README for an example
|
|
8
6
|
class ScatterChart < Chart
|
|
9
|
-
|
|
10
7
|
include Axlsx::OptionsParser
|
|
11
8
|
|
|
12
9
|
# The Style for the scatter chart
|
|
@@ -30,11 +27,11 @@ module Axlsx
|
|
|
30
27
|
alias :yValAxis :y_val_axis
|
|
31
28
|
|
|
32
29
|
# Creates a new scatter chart
|
|
33
|
-
def initialize(frame, options={})
|
|
30
|
+
def initialize(frame, options = {})
|
|
34
31
|
@vary_colors = 0
|
|
35
32
|
@scatter_style = :lineMarker
|
|
36
33
|
|
|
37
|
-
|
|
34
|
+
super(frame, options)
|
|
38
35
|
@series_type = ScatterSeries
|
|
39
36
|
@d_lbls = nil
|
|
40
37
|
parse_options options
|
|
@@ -1,13 +1,10 @@
|
|
|
1
|
-
# encoding: UTF-8
|
|
2
1
|
module Axlsx
|
|
3
|
-
|
|
4
2
|
# A ScatterSeries defines the x and y position of data in the chart
|
|
5
3
|
# @note The recommended way to manage series is to use Chart#add_series
|
|
6
4
|
# @see Worksheet#add_chart
|
|
7
5
|
# @see Chart#add_series
|
|
8
6
|
# @see examples/example.rb
|
|
9
7
|
class ScatterSeries < Series
|
|
10
|
-
|
|
11
8
|
# The x data for this series.
|
|
12
9
|
# @return [NamedAxisData]
|
|
13
10
|
attr_reader :xData
|
|
@@ -37,7 +34,7 @@ module Axlsx
|
|
|
37
34
|
attr_reader :marker_symbol
|
|
38
35
|
|
|
39
36
|
# Creates a new ScatterSeries
|
|
40
|
-
def initialize(chart, options={})
|
|
37
|
+
def initialize(chart, options = {})
|
|
41
38
|
@xData, @yData = nil
|
|
42
39
|
if options[:smooth].nil?
|
|
43
40
|
# If caller hasn't specified smoothing or not, turn smoothing on or off based on scatter style
|
|
@@ -53,7 +50,7 @@ module Axlsx
|
|
|
53
50
|
|
|
54
51
|
super(chart, options)
|
|
55
52
|
@xData = AxDataSource.new(:tag_name => :xVal, :data => options[:xData]) unless options[:xData].nil?
|
|
56
|
-
@yData = NumDataSource.new({:tag_name => :yVal, :data => options[:yData]}) unless options[:yData].nil?
|
|
53
|
+
@yData = NumDataSource.new({ :tag_name => :yVal, :data => options[:yData] }) unless options[:yData].nil?
|
|
57
54
|
end
|
|
58
55
|
|
|
59
56
|
# @see color
|
|
@@ -1,8 +1,6 @@
|
|
|
1
|
-
# encoding: UTF-8
|
|
2
1
|
module Axlsx
|
|
3
|
-
#A SerAxis object defines a series axis
|
|
2
|
+
# A SerAxis object defines a series axis
|
|
4
3
|
class SerAxis < Axis
|
|
5
|
-
|
|
6
4
|
# The number of tick lables to skip between labels
|
|
7
5
|
# @return [Integer]
|
|
8
6
|
attr_reader :tick_lbl_skip
|
|
@@ -16,7 +14,7 @@ module Axlsx
|
|
|
16
14
|
# Creates a new SerAxis object
|
|
17
15
|
# @option options [Integer] tick_lbl_skip
|
|
18
16
|
# @option options [Integer] tick_mark_skip
|
|
19
|
-
def initialize(options={})
|
|
17
|
+
def initialize(options = {})
|
|
20
18
|
@tick_lbl_skip, @tick_mark_skip = 1, 1
|
|
21
19
|
super(options)
|
|
22
20
|
end
|
|
@@ -40,6 +38,4 @@ module Axlsx
|
|
|
40
38
|
str << '</c:serAx>'
|
|
41
39
|
end
|
|
42
40
|
end
|
|
43
|
-
|
|
44
|
-
|
|
45
41
|
end
|
data/lib/axlsx/drawing/series.rb
CHANGED
|
@@ -1,11 +1,9 @@
|
|
|
1
|
-
# encoding: UTF-8
|
|
2
1
|
module Axlsx
|
|
3
2
|
# A Series defines the common series attributes and is the super class for all concrete series types.
|
|
4
3
|
# @note The recommended way to manage series is to use Chart#add_series
|
|
5
4
|
# @see Worksheet#add_chart
|
|
6
5
|
# @see Chart#add_series
|
|
7
6
|
class Series
|
|
8
|
-
|
|
9
7
|
include Axlsx::OptionsParser
|
|
10
8
|
|
|
11
9
|
# The chart that owns this series
|
|
@@ -20,7 +18,7 @@ module Axlsx
|
|
|
20
18
|
# @param [Chart] chart
|
|
21
19
|
# @option options [Integer] order
|
|
22
20
|
# @option options [String] title
|
|
23
|
-
def initialize(chart, options={})
|
|
21
|
+
def initialize(chart, options = {})
|
|
24
22
|
@order = nil
|
|
25
23
|
self.chart = chart
|
|
26
24
|
@chart.series << self
|
|
@@ -40,7 +38,7 @@ module Axlsx
|
|
|
40
38
|
end
|
|
41
39
|
|
|
42
40
|
# @see order
|
|
43
|
-
def order=(v)
|
|
41
|
+
def order=(v) Axlsx::validate_unsigned_int(v); @order = v; end
|
|
44
42
|
|
|
45
43
|
# @see title
|
|
46
44
|
def title=(v)
|
|
@@ -52,7 +50,7 @@ module Axlsx
|
|
|
52
50
|
private
|
|
53
51
|
|
|
54
52
|
# assigns the chart for this series
|
|
55
|
-
def chart=(v)
|
|
53
|
+
def chart=(v) DataTypeValidator.validate "Series.chart", Chart, v; @chart = v; end
|
|
56
54
|
|
|
57
55
|
# Serializes the object
|
|
58
56
|
# @param [String] str
|
|
@@ -1,16 +1,13 @@
|
|
|
1
|
-
# -*- coding: utf-8 -*-
|
|
2
1
|
module Axlsx
|
|
3
|
-
|
|
4
|
-
#This specifies the last string data used for a chart. (e.g. strLit and strCache)
|
|
2
|
+
# This specifies the last string data used for a chart. (e.g. strLit and strCache)
|
|
5
3
|
# This class is extended for NumData to include the formatCode attribute required for numLit and numCache
|
|
6
4
|
class StrData
|
|
7
|
-
|
|
8
5
|
include Axlsx::OptionsParser
|
|
9
6
|
|
|
10
7
|
# creates a new StrVal object
|
|
11
8
|
# @option options [Array] :data
|
|
12
9
|
# @option options [String] :tag_name
|
|
13
|
-
def initialize(options={})
|
|
10
|
+
def initialize(options = {})
|
|
14
11
|
@tag_prefix = :str
|
|
15
12
|
@type = StrVal
|
|
16
13
|
@pt = SimpleTypedList.new(@type)
|
|
@@ -19,7 +16,7 @@ module Axlsx
|
|
|
19
16
|
|
|
20
17
|
# Creates the val objects for this data set. I am not overly confident this is going to play nicely with time and data types.
|
|
21
18
|
# @param [Array] values An array of cells or values.
|
|
22
|
-
def data=(values=[])
|
|
19
|
+
def data=(values = [])
|
|
23
20
|
@tag_name = values.first.is_a?(Cell) ? :strCache : :strLit
|
|
24
21
|
values.each do |value|
|
|
25
22
|
v = value.is_a?(Cell) ? value.value : value
|
|
@@ -36,7 +33,5 @@ module Axlsx
|
|
|
36
33
|
end
|
|
37
34
|
str << ('</c:' << @tag_name.to_s << '>')
|
|
38
35
|
end
|
|
39
|
-
|
|
40
36
|
end
|
|
41
|
-
|
|
42
37
|
end
|
|
@@ -1,14 +1,11 @@
|
|
|
1
|
-
# -*- coding: utf-8 -*-
|
|
2
1
|
module Axlsx
|
|
3
|
-
|
|
4
|
-
#This class specifies data for a particular data point.
|
|
2
|
+
# This class specifies data for a particular data point.
|
|
5
3
|
class StrVal
|
|
6
|
-
|
|
7
4
|
include Axlsx::OptionsParser
|
|
8
5
|
|
|
9
6
|
# creates a new StrVal object
|
|
10
7
|
# @option options [String] v
|
|
11
|
-
def initialize(options={})
|
|
8
|
+
def initialize(options = {})
|
|
12
9
|
@v = ""
|
|
13
10
|
@idx = 0
|
|
14
11
|
parse_options options
|
data/lib/axlsx/drawing/title.rb
CHANGED
|
@@ -1,8 +1,6 @@
|
|
|
1
|
-
# encoding: UTF-8
|
|
2
1
|
module Axlsx
|
|
3
2
|
# A Title stores information about the title of a chart
|
|
4
3
|
class Title
|
|
5
|
-
|
|
6
4
|
# The text to be shown. Setting this property directly with a string will remove the cell reference.
|
|
7
5
|
# @return [String]
|
|
8
6
|
attr_reader :text
|
|
@@ -17,7 +15,7 @@ module Axlsx
|
|
|
17
15
|
|
|
18
16
|
# Creates a new Title object
|
|
19
17
|
# @param [String, Cell] title The cell or string to be used for the chart's title
|
|
20
|
-
def initialize(title="", title_size="")
|
|
18
|
+
def initialize(title = "", title_size = "")
|
|
21
19
|
self.cell = title if title.is_a?(Cell)
|
|
22
20
|
self.text = title.to_s unless title.is_a?(Cell)
|
|
23
21
|
if title_size.to_s.empty?
|
|
@@ -62,9 +60,9 @@ module Axlsx
|
|
|
62
60
|
end
|
|
63
61
|
|
|
64
62
|
# Not implemented at this time.
|
|
65
|
-
#def layout=(v) DataTypeValidator.validate 'Title.layout', Layout, v; @layout = v; end
|
|
66
|
-
#def overlay=(v) Axlsx::validate_boolean v; @overlay=v; end
|
|
67
|
-
#def spPr=(v) DataTypeValidator.validate 'Title.spPr', SpPr, v; @spPr = v; end
|
|
63
|
+
# def layout=(v) DataTypeValidator.validate 'Title.layout', Layout, v; @layout = v; end
|
|
64
|
+
# def overlay=(v) Axlsx::validate_boolean v; @overlay=v; end
|
|
65
|
+
# def spPr=(v) DataTypeValidator.validate 'Title.spPr', SpPr, v; @spPr = v; end
|
|
68
66
|
|
|
69
67
|
# Serializes the object
|
|
70
68
|
# @param [String] str
|
|
@@ -86,14 +84,14 @@ module Axlsx
|
|
|
86
84
|
str << '</c:strRef>'
|
|
87
85
|
else
|
|
88
86
|
str << '<c:rich>'
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
87
|
+
str << '<a:bodyPr/>'
|
|
88
|
+
str << '<a:lstStyle/>'
|
|
89
|
+
str << '<a:p>'
|
|
90
|
+
str << '<a:r>'
|
|
91
|
+
str << ('<a:rPr sz="' << @text_size.to_s << '"/>')
|
|
92
|
+
str << ('<a:t>' << clean_value << '</a:t>')
|
|
93
|
+
str << '</a:r>'
|
|
94
|
+
str << '</a:p>'
|
|
97
95
|
str << '</c:rich>'
|
|
98
96
|
end
|
|
99
97
|
str << '</c:tx>'
|
|
@@ -102,6 +100,5 @@ module Axlsx
|
|
|
102
100
|
str << '<c:overlay val="0"/>'
|
|
103
101
|
str << '</c:title>'
|
|
104
102
|
end
|
|
105
|
-
|
|
106
103
|
end
|
|
107
104
|
end
|
|
@@ -1,10 +1,8 @@
|
|
|
1
|
-
# encoding: UTF-8
|
|
2
1
|
module Axlsx
|
|
3
2
|
# This class details the anchor points for drawings.
|
|
4
3
|
# @note The recommended way to manage drawings and charts is Worksheet#add_chart. Anchors are specified by the :start_at and :end_at options to that method.
|
|
5
4
|
# @see Worksheet#add_chart
|
|
6
5
|
class TwoCellAnchor
|
|
7
|
-
|
|
8
6
|
include Axlsx::OptionsParser
|
|
9
7
|
|
|
10
8
|
# A marker that defines the from cell anchor. The default from column and row are 0 and 0 respectively
|
|
@@ -32,10 +30,10 @@ module Axlsx
|
|
|
32
30
|
# @param [Drawing] drawing
|
|
33
31
|
# @option options [Array] :start_at the col, row to start at THIS IS DOCUMENTED BUT NOT IMPLEMENTED HERE!
|
|
34
32
|
# @option options [Array] :end_at the col, row to end at
|
|
35
|
-
def initialize(drawing, options={})
|
|
33
|
+
def initialize(drawing, options = {})
|
|
36
34
|
@drawing = drawing
|
|
37
35
|
drawing.anchors << self
|
|
38
|
-
@from, @to = Marker.new, Marker.new(:col => 5, :row=>10)
|
|
36
|
+
@from, @to = Marker.new, Marker.new(:col => 5, :row => 10)
|
|
39
37
|
parse_options options
|
|
40
38
|
|
|
41
39
|
# bit of a hack to work around the fact that the coords for start at and end at
|
|
@@ -48,7 +46,7 @@ module Axlsx
|
|
|
48
46
|
# @note The recommended way to set the start position for graphical
|
|
49
47
|
# objects is directly thru the object.
|
|
50
48
|
# @see Chart#start_at
|
|
51
|
-
def start_at(x, y=nil)
|
|
49
|
+
def start_at(x, y = nil)
|
|
52
50
|
from.coord x, y
|
|
53
51
|
end
|
|
54
52
|
|
|
@@ -56,7 +54,7 @@ module Axlsx
|
|
|
56
54
|
# @note the recommended way to set the to position for graphical
|
|
57
55
|
# objects is directly thru the object
|
|
58
56
|
# @see Char#end_at
|
|
59
|
-
def end_at(x, y=nil)
|
|
57
|
+
def end_at(x, y = nil)
|
|
60
58
|
to.coord x, y
|
|
61
59
|
end
|
|
62
60
|
|
|
@@ -68,7 +66,7 @@ module Axlsx
|
|
|
68
66
|
end
|
|
69
67
|
|
|
70
68
|
# Creates an image associated with this anchor.
|
|
71
|
-
def add_pic(options={})
|
|
69
|
+
def add_pic(options = {})
|
|
72
70
|
@object = Pic.new(self, options)
|
|
73
71
|
end
|
|
74
72
|
|
|
@@ -1,8 +1,6 @@
|
|
|
1
|
-
# encoding: UTF-8
|
|
2
1
|
module Axlsx
|
|
3
2
|
# the ValAxis class defines a chart value axis.
|
|
4
3
|
class ValAxis < Axis
|
|
5
|
-
|
|
6
4
|
# This element specifies how the value axis crosses the category axis.
|
|
7
5
|
# must be one of [:between, :midCat]
|
|
8
6
|
# @return [Symbol]
|
|
@@ -11,7 +9,7 @@ module Axlsx
|
|
|
11
9
|
|
|
12
10
|
# Creates a new ValAxis object
|
|
13
11
|
# @option options [Symbol] crosses_between
|
|
14
|
-
def initialize(options={})
|
|
12
|
+
def initialize(options = {})
|
|
15
13
|
self.cross_between = :between
|
|
16
14
|
super(options)
|
|
17
15
|
end
|
|
@@ -32,6 +30,5 @@ module Axlsx
|
|
|
32
30
|
str << ('<c:crossBetween val="' << @cross_between.to_s << '"/>')
|
|
33
31
|
str << '</c:valAx>'
|
|
34
32
|
end
|
|
35
|
-
|
|
36
33
|
end
|
|
37
34
|
end
|