caxlsx 3.3.0 → 3.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (148) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +9 -0
  3. data/README.md +24 -5
  4. data/Rakefile +0 -1
  5. data/lib/axlsx/content_type/abstract_content_type.rb +2 -5
  6. data/lib/axlsx/content_type/content_type.rb +0 -4
  7. data/lib/axlsx/content_type/default.rb +1 -5
  8. data/lib/axlsx/content_type/override.rb +0 -4
  9. data/lib/axlsx/doc_props/app.rb +1 -6
  10. data/lib/axlsx/doc_props/core.rb +1 -6
  11. data/lib/axlsx/drawing/area_chart.rb +3 -6
  12. data/lib/axlsx/drawing/area_series.rb +1 -4
  13. data/lib/axlsx/drawing/ax_data_source.rb +1 -6
  14. data/lib/axlsx/drawing/axes.rb +5 -6
  15. data/lib/axlsx/drawing/axis.rb +7 -12
  16. data/lib/axlsx/drawing/bar_3D_chart.rb +7 -10
  17. data/lib/axlsx/drawing/bar_chart.rb +6 -9
  18. data/lib/axlsx/drawing/bar_series.rb +2 -8
  19. data/lib/axlsx/drawing/bubble_chart.rb +2 -5
  20. data/lib/axlsx/drawing/bubble_series.rb +3 -6
  21. data/lib/axlsx/drawing/cat_axis.rb +2 -7
  22. data/lib/axlsx/drawing/chart.rb +7 -12
  23. data/lib/axlsx/drawing/d_lbls.rb +23 -22
  24. data/lib/axlsx/drawing/drawing.rb +4 -8
  25. data/lib/axlsx/drawing/graphic_frame.rb +0 -3
  26. data/lib/axlsx/drawing/hyperlink.rb +4 -7
  27. data/lib/axlsx/drawing/line_3D_chart.rb +10 -14
  28. data/lib/axlsx/drawing/line_chart.rb +3 -6
  29. data/lib/axlsx/drawing/line_series.rb +1 -4
  30. data/lib/axlsx/drawing/marker.rb +5 -9
  31. data/lib/axlsx/drawing/num_data.rb +4 -9
  32. data/lib/axlsx/drawing/num_data_source.rb +3 -7
  33. data/lib/axlsx/drawing/num_val.rb +2 -5
  34. data/lib/axlsx/drawing/one_cell_anchor.rb +4 -6
  35. data/lib/axlsx/drawing/pic.rb +46 -13
  36. data/lib/axlsx/drawing/picture_locking.rb +3 -6
  37. data/lib/axlsx/drawing/pie_3D_chart.rb +2 -7
  38. data/lib/axlsx/drawing/pie_series.rb +1 -6
  39. data/lib/axlsx/drawing/scaling.rb +2 -5
  40. data/lib/axlsx/drawing/scatter_chart.rb +2 -5
  41. data/lib/axlsx/drawing/scatter_series.rb +2 -5
  42. data/lib/axlsx/drawing/ser_axis.rb +2 -6
  43. data/lib/axlsx/drawing/series.rb +3 -5
  44. data/lib/axlsx/drawing/series_title.rb +0 -2
  45. data/lib/axlsx/drawing/str_data.rb +3 -8
  46. data/lib/axlsx/drawing/str_val.rb +2 -5
  47. data/lib/axlsx/drawing/title.rb +12 -15
  48. data/lib/axlsx/drawing/two_cell_anchor.rb +5 -7
  49. data/lib/axlsx/drawing/val_axis.rb +1 -4
  50. data/lib/axlsx/drawing/view_3D.rb +24 -24
  51. data/lib/axlsx/drawing/vml_drawing.rb +2 -5
  52. data/lib/axlsx/drawing/vml_shape.rb +4 -7
  53. data/lib/axlsx/package.rb +35 -36
  54. data/lib/axlsx/rels/relationship.rb +21 -24
  55. data/lib/axlsx/rels/relationships.rb +3 -6
  56. data/lib/axlsx/stylesheet/border.rb +1 -4
  57. data/lib/axlsx/stylesheet/border_pr.rb +3 -5
  58. data/lib/axlsx/stylesheet/cell_alignment.rb +2 -10
  59. data/lib/axlsx/stylesheet/cell_protection.rb +1 -4
  60. data/lib/axlsx/stylesheet/cell_style.rb +3 -7
  61. data/lib/axlsx/stylesheet/color.rb +6 -5
  62. data/lib/axlsx/stylesheet/dxf.rb +2 -6
  63. data/lib/axlsx/stylesheet/fill.rb +0 -4
  64. data/lib/axlsx/stylesheet/font.rb +7 -6
  65. data/lib/axlsx/stylesheet/gradient_fill.rb +4 -6
  66. data/lib/axlsx/stylesheet/gradient_stop.rb +2 -3
  67. data/lib/axlsx/stylesheet/num_fmt.rb +1 -4
  68. data/lib/axlsx/stylesheet/pattern_fill.rb +3 -5
  69. data/lib/axlsx/stylesheet/styles.rb +53 -45
  70. data/lib/axlsx/stylesheet/table_style.rb +5 -8
  71. data/lib/axlsx/stylesheet/table_style_element.rb +1 -4
  72. data/lib/axlsx/stylesheet/table_styles.rb +3 -7
  73. data/lib/axlsx/stylesheet/xf.rb +3 -6
  74. data/lib/axlsx/util/accessors.rb +2 -4
  75. data/lib/axlsx/util/constants.rb +3 -5
  76. data/lib/axlsx/util/mime_type_utils.rb +13 -0
  77. data/lib/axlsx/util/options_parser.rb +1 -2
  78. data/lib/axlsx/util/serialized_attributes.rb +4 -5
  79. data/lib/axlsx/util/simple_typed_list.rb +18 -17
  80. data/lib/axlsx/util/storage.rb +32 -36
  81. data/lib/axlsx/util/validators.rb +7 -4
  82. data/lib/axlsx/util/zip_command.rb +0 -2
  83. data/lib/axlsx/version.rb +1 -2
  84. data/lib/axlsx/workbook/defined_name.rb +6 -5
  85. data/lib/axlsx/workbook/defined_names.rb +1 -2
  86. data/lib/axlsx/workbook/shared_strings_table.rb +3 -6
  87. data/lib/axlsx/workbook/workbook.rb +96 -91
  88. data/lib/axlsx/workbook/workbook_view.rb +5 -10
  89. data/lib/axlsx/workbook/workbook_views.rb +1 -3
  90. data/lib/axlsx/workbook/worksheet/auto_filter/auto_filter.rb +9 -8
  91. data/lib/axlsx/workbook/worksheet/auto_filter/filter_column.rb +6 -6
  92. data/lib/axlsx/workbook/worksheet/auto_filter/filters.rb +13 -14
  93. data/lib/axlsx/workbook/worksheet/border_creator.rb +29 -26
  94. data/lib/axlsx/workbook/worksheet/break.rb +2 -5
  95. data/lib/axlsx/workbook/worksheet/cell.rb +46 -26
  96. data/lib/axlsx/workbook/worksheet/cell_serializer.rb +11 -11
  97. data/lib/axlsx/workbook/worksheet/cfvo.rb +2 -2
  98. data/lib/axlsx/workbook/worksheet/cfvos.rb +3 -5
  99. data/lib/axlsx/workbook/worksheet/col.rb +4 -7
  100. data/lib/axlsx/workbook/worksheet/col_breaks.rb +4 -5
  101. data/lib/axlsx/workbook/worksheet/color_scale.rb +10 -12
  102. data/lib/axlsx/workbook/worksheet/cols.rb +6 -6
  103. data/lib/axlsx/workbook/worksheet/comment.rb +4 -5
  104. data/lib/axlsx/workbook/worksheet/comments.rb +6 -10
  105. data/lib/axlsx/workbook/worksheet/conditional_formatting.rb +4 -5
  106. data/lib/axlsx/workbook/worksheet/conditional_formatting_rule.rb +2 -6
  107. data/lib/axlsx/workbook/worksheet/conditional_formattings.rb +2 -4
  108. data/lib/axlsx/workbook/worksheet/data_bar.rb +20 -22
  109. data/lib/axlsx/workbook/worksheet/data_validation.rb +4 -5
  110. data/lib/axlsx/workbook/worksheet/data_validations.rb +2 -5
  111. data/lib/axlsx/workbook/worksheet/date_time_converter.rb +1 -3
  112. data/lib/axlsx/workbook/worksheet/dimension.rb +5 -4
  113. data/lib/axlsx/workbook/worksheet/header_footer.rb +0 -1
  114. data/lib/axlsx/workbook/worksheet/icon_set.rb +2 -3
  115. data/lib/axlsx/workbook/worksheet/merged_cells.rb +8 -8
  116. data/lib/axlsx/workbook/worksheet/outline_pr.rb +0 -1
  117. data/lib/axlsx/workbook/worksheet/page_margins.rb +2 -2
  118. data/lib/axlsx/workbook/worksheet/page_set_up_pr.rb +1 -3
  119. data/lib/axlsx/workbook/worksheet/page_setup.rb +117 -120
  120. data/lib/axlsx/workbook/worksheet/pane.rb +16 -17
  121. data/lib/axlsx/workbook/worksheet/pivot_table.rb +8 -11
  122. data/lib/axlsx/workbook/worksheet/pivot_table_cache_definition.rb +8 -11
  123. data/lib/axlsx/workbook/worksheet/pivot_tables.rb +3 -4
  124. data/lib/axlsx/workbook/worksheet/print_options.rb +0 -1
  125. data/lib/axlsx/workbook/worksheet/protected_range.rb +4 -5
  126. data/lib/axlsx/workbook/worksheet/protected_ranges.rb +9 -9
  127. data/lib/axlsx/workbook/worksheet/rich_text.rb +4 -6
  128. data/lib/axlsx/workbook/worksheet/rich_text_run.rb +21 -5
  129. data/lib/axlsx/workbook/worksheet/row.rb +24 -15
  130. data/lib/axlsx/workbook/worksheet/row_breaks.rb +3 -4
  131. data/lib/axlsx/workbook/worksheet/selection.rb +7 -9
  132. data/lib/axlsx/workbook/worksheet/sheet_calc_pr.rb +5 -6
  133. data/lib/axlsx/workbook/worksheet/sheet_data.rb +4 -6
  134. data/lib/axlsx/workbook/worksheet/sheet_format_pr.rb +18 -18
  135. data/lib/axlsx/workbook/worksheet/sheet_pr.rb +4 -4
  136. data/lib/axlsx/workbook/worksheet/sheet_protection.rb +12 -13
  137. data/lib/axlsx/workbook/worksheet/sheet_view.rb +35 -42
  138. data/lib/axlsx/workbook/worksheet/table.rb +7 -9
  139. data/lib/axlsx/workbook/worksheet/table_style_info.rb +2 -3
  140. data/lib/axlsx/workbook/worksheet/tables.rb +4 -4
  141. data/lib/axlsx/workbook/worksheet/worksheet.rb +63 -35
  142. data/lib/axlsx/workbook/worksheet/worksheet_comments.rb +6 -6
  143. data/lib/axlsx/workbook/worksheet/worksheet_drawing.rb +3 -2
  144. data/lib/axlsx/workbook/worksheet/worksheet_hyperlink.rb +5 -6
  145. data/lib/axlsx/workbook/worksheet/worksheet_hyperlinks.rb +4 -4
  146. data/lib/axlsx.rb +23 -9
  147. data/lib/caxlsx.rb +0 -1
  148. metadata +3 -3
