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.
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
@@ -1,8 +1,6 @@
1
1
  module Axlsx
2
-
3
2
  # The RichTextRun class creates and self serializing text run.
4
3
  class RichTextRun
5
-
6
4
  include Axlsx::OptionsParser
7
5
 
8
6
  attr_reader :value
@@ -13,7 +11,7 @@ module Axlsx
13
11
  :shadow, :condense, :extend, :u,
14
12
  :vertAlign, :sz, :color, :scheme].freeze
15
13
 
16
- def initialize(value, options={})
14
+ def initialize(value, options = {})
17
15
  self.value = value
18
16
  parse_options(options)
19
17
  end
@@ -27,6 +25,7 @@ module Axlsx
27
25
  # The inline font_name property for the cell
28
26
  # @return [String]
29
27
  attr_reader :font_name
28
+
30
29
  # @see font_name
31
30
  def font_name=(v) set_run_style :validate_string, :font_name, v; end
32
31
 
@@ -53,6 +52,7 @@ module Axlsx
53
52
  # 255  OEM_CHARSET
54
53
  # @return [String]
55
54
  attr_reader :charset
55
+
56
56
  # @see charset
57
57
  def charset=(v) set_run_style :validate_unsigned_int, :charset, v; end
58
58
 
@@ -64,6 +64,7 @@ module Axlsx
64
64
  # 4 Script
65
65
  # 5 Decorative
66
66
  attr_reader :family
67
+
67
68
  # @see family
68
69
  def family=(v)
69
70
  set_run_style :validate_family, :family, v.to_i
@@ -72,42 +73,49 @@ module Axlsx
72
73
  # The inline bold property for the cell
73
74
  # @return [Boolean]
74
75
  attr_reader :b
76
+
75
77
  # @see b
76
78
  def b=(v) set_run_style :validate_boolean, :b, v; end
77
79
 
78
80
  # The inline italic property for the cell
79
81
  # @return [Boolean]
80
82
  attr_reader :i
83
+
81
84
  # @see i
82
85
  def i=(v) set_run_style :validate_boolean, :i, v; end
83
86
 
84
87
  # The inline strike property for the cell
85
88
  # @return [Boolean]
86
89
  attr_reader :strike
90
+
87
91
  # @see strike
88
92
  def strike=(v) set_run_style :validate_boolean, :strike, v; end
89
93
 
90
94
  # The inline outline property for the cell
91
95
  # @return [Boolean]
92
96
  attr_reader :outline
97
+
93
98
  # @see outline
94
99
  def outline=(v) set_run_style :validate_boolean, :outline, v; end
95
100
 
96
101
  # The inline shadow property for the cell
97
102
  # @return [Boolean]
98
103
  attr_reader :shadow
104
+
99
105
  # @see shadow
100
106
  def shadow=(v) set_run_style :validate_boolean, :shadow, v; end
101
107
 
102
108
  # The inline condense property for the cell
103
109
  # @return [Boolean]
104
110
  attr_reader :condense
111
+
105
112
  # @see condense
106
113
  def condense=(v) set_run_style :validate_boolean, :condense, v; end
107
114
 
108
115
  # The inline extend property for the cell
109
116
  # @return [Boolean]
110
117
  attr_reader :extend
118
+
111
119
  # @see extend
112
120
  def extend=(v) set_run_style :validate_boolean, :extend, v; end
113
121
 
@@ -117,6 +125,7 @@ module Axlsx
117
125
  # @return [String]
118
126
  # @note true is for backwards compatability and is reassigned to :single
119
127
  attr_reader :u
128
+
120
129
  # @see u
121
130
  def u=(v)
122
131
  v = :single if (v == true || v == 1 || v == :true || v == 'true')
@@ -126,14 +135,16 @@ module Axlsx
126
135
  # The inline color property for the cell
127
136
  # @return [Color]
128
137
  attr_reader :color
138
+
129
139
  # @param [String] v The 8 character representation for an rgb color #FFFFFFFF"
130
140
  def color=(v)
131
- @color = v.is_a?(Color) ? v : Color.new(:rgb=>v)
141
+ @color = v.is_a?(Color) ? v : Color.new(:rgb => v)
132
142
  end