@@ -6,14 +6,12 @@ module Axlsx
6
6
  # @see Worksheet#add_conditional_formatting
7
7
  # @see ConditionalFormattingRule#initialize
8
8
  class ColorScale
9
-
10
9
  class << self
11
-
12
10
  # These are the default conditional formatting value objects
13
11
  # that define a two tone color gradient.
14
12
  def default_cfvos
15
- [{:type => :min, :val => 0, :color => 'FFFF7128'},
16
- {:type => :max, :val => 0, :color => 'FFFFEF9C'}]
13
+ [{ :type => :min, :val => 0, :color => 'FFFF7128' },
14
+ { :type => :max, :val => 0, :color => 'FFFFEF9C' }]
17
15
  end
18
16
 
19
17
  # A builder for two tone color gradient
@@ -28,12 +26,12 @@ module Axlsx
28
26
  # A builder for three tone color gradient
29
27
  # @example
30
28
  # #this creates a three tone color scale
31
- # color_scale = Axlsx::ColorScale.three_tone
29
+ # color_scale = Axlsx::ColorScale.three_tone
32
30
  # @see examples/example.rb conditional formatting examples.
33
31
  def three_tone
34
- self.new({:type => :min, :val => 0, :color => 'FFF8696B'},
35
- {:type => :percent, :val => '50', :color => 'FFFFEB84'},
36
- {:type => :max, :val => 0, :color => 'FF63BE7B'})
32
+ self.new({ :type => :min, :val => 0, :color => 'FFF8696B' },
33
+ { :type => :percent, :val => '50', :color => 'FFFFEB84' },
34
+ { :type => :max, :val => 0, :color => 'FF63BE7B' })
37
35
  end
38
36
  end
39
37
  # A simple typed list of cfvos
@@ -67,17 +65,16 @@ module Axlsx
67
65
  # @option [Symbol] type The type of cfvo you to add
68
66
  # @option [Any] val The value of the cfvo to add
69
67
  # @option [String] The rgb color for the cfvo
70
- def add(options={})
68
+ def add(options = {})
71
69
  value_objects << Cfvo.new(:type => options[:type] || :min, :val => options[:val] || 0)
72
70
  colors << Color.new(:rgb => options[:color] || "FF000000")
73
- {:cfvo => value_objects.last, :color => colors.last}
71
+ { :cfvo => value_objects.last, :color => colors.last }
74
72
  end
75
73
 
76
-
77
74
  # removes the cfvo and color pair at the index specified.
78
75
  # @param [Integer] index The index of the cfvo and color object to delete
79
76
  # @note you cannot remove the first two cfvo and color pairs
80
- def delete_at(index=2)
77
+ def delete_at(index = 2)
81
78
  value_objects.delete_at index
82
79
  colors.delete_at index
83
80
  end
@@ -93,6 +90,7 @@ module Axlsx
93
90
  end
94
91
 
95
92
  private
93
+
96
94
  # There has got to be cleaner way of merging these arrays.
97
95
  def initialize_default_cfvos(user_cfvos)