133
143
 
134
144
  # The inline sz property for the cell
135
145
  # @return [Inteter]
136
146
  attr_reader :sz
147
+
137
148
  # @see sz
138
149
  def sz=(v) set_run_style :validate_unsigned_int, :sz, v; end
139
150
 
@@ -141,6 +152,7 @@ module Axlsx
141
152
  # this must be one of [:baseline, :subscript, :superscript]
142
153
  # @return [Symbol]
143
154
  attr_reader :vertAlign
155
+
144
156
  # @see vertAlign
145
157
  def vertAlign=(v)
146
158
  RestrictionValidator.validate :cell_vertAlign, [:baseline, :subscript, :superscript], v
@@ -151,6 +163,7 @@ module Axlsx
151
163
  # this must be one of [:none, major, minor]
152
164
  # @return [Symbol]
153
165
  attr_reader :scheme
166
+
154
167
  # @see scheme
155
168
  def scheme=(v)
156
169
  RestrictionValidator.validate :cell_scheme, [:none, :major, :minor], v
@@ -162,6 +175,7 @@ module Axlsx
162
175
  # @return [Array]
163
176
  def autowidth(widtharray)
164
177
  return if value.nil?
178
+
165
179
  if styles.cellXfs[style].alignment && styles.cellXfs[style].alignment.wrap_text
166
180
  first = true
167
181
  value.to_s.split(/\r?\n/, -1).each do |line|
@@ -181,6 +195,7 @@ module Axlsx
181
195
  # Utility method for setting inline style attributes
182
196
  def set_run_style(validator, attr, value)
183
197
  return unless INLINE_STYLES.include?(attr.to_sym)
198
+
184
199
  Axlsx.send(validator, value) unless validator.nil?
185
200
  self.instance_variable_set :"@#{attr.to_s}", value
186
201
  end
@@ -190,7 +205,7 @@ module Axlsx
190
205
  # @return [String]
191
206
  def to_xml_string(str = '')
192
207
  valid = RichTextRun::INLINE_STYLES
193
- data = Hash[Axlsx.instance_values_for(self).map{ |k, v| [k.to_sym, v] }]
208
+ data = Hash[Axlsx.instance_values_for(self).map { |k, v| [k.to_sym, v] }]
194
209
  data = data.select { |key, value| valid.include?(key) && !value.nil? }
195
210
 
196
211
  str << '<r><rPr>'
@@ -223,6 +238,7 @@ module Axlsx
223
238
  # imagemagick and loading metrics for every character.
224
239
  def font_size
225
240
  return sz if sz
241
+
226
242
  font = styles.fonts[styles.cellXfs[style].fontId] || styles.fonts[0]
227
243
  (font.b || (defined?(@b) && @b)) ? (font.sz * 1.5) : font.sz
228
244
  end
@@ -1,4 +1,3 @@
1
- # encoding: UTF-8
2
1
  module Axlsx
3
2
  # A Row is a single row in a worksheet.
4
3
  # @note The recommended way to manage rows and cells is to use Worksheet#add_row
@@ -6,13 +5,13 @@ module Axlsx
6
5
  class Row < SimpleTypedList
7
6
  include SerializedAttributes
8
7
  include Accessors
9
-
8
+
10
9
  # No support is provided for the following attributes
11
10
  # spans
12
11
  # thickTop
13
12
  # thickBottom
14
13
 
15
- # Creates a new row. New Cell objects are created based on the values, types and style options.
14
+ # Creates a new row. New Cell objects are created based on the values, types and style options.
16
15
  # A new cell is created for each item in the values array. style and types options are applied as follows:
17
16
  # If the types option is defined and is a symbol it is applied to all the cells created.
18
17
  # If the types option is an array, cell types are applied by index for each cell
@@ -24,11 +23,12 @@ module Axlsx
24
23
  # @option options [Array] values
25
24
  # @option options [Array, Symbol] types
26
25
  # @option options [Array, Integer] style
26
+ # @option options [Array, Boolean] escape_formulas
27
27
  # @option options [Float] height the row's height (in points)
28
28
  # @option options [Integer] offset - add empty columns before values
29
29
  # @see Row#array_to_cells
30
30
  # @see Cell
31
- def initialize(worksheet, values=[], options={})
31
+ def initialize(worksheet, values = [], options = {})
32
32
  self.worksheet = worksheet
33
33
  super(Cell, nil, values.size + options[:offset].to_i)
34
34
  self.height = options.delete(:height)
@@ -64,7 +64,7 @@ module Axlsx
64
64
  # @see Row#s
65
65
  def s=(v)
66
66
  Axlsx.validate_unsigned_numeric(v)
67
- @custom_format = true
67
+ @custom_format = true
68
68
  @s = v
69
69
  end
70
70
 
@@ -73,7 +73,7 @@ module Axlsx
73
73
  Axlsx.validate_unsigned_numeric(v)
74
74
  @outline_level = v
75
75
  end
76
-
76
+
77
77
  alias :outlineLevel= :outline_level=
78
78
 
79
79
  # The index of this row in the worksheet
@@ -104,20 +104,29 @@ module Axlsx
104
104
  c
105
105
  end
106
106
 
107
- # sets the color for every cell in this row
107
+ # Sets the color for every cell in this row.
108
108
  def color=(color)
109
- each_with_index do | cell, index |
109
+ each_with_index do |cell, index|
110
110
  cell.color = color.is_a?(Array) ? color[index] : color
111
111
  end
112
112
  end
113
113
 
114
- # sets the style for every cell in this row
114
+ # Sets the style for every cell in this row.
115
115
  def style=(style)
116
- each_with_index do | cell, index |
116
+ each_with_index do |cell, index|
117
117
  cell.style = style.is_a?(Array) ? style[index] : style
118
118
  end
119
119
  end
120
120
 
121
+ # Sets escape_formulas for every cell in this row. This determines whether to treat
122
+ # values starting with an equals sign as formulas or as literal strings.
123
+ # @param [Array, Boolean] value The value to set.
124
+ def escape_formulas=(value)
125
+ each_with_index do |cell, index|
126
+ cell.escape_formulas = value.is_a?(Array) ? value[index] : value
127
+ end
128
+ end
129
+
121
130
  # @see height
122
131
  def height=(v)
123
132
  unless v.nil?
@@ -126,7 +135,7 @@ module Axlsx
126
135
  @ht = v
127
136
  end
128
137
  end
129
-
138
+
130
139
  # return cells
131
140
  def cells
132
141
  self
@@ -135,7 +144,7 @@ module Axlsx
135
144
  private
136
145
 
137
146
  # assigns the owning worksheet for this row
138
- def worksheet=(v) DataTypeValidator.validate :row_worksheet, Worksheet, v; @worksheet=v; end
147
+ def worksheet=(v) DataTypeValidator.validate :row_worksheet, Worksheet, v; @worksheet = v; end
139
148
 
140
149
  # Converts values, types, and style options into cells and associates them with this row.
141
150
  # A new cell is created for each item in the values array.
@@ -146,19 +155,19 @@ module Axlsx
146
155
  # @option options [Array] values
147
156
  # @option options [Array, Symbol] types
148
157
  # @option options [Array, Integer] style
149
- def array_to_cells(values, options={})
158
+ # @option options [Array, Boolean] escape_formulas
159
+ def array_to_cells(values, options = {})
150
160
  DataTypeValidator.validate :array_to_cells, Array, values
151
161
  types, style, formula_values, escape_formulas, offset = options.delete(:types), options.delete(:style), options.delete(:formula_values), options.delete(:escape_formulas), options.delete(:offset)
152
162
  offset.to_i.times { |index| self[index] = Cell.new(self) } if offset
153
163
  values.each_with_index do |value, index|
154
164
  options[:style] = style.is_a?(Array) ? style[index] : style if style
155
165
  options[:type] = types.is_a?(Array) ? types[index] : types if types
156
- options[:escape_formulas] = escape_formulas.is_a?(Array) ? escape_formulas[index] : escape_formulas if escape_formulas
166
+ options[:escape_formulas] = escape_formulas.is_a?(Array) ? escape_formulas[index] : escape_formulas unless escape_formulas.nil?
157
167
  options[:formula_value] = formula_values[index] if formula_values.is_a?(Array)