98
96
  defaults = self.class.default_cfvos
@@ -1,11 +1,10 @@
1
1
  module Axlsx
2
-
3
2
  # The cols class manages the col object used to manage column widths.
4
3
  # This is where the magic happens with autowidth
5
4
  class Cols < SimpleTypedList
6
-
7
5
  def initialize(worksheet)
8
6
  raise ArgumentError, "you must provide a worksheet" unless worksheet.is_a?(Worksheet)
7
+
9
8
  super Col
10
9
  @worksheet = worksheet
11
10
  end
@@ -14,10 +13,11 @@ module Axlsx
14
13
  # @param [String] str
15
14
  # @return [String]
16
15
  def to_xml_string(str = '')
17
- return if empty?
18
- str << '<cols>'
19
- each { |item| item.to_xml_string(str) }
20
- str << '</cols>'
16
+ return if empty?
17
+
18
+ str << '<cols>'
19
+ each { |item| item.to_xml_string(str) }
20
+ str << '</cols>'
21
21
  end
22
22
  end
23
23
  end
@@ -1,8 +1,6 @@
1
1
  module Axlsx
2
-
3
2
  # A comment is the text data for a comment
4
3
  class Comment
5
-
6
4
  include Axlsx::OptionsParser
7
5
  include Axlsx::Accessors
8
6
 
@@ -13,8 +11,9 @@ module Axlsx
13
11
  # @option [String] text The text for the comment
14
12
  # @option [String] ref The refence (e.g. 'A3' where this comment will be anchored.
15
13
  # @option [Boolean] visible This controls the visiblity of the associated vml_shape.
16
- def initialize(comments, options={})
14
+ def initialize(comments, options = {})
17
15
  raise ArgumentError, "A comment needs a parent comments object" unless comments.is_a?(Comments)
16
+
18
17
  @visible = true
19
18
  @comments = comments
20
19
  parse_options options
@@ -82,9 +81,9 @@ module Axlsx
82
81
  pos = Axlsx::name_to_indices(ref)
83
82
  @vml_shape = VmlShape.new(:row => pos[1], :column => pos[0], :visible => @visible) do |vml|
84
83
  vml.left_column = vml.column
85
- vml.right_column = vml.column + 2
84
+ vml.right_column = vml.column + 2
86
85
  vml.top_row = vml.row
87
- vml.bottom_row = vml.row + 4
86
+ vml.bottom_row = vml.row + 4
88
87
  end
89
88
  end
90
89
  end
@@ -1,9 +1,6 @@
1
- # -*- coding: utf-8 -*-
2
1
  module Axlsx
3
-
4
2
  # Comments is a collection of Comment objects for a worksheet
5
3
  class Comments < SimpleTypedList
6
-
7
4
  # the vml_drawing that holds the shapes for comments
8
5
  # @return [VmlDrawing]
9
6
  attr_reader :vml_drawing
@@ -21,13 +18,14 @@ module Axlsx
21
18
  # The part name for this object
22
19
  # @return [String]
23
20
  def pn
24
- "#{COMMENT_PN % (index+1)}"
21
+ "#{COMMENT_PN % (index + 1)}"
25
22
  end
26
23
 
27
24
  # Creates a new Comments object
28
25
  # @param [Worksheet] worksheet The sheet that these comments belong to.
29
26
  def initialize(worksheet)
30
27
  raise ArgumentError, "you must provide a worksheet" unless worksheet.is_a?(Worksheet)
28
+
31
29
  super(Comment)
32
30
  @worksheet = worksheet
33
31
  @vml_drawing = VmlDrawing.new(self)
@@ -38,10 +36,11 @@ module Axlsx
38
36
  # @option options [String] author The name of the author for this comment
39
37
  # @option options [String] text The text for this comment
40
38
  # @option options [Stirng|Cell] ref The cell that this comment is attached to.
41
- def add_comment(options={})
39
+ def add_comment(options = {})
42
40
  raise ArgumentError, "Comment require an author" unless options[:author]
43
41
  raise ArgumentError, "Comment requires text" unless options[:text]
44
42
  raise ArgumentError, "Comment requires ref" unless options[:ref]
43
+
45
44
  self << Comment.new(self, options)
46
45
  yield last if block_given?
47
46
  last
@@ -63,10 +62,10 @@ module Axlsx
63
62
  # serialize the object
64
63
  # @param [String] str
65
64
  # @return [String]
66
- def to_xml_string(str="")
65
+ def to_xml_string(str = "")
67
66
  str << '<?xml version="1.0" encoding="UTF-8"?>'
68
67
  str << ('<comments xmlns="' << XML_NS << '"><authors>')
69
- authors.each do |author|
68
+ authors.each do |author|
70
69
  str << ('<author>' << author.to_s << '</author>')
71
70
  end
72
71
  str << '</authors><commentList>'
@@ -74,9 +73,6 @@ module Axlsx
74
73
  comment.to_xml_string str
75
74
  end
76
75
  str << '</commentList></comments>'
77
-
78
76
  end
79
-
80
77
  end
81
-
82
78
  end
@@ -5,13 +5,12 @@ module Axlsx
5
5
  # @see Worksheet#add_conditional_formatting
6
6
  # @see ConditionalFormattingRule
7
7
  class ConditionalFormatting
8
+ include Axlsx::OptionsParser
8
9
 
9
- include Axlsx::OptionsParser
10
-
11
10
  # Creates a new {ConditionalFormatting} object
12
11
  # @option options [Array] rules The rules to apply
13
12
  # @option options [String] sqref The range to apply the rules to
14
- def initialize(options={})
13
+ def initialize(options = {})
15
14
  @rules = []
16
15
  parse_options options
17
16
  end
@@ -28,7 +27,7 @@ module Axlsx
28
27
  # @return [Array]
29
28
  attr_reader :rules
30
29
 
31
- # Add Conditional Formatting Rules to this object. Rules can either
30
+ # Add Conditional Formatting Rules to this object. Rules can either
32
31
  # be already created {ConditionalFormattingRule} elements or
33
32
  # hashes of options for automatic creation. If rules is a hash
34
33
  # instead of an array, assume only one rule being added.
@@ -75,7 +74,7 @@ module Axlsx
75
74
  # @return [String]
76
75
  def to_xml_string(str = '')
77
76
  str << ('<conditionalFormatting sqref="' << sqref << '">')
78
- str << rules.collect{ |rule| rule.to_xml_string }.join(' ')
77
+ str << rules.collect { |rule| rule.to_xml_string }.join(' ')
79
78
  str << '</conditionalFormatting>'
80
79
  end
81
80
  end
@@ -1,4 +1,3 @@
1
- # -*- coding: utf-8 -*-
2
1
  module Axlsx
3
2
  # Conditional formatting rules specify formulas whose evaluations
4
3
  # format cells
@@ -7,7 +6,6 @@ module Axlsx
7
6
  # @see Worksheet#add_conditional_formatting
8
7
  # @see ConditionalFormattingRule#initialize
9
8
  class ConditionalFormattingRule
10
-
11
9
  include Axlsx::OptionsParser
12
10
  include Axlsx::SerializedAttributes
13
11
 
@@ -26,7 +24,7 @@ module Axlsx
26
24
  # @option options [Boolean] stopIfTrue Stop evaluating rules after this rule matches
27
25
  # @option options [Symbol] timePeriod The time period in a date occuring... rule
28
26
  # @option options [String] formula The formula to match against in i.e. an equal rule. Use a [minimum, maximum] array for cellIs between/notBetween conditionals.
29
- def initialize(options={})
27
+ def initialize(options = {})
30
28
  @color_scale = @data_bar = @icon_set = @formula = nil
31
29
  parse_options options
32
30
  end
@@ -133,7 +131,6 @@ module Axlsx
133
131
  # thisMonth, lastMonth, nextMonth, thisWeek, lastWeek, nextWeek
134
132
  attr_reader :timePeriod
135
133
 
136
-
137
134
  # colorScale (Color Scale)
138
135
  # The color scale to apply to this conditional formatting
139
136
  # @return [ColorScale]
@@ -182,7 +179,7 @@ module Axlsx
182
179
  # @see timePeriod
183
180
  def timePeriod=(v); Axlsx::validate_time_period_type(v); @timePeriod = v end
184
181
  # @see formula
185
- def formula=(v); [*v].each {|x| Axlsx::validate_string(x) }; @formula = [*v].map { |form| ::CGI.escapeHTML(form) } end
182
+ def formula=(v); [*v].each { |x| Axlsx::validate_string(x) }; @formula = [*v].map { |form| ::CGI.escapeHTML(form) } end
186
183
 