158
168
 
159
169
  self[index + offset.to_i] = Cell.new(self, value, options)
160
170
  end
161
171
  end
162
172
  end
163
-
164
173
  end
@@ -1,9 +1,7 @@
1
1
  module Axlsx
2
-
3
2
  # A collection of break objects that define row breaks (page breaks) for printing and preview
4
3
 
5
4
  class RowBreaks < SimpleTypedList
6
-
7
5
  def initialize
8
6
  super Break
9
7
  end
@@ -17,14 +15,15 @@ module Axlsx
17
15
  self << Break.new(options.merge(:max => 16383, :man => true))
18
16
  last
19
17
  end
20
-
18
+
21
19
  # <rowBreaks count="3" manualBreakCount="3">
22
20
  # <brk id="1" max="16383" man="1"/>
23
21
  # <brk id="7" max="16383" man="1"/>
24
22
  # <brk id="13" max="16383" man="1"/>
25
23
  # </rowBreaks>
26
- def to_xml_string(str='')
24
+ def to_xml_string(str = '')
27
25
  return if empty?
26
+
28
27
  str << ('<rowBreaks count="' << self.size.to_s << '" manualBreakCount="' << self.size.to_s << '">')
29
28
  each { |brk| brk.to_xml_string(str) }
30
29
  str << '</rowBreaks>'
@@ -1,11 +1,9 @@
1
- # encoding: UTF-8
2
1
  module Axlsx
3
2
  # Selection options for worksheet panes.
4
3
  #
5
4
  # @note The recommended way to manage the selection pane options is via SheetView#add_selection
6
5
  # @see SheetView#add_selection
7
6
  class Selection
8
-
9
7
  include Axlsx::OptionsParser
10
8
  include Axlsx::SerializedAttributes
11
9
 
@@ -14,7 +12,7 @@ module Axlsx
14
12
  # @option options [Integer] active_cell_id Active Cell Index
15
13
  # @option options [Symbol] pane Pane
16
14
  # @option options [String] sqref Sequence of References
17
- def initialize(options={})
15
+ def initialize(options = {})
18
16
  @active_cell = @active_cell_id = @pane = @sqref = nil
19
17
  parse_options options
20
18
  end
@@ -40,16 +38,16 @@ module Axlsx
40
38
 
41
39
  # Pane
42
40
  # The pane to which this selection belongs.
43
- # Options are
41
+ # Options are
44
42
  # * bottom_left: Bottom left pane, when both vertical and horizontal
45
43
  # splits are applied. This value is also used when only
46
- # a horizontal split has been applied, dividing the pane
47
- # into upper and lower regions. In that case, this value
44
+ # a horizontal split has been applied, dividing the pane
45
+ # into upper and lower regions. In that case, this value
48
46
  # specifies the bottom pane.
49
47
  # * bottom_right: Bottom right pane, when both vertical and horizontal
50
48
  # splits are applied.
51
49
  # * top_left: Top left pane, when both vertical and horizontal splits
52
- # are applied. This value is also used when only a horizontal
50
+ # are applied. This value is also used when only a horizontal
53
51
  # split has been applied, dividing the pane into upper and lower
54
52
  # regions. In that case, this value specifies the top pane.
55
53
  # This value is also used when only a vertical split has
@@ -57,8 +55,8 @@ module Axlsx
57
55
  # regions. In that case, this value specifies the left pane
58
56
  # * top_right: Top right pane, when both vertical and horizontal
59
57
  # splits are applied. This value is also used when only
60
- # a vertical split has been applied, dividing the pane
61
- # into right and left regions. In that case, this value
58
+ # a vertical split has been applied, dividing the pane
59
+ # into right and left regions. In that case, this value
62
60
  # specifies the right pane.
63
61
  # @see type
64
62
  # @return [Symbol]
@@ -1,15 +1,14 @@
1
1
  module Axlsx
2
-
3
2
  # the SheetCalcPr object for the worksheet
4
3
  # This object contains calculation properties for the worksheet.
5
4
  class SheetCalcPr