187
184
  # @see color_scale
188
185
  def color_scale=(v)
@@ -202,7 +199,6 @@ module Axlsx
202
199
  @icon_set = v
203
200
  end
204
201
 
205
-
206
202
  # Serializes the conditional formatting rule
207
203
  # @param [String] str
208
204
  # @return [String]
@@ -1,11 +1,10 @@
1
1
  module Axlsx
2
-
3
2
  # A simple, self serializing class for storing conditional formattings
4
3
  class ConditionalFormattings < SimpleTypedList
5
-
6
4
  # creates a new Tables object
7
5
  def initialize(worksheet)
8
6
  raise ArgumentError, "you must provide a worksheet" unless worksheet.is_a?(Worksheet)
7
+
9
8
  super ConditionalFormatting
10
9
  @worksheet = worksheet
11
10
  end
@@ -17,9 +16,8 @@ module Axlsx
17
16
  # serialize the conditional formattings
18
17
  def to_xml_string(str = "")
19
18
  return if empty?
19
+
20
20
  each { |item| item.to_xml_string(str) }
21
21
  end
22
22
  end
23
-
24
23
  end
25
-
@@ -6,15 +6,14 @@ module Axlsx
6
6
  # @see Worksheet#add_conditional_formatting
7
7
  # @see ConditionalFormattingRule#initialize
8
8
  class DataBar
9
-
10
9
  include Axlsx::OptionsParser
11
10
  include Axlsx::SerializedAttributes
12
11
 
13
12
  class << self
14
13
  # This differs from ColorScale. There must be exactly two cfvos one color
15
14
  def default_cfvos
16
- [{:type => :min, :val => "0"},
17
- {:type => :max, :val => "0"}]
15
+ [{ :type => :min, :val => "0" },
16
+ { :type => :max, :val => "0" }]
18
17
  end
19
18
  end
20
19
 
@@ -81,32 +80,32 @@ module Axlsx
81
80
  end
82
81
  alias :minLength= :min_length=
83
82
 
84
- # @see maxLength
85
- def max_length=(v)
86
- Axlsx.validate_unsigned_int(v)
87
- @max_length = v
88
- end
83
+ # @see maxLength
84
+ def max_length=(v)
85
+ Axlsx.validate_unsigned_int(v)
86
+ @max_length = v
87
+ end
89
88
  alias :maxLength= :max_length=
90
89
 
91
- # @see showValue
92
- def show_value=(v)
93
- Axlsx.validate_boolean(v)
94
- @show_value = v
95
- end
90
+ # @see showValue
91
+ def show_value=(v)
92
+ Axlsx.validate_boolean(v)
93
+ @show_value = v
94
+ end
96
95
  alias :showValue= :show_value=
97
96
 
98
- # Sets the color for the data bars.
99
- # @param [Color|String] v The color object, or rgb string value to apply
100
- def color=(v)
101
- @color = v if v.is_a? Color
102
- self.color.rgb = v if v.is_a? String
103
- @color
104
- end
97
+ # Sets the color for the data bars.
98
+ # @param [Color|String] v The color object, or rgb string value to apply
99
+ def color=(v)
100
+ @color = v if v.is_a? Color
101
+ self.color.rgb = v if v.is_a? String
102
+ @color
103
+ end
105
104
 
106
105
  # Serialize this object to an xml string
107
106
  # @param [String] str
108
107
  # @return [String]
109
- def to_xml_string(str="")
108
+ def to_xml_string(str = "")
110
109
  serialized_tag('dataBar', str) do
111
110
  value_objects.to_xml_string(str)
112
111
  self.color.to_xml_string(str)
@@ -124,6 +123,5 @@ module Axlsx
124
123
  end
125
124
  end
126
125
  end
127
-
128
126
  end
129
127
  end
@@ -1,4 +1,3 @@
1
- # encoding: UTF-8
2
1
  module Axlsx
3
2
  # Data validation allows the validation of cell data
4
3
  #
@@ -23,7 +22,7 @@ module Axlsx
23
22
  # @option options [Boolean] showInputMessage - A boolean value indicating whether to display the input prompt message.
24
23
  # @option options [String] sqref - Range over which data validation is applied, in "A1:B2" format.
25
24
  # @option options [Symbol] type - The type of data validation.
26
- def initialize(options={})
25
+ def initialize(options = {})
27
26
  # defaults
28
27
  @formula1 = @formula2 = @error = @errorTitle = @operator = @prompt = @promptTitle = @sqref = nil
29
28
  @allowBlank = @showErrorMessage = true
@@ -176,7 +175,6 @@ module Axlsx
176
175
  # default none
177
176
  attr_reader :type
178
177
 
179
-
180
178
  # @see formula1
181
179
  def formula1=(v); Axlsx::validate_string(v); @formula1 = v end
182
180
 
@@ -246,9 +244,10 @@ module Axlsx
246
244
  str << '</dataValidation>'
247
245
  end
248
246
 
249
- private
247
+ private
248
+
250
249
  def get_valid_attributes
251
- attributes = [:allowBlank, :error, :errorStyle, :errorTitle, :prompt, :promptTitle, :showErrorMessage, :showInputMessage, :sqref, :type ]
250
+ attributes = [:allowBlank, :error, :errorStyle, :errorTitle, :prompt, :promptTitle, :showErrorMessage, :showInputMessage, :sqref, :type]
252
251
 
253
252
  if [:whole, :decimal, :data, :time, :date, :textLength].include?(@type)
254
253
  attributes << [:operator, :formula1]
@@ -1,11 +1,10 @@
1
1
  module Axlsx
2
-
3
2
  # A simple, self serializing class for storing conditional formattings
4
3
  class DataValidations < SimpleTypedList
5
-
6
4
  # creates a new Tables object
7
5
  def initialize(worksheet)
8
6
  raise ArgumentError, "you must provide a worksheet" unless worksheet.is_a?(Worksheet)
7
+
9
8
  super DataValidation
10
9
  @worksheet = worksheet
11
10
  end
@@ -17,12 +16,10 @@ module Axlsx
17
16
  # serialize the conditional formattings
18
17
  def to_xml_string(str = "")
19
18
  return if empty?
19
+
20
20
  str << "<dataValidations count='#{size}'>"
21
21
  each { |item| item.to_xml_string(str) }
22
22
  str << '</dataValidations>'
23
23
  end
24
24
  end
25
-
26
25
  end
27
-
28
-
@@ -1,10 +1,8 @@
1
- # encoding: UTF-8
2
1
  require "date"
3
2
 
4
3
  module Axlsx
5
4
  # The DateTimeConverter class converts both data and time types to their apprpriate excel serializations
6
5
  class DateTimeConverter
7
-
8
6
  # The date_to_serial method converts Date objects to the equivelant excel serialized forms
9
7
  # @param [Date] date the date to be serialized
10
8
  # @return [Numeric]
@@ -24,7 +22,7 @@ module Axlsx
24
22
  epoch1904 = -2082844800.0 # Time.utc(1904, 1, 1).to_i
25
23
  seconds_per_day = 86400.0 # 60*60*24
26
24
  epoch = Axlsx::Workbook::date1904 ? epoch1904 : epoch1900
27
- (time.utc_offset + time.to_f - epoch)/seconds_per_day
25
+ (time.utc_offset + time.to_f - epoch) / seconds_per_day
28
26
  end
29
27
  end
30
28
  end
@@ -1,10 +1,8 @@
1
1
  module Axlsx
2
-
3
2
  # This class manages the dimensions for a worksheet.
4
- # While this node is optional in the specification some readers like
3
+ # While this node is optional in the specification some readers like
5
4
  # LibraOffice require this node to render the sheet
6
5
  class Dimension
7
-
8
6
  # the default value for the first cell in the dimension
9
7
  # @return [String]
10
8
  def self.default_first
@@ -22,6 +20,7 @@ module Axlsx
22
20
  # to.
23
21
  def initialize(worksheet)
24
22
  raise ArgumentError, "you must provide a worksheet" unless worksheet.is_a?(Worksheet)
23
+
25
24
  @worksheet = worksheet
26
25
  end
27
26
 
@@ -31,12 +30,13 @@ module Axlsx
31
30
  # @return [String]
32
31
  def sqref
33
32
  "#{first_cell_reference}:#{last_cell_reference}"
34
- end
33
+ end
35
34
 
36
35
  # serialize the object
37
36
  # @return [String]
38
37
  def to_xml_string(str = '')
39
38
  return if worksheet.rows.empty?
39
+
40
40
  str << "<dimension ref=\"%s\"></dimension>" % sqref
41
41
  end
42
42
 
@@ -58,6 +58,7 @@ module Axlsx
58
58
  # @return [String]
59
59
  def dimension_reference(cell, default)
60
60
  return default unless cell.respond_to?(:r)
61
+
61
62
  cell.r
62
63
  end
63
64
  end
@@ -9,7 +9,6 @@ module Axlsx
9
9
  # @note The recommended way of managing header/footers is via Worksheet#header_footer
10
10
  # @see Worksheet#initialize
11
11
  class HeaderFooter
12
-
13
12
  include Axlsx::OptionsParser
14
13
  include Axlsx::SerializedAttributes
15
14
  include Axlsx::Accessors