6
- include Axlsx::OptionsParser
7
- include Axlsx::SerializedAttributes
8
- include Axlsx::Accessors
5
+ include Axlsx::OptionsParser
6
+ include Axlsx::SerializedAttributes
7
+ include Axlsx::Accessors
9
8
  # creates a new SheetCalcPr
10
9
  # @param [Hash] options Options for this object
11
10
  # @option [Boolean] full_calc_on_load @see full_calc_on_load
12
- def initialize(options={})
11
+ def initialize(options = {})
13
12
  @full_calc_on_load = true
14
13
  parse_options options
15
14
  end
@@ -22,7 +21,7 @@ module Axlsx
22
21
  # @param [String] str the string to append this objects serialized
23
22
  # content to.
24
23
  # @return [String]
25
- def to_xml_string(str='')
24
+ def to_xml_string(str = '')
26
25
  str << "<sheetCalcPr #{serialized_attributes}/>"
27
26
  end
28
27
  end
@@ -1,15 +1,14 @@
1
1
  module Axlsx
2
-
3
2
  # This class manages the serialization of rows for worksheets
4
3
  class SheetData
5
-
6
4
  # Creates a new SheetData object
7
5
  # @param [Worksheet] worksheet The worksheet that owns this sheet data.
8
6
  def initialize(worksheet)
9
7
  raise ArgumentError, "you must provide a worksheet" unless worksheet.is_a?(Worksheet)
8
+
10
9
  @worksheet = worksheet
11
10
  end
12
-
11
+
13
12
  attr_reader :worksheet
14
13
 
15
14
  # Serialize the sheet data
@@ -17,11 +16,10 @@ module Axlsx
17
16
  # @return [String]
18
17
  def to_xml_string(str = '')
19
18
  str << '<sheetData>'
20
- worksheet.rows.each_with_index do |row, index|
21
- row.to_xml_string(index, str)
19
+ worksheet.rows.each_with_index do |row, index|
20
+ row.to_xml_string(index, str)
22
21
  end
23
22
  str << '</sheetData>'
24
23
  end
25
-
26
24
  end
27
25
  end
@@ -1,17 +1,16 @@
1
1
  module Axlsx
2
-
3
- #Sheet formatting properties
4
- # <xsd:complexType name="CT_SheetFormatPr">
5
- # <xsd:attribute name="baseColWidth" type="xsd:unsignedInt" use="optional" default="8"/>
6
- # <xsd:attribute name="defaultColWidth" type="xsd:double" use="optional"/>
7
- # <xsd:attribute name="defaultRowHeight" type="xsd:double" use="required"/>
8
- # <xsd:attribute name="customHeight" type="xsd:boolean" use="optional" default="false"/>
9
- # <xsd:attribute name="zeroHeight" type="xsd:boolean" use="optional" default="false"/>
10
- # <xsd:attribute name="thickTop" type="xsd:boolean" use="optional" default="false"/>
11
- # <xsd:attribute name="thickBottom" type="xsd:boolean" use="optional" default="false"/>
12
- # <xsd:attribute name="outlineLevelRow" type="xsd:unsignedByte" use="optional" default="0"/>
13
- # <xsd:attribute name="outlineLevelCol" type="xsd:unsignedByte" use="optional" default="0"/>
14
- #</xsd:complexType>
2
+ # Sheet formatting properties
3
+ # <xsd:complexType name="CT_SheetFormatPr">
4
+ # <xsd:attribute name="baseColWidth" type="xsd:unsignedInt" use="optional" default="8"/>
5
+ # <xsd:attribute name="defaultColWidth" type="xsd:double" use="optional"/>
6
+ # <xsd:attribute name="defaultRowHeight" type="xsd:double" use="required"/>
7
+ # <xsd:attribute name="customHeight" type="xsd:boolean" use="optional" default="false"/>
8
+ # <xsd:attribute name="zeroHeight" type="xsd:boolean" use="optional" default="false"/>
9
+ # <xsd:attribute name="thickTop" type="xsd:boolean" use="optional" default="false"/>
10
+ # <xsd:attribute name="thickBottom" type="xsd:boolean" use="optional" default="false"/>
11
+ # <xsd:attribute name="outlineLevelRow" type="xsd:unsignedByte" use="optional" default="0"/>
12
+ # <xsd:attribute name="outlineLevelCol" type="xsd:unsignedByte" use="optional" default="0"/>
13
+ # </xsd:complexType>
15
14
 
16
15
  class SheetFormatPr
17
16
  include Axlsx::SerializedAttributes
@@ -29,29 +28,30 @@ module Axlsx
29
28
  # @option [Boolean] thick_bottom 'True' if rows have a thick bottom border by default.
30
29
  # @option [Integer] outline_level_row Highest number of outline level for rows in this sheet. These values shall be in synch with the actual sheet outline levels.
31
30
  # @option [Integer] outline_level_col Highest number of outline levels for columns in this sheet. These values shall be in synch with the actual sheet outline levels.
32
- def initialize(options={})
31
+ def initialize(options = {})
33
32
  set_defaults
34
33
  parse_options options
35
34
  end
36
35
 
37
36
  serializable_attributes :base_col_width, :default_col_width, :default_row_height,
38
- :custom_height, :zero_height, :thick_top, :thick_bottom,
39
- :outline_level_row, :outline_level_col
37
+ :custom_height, :zero_height, :thick_top, :thick_bottom,
38
+ :outline_level_row, :outline_level_col
40
39
 
41
40
  float_attr_accessor :default_col_width, :default_row_height
42
41
 
43
42
  boolean_attr_accessor :custom_height, :zero_height, :thick_top, :thick_bottom
44
43
 
45
- unsigned_int_attr_accessor :base_col_width, :outline_level_row, :outline_level_col
44
+ unsigned_int_attr_accessor :base_col_width, :outline_level_row, :outline_level_col
46
45
 
47
46
  # serializes this object to an xml string
48
47
  # @param [String] str The string this objects serialization will be appended to
49
48
  # @return [String]
50
- def to_xml_string(str='')
49
+ def to_xml_string(str = '')
51
50
  str << "<sheetFormatPr #{serialized_attributes}/>"
52
51
  end
53
52
 
54
53
  private
54
+
55
55
  def set_defaults
56
56
  @base_col_width = 8
57
57
  @default_row_height = 18
@@ -1,5 +1,4 @@
1
1
  module Axlsx
2
-
3
2
  # The SheetPr class manages serialization of a worksheet's sheetPr element.
4
3
  class SheetPr
5
4
  include Axlsx::OptionsParser
@@ -30,8 +29,9 @@ module Axlsx
30
29
 
31
30
  # Creates a new SheetPr object
32
31
  # @param [Worksheet] worksheet The worksheet that owns this SheetPr object
33
- def initialize(worksheet, options={})
32
+ def initialize(worksheet, options = {})
34
33
  raise ArgumentError, "you must provide a worksheet" unless worksheet.is_a?(Worksheet)
34
+
35
35
  @worksheet = worksheet
36
36
  @outline_pr = nil
37
37
  parse_options options
@@ -62,7 +62,7 @@ module Axlsx
62
62
  def page_setup_pr
63
63
  @page_setup_pr ||= PageSetUpPr.new
64
64
  end
65
-
65
+
66
66
  # The OutlinePr for this sheet pr object
67
67
  # @return [OutlinePr]
68
68
  def outline_pr
@@ -71,7 +71,7 @@ module Axlsx
71
71
 
72
72
  # @see tab_color
73
73
  def tab_color=(v)
74
- @tab_color ||= Color.new(:rgb => v)
74
+ @tab_color = Color.new(:rgb => v)
75
75
  end
76
76
 
77
77
  private
@@ -1,9 +1,6 @@
1
- # encoding: UTF-8
2
1
  module Axlsx
3
-
4
2
  # The SheetProtection object manages worksheet protection options per sheet.
5
3
  class SheetProtection
6
-
7
4
  include Axlsx::OptionsParser
8
5
  include Axlsx::SerializedAttributes
9
6
  include Axlsx::Accessors
@@ -26,7 +23,7 @@ module Axlsx
26
23
  # @option options [Boolean] pivot_tables @see SheetProtection#pivot_tables