@@ -6,7 +6,6 @@ module Axlsx
6
6
  # @see Worksheet#add_conditional_formatting
7
7
  # @see ConditionalFormattingRule#initialize
8
8
  class IconSet
9
-
10
9
  include Axlsx::OptionsParser
11
10
  include Axlsx::SerializedAttributes
12
11
 
@@ -47,7 +46,7 @@ module Axlsx
47
46
  # @return [Boolean]
48
47
  attr_reader :showValue
49
48
 
50
- # @see iconSet
49
+ # @see iconSet
51
50
  def iconSet=(v); Axlsx::validate_icon_set(v); @iconSet = v end
52
51
 
53
52
  # @see showValue
@@ -62,7 +61,7 @@ module Axlsx
62
61
  # Serialize this object to an xml string
63
62
  # @param [String] str
64
63
  # @return [String]
65
- def to_xml_string(str="")
64
+ def to_xml_string(str = "")
66
65
  serialized_tag('iconSet', str) do
67
66
  @value_objects.each { |cfvo| cfvo.to_xml_string(str) }
68
67
  end
@@ -1,12 +1,11 @@
1
1
  module Axlsx
2
-
3
2
  # A simple list of merged cells
4
3
  class MergedCells < SimpleTypedList
5
-
6
4
  # creates a new MergedCells object
7
5
  # @param [Worksheet] worksheet
8
6
  def initialize(worksheet)
9
7
  raise ArgumentError, 'you must provide a worksheet' unless worksheet.is_a?(Worksheet)
8
+
10
9
  super String
11
10
  end
12
11
 
@@ -16,12 +15,12 @@ module Axlsx
16
15
  # range like 'A1:C1'
17
16
  def add(cells)
18
17
  self << if cells.is_a?(String)
19
- cells
20
- elsif cells.is_a?(Array)
21
- Axlsx::cell_range(cells, false)
22
- elsif cells.is_a?(Row)
23
- Axlsx::cell_range(cells, false)
24
- end
18
+ cells
19
+ elsif cells.is_a?(Array)
20
+ Axlsx::cell_range(cells, false)
21
+ elsif cells.is_a?(Row)
22
+ Axlsx::cell_range(cells, false)
23
+ end
25
24
  end
26
25
 
27
26
  # serialize the object
@@ -29,6 +28,7 @@ module Axlsx
29
28
  # @return [String]
30
29
  def to_xml_string(str = '')
31
30
  return if empty?
31
+
32
32
  str << "<mergeCells count='#{size}'>"
33
33
  each { |merged_cell| str << "<mergeCell ref='#{merged_cell}'></mergeCell>" }
34
34
  str << '</mergeCells>'
@@ -1,5 +1,4 @@
1
1
  module Axlsx
2
-
3
2
  # The OutlinePr class manages serialization of a worksheet's outlinePr element, which provides various
4
3
  # options to control outlining.
5
4
  class OutlinePr
@@ -9,7 +9,6 @@ module Axlsx
9
9
  # @see Worksheet#page_margins
10
10
  # @see Worksheet#initialize
11
11
  class PageMargins
12
-
13
12
  include Axlsx::OptionsParser
14
13
  include Axlsx::SerializedAttributes
15
14
 
@@ -20,7 +19,7 @@ module Axlsx
20
19
  # @option options [Numeric] top The top margin in inches
21
20
  # @option options [Numeric] header The header margin in inches
22
21
  # @option options [Numeric] footer The footer margin in inches
23
- def initialize(options={})
22
+ def initialize(options = {})
24
23
  # Default values taken from MS Excel for Mac 2011
25
24
  @left = @right = DEFAULT_LEFT_RIGHT
26
25
  @top = @bottom = DEFAULT_TOP_BOTTOM
@@ -68,6 +67,7 @@ module Axlsx
68
67
  def set(margins)
69
68
  margins.select do |k, v|
70
69
  next unless [:left, :right, :top, :bottom, :header, :footer].include? k
70
+
71
71
  send("#{k}=", v)
72
72
  end
73
73
  end
@@ -1,9 +1,7 @@
1
1
  module Axlsx
2
-
3
2
  # Page setup properties of the worksheet
4
3
  # This class name is not a typo, its spec.
5
4
  class PageSetUpPr
6
-
7
5
  include Axlsx::OptionsParser
8
6
  include Axlsx::SerializedAttributes
9
7
 
@@ -37,7 +35,7 @@ module Axlsx
37
35
  end
38
36
 
39
37
  # serialize to xml
40
- def to_xml_string(str='')
38
+ def to_xml_string(str = '')
41
39
  str << ('<pageSetUpPr ' << serialized_attributes << '/>')
42
40
  end
43
41
  end