27
24
  # @option options [Boolean] select_unlocked_cells @see SheetProtection#select_unlocked_cells
28
25
  # @option options [String] password. The password required for unlocking. @see SheetProtection#password=
29
- def initialize(options={})
26
+ def initialize(options = {})
30
27
  @objects = @scenarios = @select_locked_cells = @select_unlocked_cells = false
31
28
  @sheet = @format_cells = @format_rows = @format_columns = @insert_columns = @insert_rows = @insert_hyperlinks = @delete_columns = @delete_rows = @sort = @auto_filter = @pivot_tables = true
32
29
  @password = nil
@@ -34,12 +31,12 @@ module Axlsx
34
31
  end
35
32
 
36
33
  boolean_attr_accessor :sheet, :objects, :scenarios, :format_cells, :format_columns, :format_rows,
37
- :insert_columns, :insert_rows, :insert_hyperlinks, :delete_columns, :delete_rows,
38
- :select_locked_cells, :sort, :auto_filter, :pivot_tables, :select_unlocked_cells
34
+ :insert_columns, :insert_rows, :insert_hyperlinks, :delete_columns, :delete_rows,
35
+ :select_locked_cells, :sort, :auto_filter, :pivot_tables, :select_unlocked_cells
39
36
 
40
37
  serializable_attributes :sheet, :objects, :scenarios, :format_cells, :format_columns, :format_rows,
41
- :insert_columns, :insert_rows, :insert_hyperlinks, :delete_columns, :delete_rows,
42
- :select_locked_cells, :sort, :auto_filter, :pivot_tables, :select_unlocked_cells, :salt, :password
38
+ :insert_columns, :insert_rows, :insert_hyperlinks, :delete_columns, :delete_rows,
39
+ :select_locked_cells, :sort, :auto_filter, :pivot_tables, :select_unlocked_cells, :salt, :password
43
40
 
44
41
  # Specifies the salt which was prepended to the user-supplied password before it was hashed using the hashing algorithm
45
42
  # @return [String]
@@ -50,9 +47,9 @@ module Axlsx
50
47
  # default nil
51
48
  attr_reader :password
52
49
 
53
- # This block is intended to implement the salt_value, hash_value and spin count as per the ECMA-376 standard.
54
- # However, it does not seem to actually work in EXCEL - instead they are using their old retro algorithm shown below
55
- # defined in the transitional portion of the speck. I am leaving this code in in the hope that someday Ill be able to
50
+ # This block is intended to implement the salt_value, hash_value and spin count as per the ECMA-376 standard.
51
+ # However, it does not seem to actually work in EXCEL - instead they are using their old retro algorithm shown below
52
+ # defined in the transitional portion of the speck. I am leaving this code in in the hope that someday Ill be able to
56
53
  # figure out why it does not work, and if Excel even supports it.
57
54
  # def propper_password=(v)
58
55
  # @algorithm_name = v == nil ? nil : 'SHA-1'
@@ -69,6 +66,7 @@ module Axlsx
69
66
  # encodes password for protection locking
70
67
  def password=(v)
71
68
  return if v == nil
69
+
72
70
  @password = create_password_hash(v)
73
71
  end
74
72
 
@@ -80,6 +78,7 @@ module Axlsx
80
78
  end
81
79
 
82
80
  private
81
+
83
82
  # Creates a password hash for a given password
84
83
  # @return [String]
85
84
  def create_password_hash(password)
@@ -102,14 +101,14 @@ module Axlsx
102
101
 
103
102
  chars.collect! do |char|
104
103
  i += 1
105
- char = char.unpack('c')[0] << i #ord << i
104
+ char = char.unpack('c')[0] << i # ord << i
106
105
  low_15 = char & 0x7fff
107
106
  high_15 = char & 0x7fff << 15
108
107
  high_15 = high_15 >> 15
109
108
  char = low_15 | high_15
110
109
  end
111
110
 
112
- encoded_password = 0x0000
111
+ encoded_password = 0x0000
113
112
  chars.each { |c| encoded_password ^= c }
114
113
  encoded_password ^= count
115
114
  encoded_password ^= 0xCE4B