axlsx 1.3.1 → 1.3.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (99) hide show
  1. data/README.md +13 -5
  2. data/examples/colored_links.rb +59 -0
  3. data/examples/example.rb +421 -266
  4. data/examples/example.xlsx +0 -0
  5. data/examples/example_streamed.xlsx +0 -0
  6. data/examples/finance.rb +82 -0
  7. data/examples/finance.xlsx +0 -0
  8. data/examples/financial.xlsx +0 -0
  9. data/examples/no-use_autowidth.xlsx +0 -0
  10. data/examples/shared_strings_example.xlsx +0 -0
  11. data/examples/where_is_my_color.xlsx +0 -0
  12. data/lib/axlsx.rb +11 -4
  13. data/lib/axlsx/content_type/abstract_content_type.rb +32 -0
  14. data/lib/axlsx/content_type/content_type.rb +1 -1
  15. data/lib/axlsx/content_type/default.rb +6 -37
  16. data/lib/axlsx/content_type/override.rb +6 -38
  17. data/lib/axlsx/doc_props/app.rb +7 -4
  18. data/lib/axlsx/drawing/axis.rb +3 -3
  19. data/lib/axlsx/drawing/chart.rb +2 -3
  20. data/lib/axlsx/drawing/d_lbls.rb +21 -31
  21. data/lib/axlsx/drawing/drawing.rb +6 -0
  22. data/lib/axlsx/drawing/hyperlink.rb +40 -32
  23. data/lib/axlsx/drawing/marker.rb +13 -13
  24. data/lib/axlsx/drawing/num_data.rb +6 -6
  25. data/lib/axlsx/drawing/num_data_source.rb +17 -16
  26. data/lib/axlsx/drawing/one_cell_anchor.rb +20 -22
  27. data/lib/axlsx/drawing/pic.rb +25 -27
  28. data/lib/axlsx/drawing/picture_locking.rb +12 -44
  29. data/lib/axlsx/drawing/scaling.rb +13 -13
  30. data/lib/axlsx/drawing/scatter_chart.rb +3 -3
  31. data/lib/axlsx/drawing/series.rb +3 -6
  32. data/lib/axlsx/drawing/str_data.rb +3 -3
  33. data/lib/axlsx/drawing/str_val.rb +7 -8
  34. data/lib/axlsx/drawing/view_3D.rb +51 -37
  35. data/lib/axlsx/drawing/vml_shape.rb +23 -23
  36. data/lib/axlsx/package.rb +14 -16
  37. data/lib/axlsx/stylesheet/border.rb +29 -20
  38. data/lib/axlsx/stylesheet/border_pr.rb +5 -4
  39. data/lib/axlsx/stylesheet/cell_alignment.rb +55 -29
  40. data/lib/axlsx/stylesheet/cell_protection.rb +7 -4
  41. data/lib/axlsx/stylesheet/cell_style.rb +19 -14
  42. data/lib/axlsx/stylesheet/color.rb +19 -16
  43. data/lib/axlsx/stylesheet/dxf.rb +4 -4
  44. data/lib/axlsx/stylesheet/font.rb +22 -22
  45. data/lib/axlsx/stylesheet/gradient_fill.rb +45 -21
  46. data/lib/axlsx/stylesheet/num_fmt.rb +22 -13
  47. data/lib/axlsx/stylesheet/pattern_fill.rb +12 -21
  48. data/lib/axlsx/stylesheet/styles.rb +1 -1
  49. data/lib/axlsx/stylesheet/table_style.rb +17 -16
  50. data/lib/axlsx/stylesheet/table_style_element.rb +15 -11
  51. data/lib/axlsx/stylesheet/table_styles.rb +14 -11
  52. data/lib/axlsx/stylesheet/xf.rb +28 -26
  53. data/lib/axlsx/util/accessors.rb +49 -0
  54. data/lib/axlsx/util/options_parser.rb +15 -0
  55. data/lib/axlsx/util/serialized_attributes.rb +46 -0
  56. data/lib/axlsx/util/simple_typed_list.rb +16 -4
  57. data/lib/axlsx/version.rb +1 -1
  58. data/lib/axlsx/workbook/defined_name.rb +13 -58
  59. data/lib/axlsx/workbook/workbook.rb +27 -1
  60. data/lib/axlsx/workbook/worksheet/auto_filter/filter_column.rb +11 -19
  61. data/lib/axlsx/workbook/worksheet/auto_filter/filters.rb +20 -27
  62. data/lib/axlsx/workbook/worksheet/cell.rb +38 -39
  63. data/lib/axlsx/workbook/worksheet/cfvo.rb +15 -15
  64. data/lib/axlsx/workbook/worksheet/cfvos.rb +18 -0
  65. data/lib/axlsx/workbook/worksheet/col.rb +34 -27
  66. data/lib/axlsx/workbook/worksheet/color_scale.rb +7 -13
  67. data/lib/axlsx/workbook/worksheet/comment.rb +14 -11
  68. data/lib/axlsx/workbook/worksheet/conditional_formatting.rb +11 -11
  69. data/lib/axlsx/workbook/worksheet/conditional_formatting_rule.rb +27 -25
  70. data/lib/axlsx/workbook/worksheet/data_bar.rb +44 -34
  71. data/lib/axlsx/workbook/worksheet/data_validation.rb +61 -62
  72. data/lib/axlsx/workbook/worksheet/dimension.rb +0 -1
  73. data/lib/axlsx/workbook/worksheet/icon_set.rb +20 -20
  74. data/lib/axlsx/workbook/worksheet/page_margins.rb +21 -19
  75. data/lib/axlsx/workbook/worksheet/page_set_up_pr.rb +6 -9
  76. data/lib/axlsx/workbook/worksheet/page_setup.rb +20 -19
  77. data/lib/axlsx/workbook/worksheet/pane.rb +48 -51
  78. data/lib/axlsx/workbook/worksheet/print_options.rb +8 -30
  79. data/lib/axlsx/workbook/worksheet/protected_range.rb +16 -13
  80. data/lib/axlsx/workbook/worksheet/selection.rb +30 -38
  81. data/lib/axlsx/workbook/worksheet/sheet_calc_pr.rb +6 -26
  82. data/lib/axlsx/workbook/worksheet/sheet_pr.rb +19 -57
  83. data/lib/axlsx/workbook/worksheet/sheet_protection.rb +51 -155
  84. data/lib/axlsx/workbook/worksheet/sheet_view.rb +68 -234
  85. data/lib/axlsx/workbook/worksheet/table.rb +16 -18
  86. data/lib/axlsx/workbook/worksheet/table_style_info.rb +10 -27
  87. data/lib/axlsx/workbook/worksheet/worksheet.rb +6 -7
  88. data/lib/axlsx/workbook/worksheet/worksheet_drawing.rb +1 -1
  89. data/lib/axlsx/workbook/worksheet/worksheet_hyperlink.rb +11 -33
  90. data/test/content_type/tc_default.rb +0 -11
  91. data/test/content_type/tc_override.rb +0 -13
  92. data/test/drawing/tc_d_lbls.rb +14 -4
  93. data/test/tc_axlsx.rb +20 -2
  94. data/test/workbook/tc_defined_name.rb +2 -2
  95. data/test/workbook/tc_workbook.rb +15 -0
  96. data/test/workbook/worksheet/tc_col.rb +11 -1
  97. data/test/workbook/worksheet/tc_pane.rb +5 -45
  98. data/test/workbook/worksheet/tc_selection.rb +9 -48
  99. metadata +13 -3
@@ -4,110 +4,9 @@ module Axlsx
4
4
  # The SheetProtection object manages worksheet protection options per sheet.
5
5
  class SheetProtection
6
6
 
7
- # If 1 or true then AutoFilters should not be allowed to operate when the sheet is protected.
8
- # If 0 or false then AutoFilters should be allowed to operate when the sheet is protected.
9
- # @return [Boolean]
10
- # default true
11
- attr_reader :auto_filter
12
-
13
- # If 1 or true then deleting columns should not be allowed when the sheet is protected.
14
- # If 0 or false then deleting columns should be allowed when the sheet is protected.
15
- # @return [Boolean]
16
- # default true
17
- attr_reader :delete_columns
18
-
19
- # If 1 or true then deleting rows should not be allowed when the sheet is protected.
20
- # If 0 or false then deleting rows should be allowed when the sheet is protected.
21
- # @return [Boolean]
22
- # default true
23
- attr_reader :delete_rows
24
-
25
- # If 1 or true then formatting cells should not be allowed when the sheet is protected.
26
- # If 0 or false then formatting cells should be allowed when the sheet is protected.
27
- # @return [Boolean]
28
- # default true
29
- attr_reader :format_cells
30
-
31
- # If 1 or true then formatting columns should not be allowed when the sheet is protected.
32
- # If 0 or false then formatting columns should be allowed when the sheet is protected.
33
- # @return [Boolean]
34
- # default true
35
- attr_reader :format_columns
36
-
37
- # If 1 or true then formatting rows should not be allowed when the sheet is protected.
38
- # If 0 or false then formatting rows should be allowed when the sheet is protected.
39
- # @return [Boolean]
40
- # default true
41
- attr_reader :format_rows
42
-
43
- # If 1 or true then inserting columns should not be allowed when the sheet is protected.
44
- # If 0 or false then inserting columns should be allowed when the sheet is protected.
45
- # @return [Boolean]
46
- # default true
47
- attr_reader :insert_columns
48
-
49
- # If 1 or true then inserting hyperlinks should not be allowed when the sheet is protected.
50
- # If 0 or false then inserting hyperlinks should be allowed when the sheet is protected.
51
- # @return [Boolean]
52
- # default true
53
- attr_reader :insert_hyperlinks
54
-
55
- # If 1 or true then inserting rows should not be allowed when the sheet is protected.
56
- # If 0 or false then inserting rows should be allowed when the sheet is protected.
57
- # @return [Boolean]
58
- # default true
59
- attr_reader :insert_rows
60
-
61
- # If 1 or true then editing of objects should not be allowed when the sheet is protected.
62
- # If 0 or false then objects are allowed to be edited when the sheet is protected.
63
- # @return [Boolean]
64
- # default false
65
- attr_reader :objects
66
-
67
- # If 1 or true then PivotTables should not be allowed to operate when the sheet is protected.
68
- # If 0 or false then PivotTables should be allowed to operate when the sheet is protected.
69
- # @return [Boolean]
70
- # default true
71
- attr_reader :pivot_tables
72
-
73
- # Specifies the salt which was prepended to the user-supplied password before it was hashed using the hashing algorithm
74
- # @return [String]
75
- attr_reader :salt_value
76
-
77
- # If 1 or true then Scenarios should not be edited when the sheet is protected.
78
- # If 0 or false then Scenarios are allowed to be edited when the sheet is protected.
79
- # @return [Boolean]
80
- # default false
81
- attr_reader :scenarios
82
-
83
- # If 1 or true then selection of locked cells should not be allowed when the sheet is protected.
84
- # If 0 or false then selection of locked cells should be allowed when the sheet is protected.
85
- # @return [Boolean]
86
- # default false
87
- attr_reader :select_locked_cells
88
-
89
- # If 1 or true then selection of unlocked cells should not be allowed when the sheet is protected.
90
- # If 0 or false then selection of unlocked cells should be allowed when the sheet is protected.
91
- # @return [Boolean]
92
- # default false
93
- attr_reader :select_unlocked_cells
94
-
95
- # If 1 or true then the sheet is protected.
96
- # If 0 or false then the sheet is not protected.
97
- # @return [Boolean]
98
- # default true
99
- attr_reader :sheet
100
-
101
- # If 1 or true then sorting should not be allowed when the sheet is protected.
102
- # If 0 or false then sorting should be allowed when the sheet is protected.
103
- # @return [Boolean]
104
- # default true
105
- attr_reader :sort
106
-
107
- # Password hash
108
- # @return [String]
109
- # default nil
110
- attr_reader :password
7
+ include Axlsx::OptionsParser
8
+ include Axlsx::SerializedAttributes
9
+ include Axlsx::Accessors
111
10
 
112
11
  # Creates a new SheetProtection instance
113
12
  # @option options [Boolean] sheet @see SheetProtection#sheet
@@ -127,64 +26,62 @@ module Axlsx
127
26
  # @option options [Boolean] pivot_tables @see SheetProtection#pivot_tables
128
27
  # @option options [Boolean] select_unlocked_cells @see SheetProtection#select_unlocked_cells
129
28
  # @option options [String] password. The password required for unlocking. @see SheetProtection#password=
130
- # @option options [Boolean] objects @see SheetProtection#objects
131
29
  def initialize(options={})
132
30
  @objects = @scenarios = @select_locked_cells = @select_unlocked_cells = false
133
31
  @sheet = @format_cells = @format_rows = @format_columns = @insert_columns = @insert_rows = @insert_hyperlinks = @delete_columns = @delete_rows = @sort = @auto_filter = @pivot_tables = true
134
32
  @password = nil
33
+ parse_options options
34
+ end
135
35
 
136
- options.each do |o|
137
- self.send("#{o[0]}=", o[1]) if self.respond_to? "#{o[0]}="
138
- end
36
+ 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
39
+
40
+ 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
43
+
44
+ # Specifies the salt which was prepended to the user-supplied password before it was hashed using the hashing algorithm
45
+ # @return [String]
46
+ attr_reader :salt_value
47
+
48
+ # Password hash
49
+ # @return [String]
50
+ # default nil
51
+ attr_reader :password
52
+
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
56
+ # figure out why it does not work, and if Excel even supports it.
57
+ # def propper_password=(v)
58
+ # @algorithm_name = v == nil ? nil : 'SHA-1'
59
+ # @salt_value = @spin_count = @hash_value = v if v == nil
60
+ # return if v == nil
61
+ # require 'digest/sha1'
62
+ # @spin_count = 10000
63
+ # @salt_value = Digest::SHA1.hexdigest(rand(36**8).to_s(36))
64
+ # @spin_count.times do |count|
65
+ # @hash_value = Digest::SHA1.hexdigest((@hash_value ||= (@salt_value + v.to_s)) + Array(count).pack('V'))
66
+ # end
67
+ # end
68
+
69
+ # encodes password for protection locking
70
+ def password=(v)
71
+ return if v == nil
72
+ @password = create_password_hash(v)
139
73
  end
140
74
 
75
+ # Serialize the object
76
+ # @param [String] str
77
+ # @return [String]
78
+ def to_xml_string(str = '')
79
+ str << '<sheetProtection '
80
+ serialized_attributes str
81
+ str << '/>'
82
+ end
141
83
 
142
- # create validating setters for boolean values
143
- # @return [Boolean]
144
- [:sheet, :objects, :scenarios, :select_locked_cells, :sort,
145
- :select_unlocked_cells, :format_cells, :format_rows, :format_columns,
146
- :insert_columns, :insert_rows, :insert_hyperlinks, :delete_columns,
147
- :delete_rows, :auto_filter, :pivot_tables].each do |f_name|
148
- define_method "#{f_name.to_s}=".to_sym do |v|
149
- Axlsx::validate_boolean(v)
150
- instance_variable_set "@#{f_name.to_s}".to_sym, v
151
- end
152
- end
153
-
154
- # This block is intended to implement the salt_value, hash_value and spin count as per the ECMA-376 standard.
155
- # However, it does not seem to actually work in EXCEL - instead they are using their old retro algorithm shown below
156
- # defined in the transitional portion of the speck. I am leaving this code in in the hope that someday Ill be able to
157
- # figure out why it does not work, and if Excel even supports it.
158
- # def propper_password=(v)
159
- # @algorithm_name = v == nil ? nil : 'SHA-1'
160
- # @salt_value = @spin_count = @hash_value = v if v == nil
161
- # return if v == nil
162
- # require 'digest/sha1'
163
- # @spin_count = 10000
164
- # @salt_value = Digest::SHA1.hexdigest(rand(36**8).to_s(36))
165
- # @spin_count.times do |count|
166
- # @hash_value = Digest::SHA1.hexdigest((@hash_value ||= (@salt_value + v.to_s)) + Array(count).pack('V'))
167
- # end
168
- # end
169
-
170
-
171
-
172
- # encodes password for protection locking
173
- def password=(v)
174
- return if v == nil
175
- @password = create_password_hash(v)
176
- end
177
-
178
- # Serialize the object
179
- # @param [String] str
180
- # @return [String]
181
- def to_xml_string(str = '')
182
- str << '<sheetProtection '
183
- str << instance_values.map{ |k,v| k.gsub(/_(.)/){ $1.upcase } << %{="#{v.to_s}"} }.join(' ')
184
- str << '/>'
185
- end
186
-
187
- private
84
+ private
188
85
  # Creates a password hash for a given password
189
86
  # @return [String]
190
87
  def create_password_hash(password)
@@ -196,7 +93,6 @@ module Axlsx
196
93
  password_as_string[2..3] + password_as_string[0..1]
197
94
  end
198
95
 
199
-
200
96
  # Encodes a given password
201
97
  # Based on the algorithm provided by Daniel Rentz of OpenOffice.
202
98
  # http://www.openoffice.org/sc/excelfileformat.pdf, Revision 1.42, page 115 (21.05.2012)
@@ -5,10 +5,54 @@ module Axlsx
5
5
  # @note The recommended way to manage the sheet view is via Worksheet#sheet_view
6
6
  # @see Worksheet#sheet_view
7
7
  class SheetView
8
-
8
+
9
+ include Axlsx::OptionsParser
10
+ include Axlsx::Accessors
11
+ include Axlsx::SerializedAttributes
12
+
13
+ # Creates a new {SheetView} object
14
+ # @option options [Integer] color_id Color Id
15
+ # @option options [Boolean] default_grid_color Default Grid Color
16
+ # @option options [Boolean] right_to_left Right To Left
17
+ # @option options [Boolean] show_formulas Show Formulas
18
+ # @option options [Boolean] show_grid_lines Show Grid Lines
19
+ # @option options [Boolean] show_outline_symbols Show Outline Symbols
20
+ # @option options [Boolean] show_row_col_headers Show Headers
21
+ # @option options [Boolean] show_ruler Show Ruler
22
+ # @option options [Boolean] show_white_space Show White Space
23
+ # @option options [Boolean] show_zeros Show Zero Values
24
+ # @option options [Boolean] tab_selected Sheet Tab Selected
25
+ # @option options [String, Cell] top_left_cell Top Left Visible Cell
26
+ # @option options [Symbol] view View Type
27
+ # @option options [Boolean] window_protection Window Protection
28
+ # @option options [Integer] workbook_view_id Workbook View Index
29
+ # @option options [Integer] zoom_scale
30
+ # @option options [Integer] zoom_scale_normal Zoom Scale Normal View
31
+ # @option options [Integer] zoom_scale_page_layout_view Zoom Scale Page Layout View
32
+ # @option options [Integer] zoom_scale_sheet_layout_view Zoom Scale Page Break Preview
33
+ def initialize(options={})
34
+ #defaults
35
+ @color_id = @top_left_cell = @pane = nil
36
+ @right_to_left = @show_formulas = @show_outline_symbols = @show_white_space = @tab_selected = @window_protection = false
37
+ @default_grid_color = @show_grid_lines = @show_row_col_headers = @show_ruler = @show_zeros = true
38
+ @zoom_scale = 100
39
+ @zoom_scale_normal = @zoom_scale_page_layout_view = @zoom_scale_sheet_layout_view = @workbook_view_id = 0
40
+ @selections = {}
41
+ parse_options options
42
+ end
43
+
44
+ boolean_attr_accessor :default_grid_color, :right_to_left, :show_formulas, :show_grid_lines,
45
+ :show_row_col_headers, :show_ruler, :show_white_space, :show_zeros, :tab_selected, :window_protection, :show_outline_symbols
46
+
47
+ serializable_attributes :default_grid_color, :right_to_left, :show_formulas, :show_grid_lines,
48
+ :show_row_col_headers, :show_ruler, :show_white_space, :show_zeros, :tab_selected, :window_protection, :show_outline_symbols,
49
+ :zoom_scale_sheet_layout_view, :zoom_scale_page_layout_view, :zoom_scale_normal, :workbook_view_id,
50
+ :view, :top_left_cell, :color_id, :zoom_scale
51
+
52
+
9
53
  # instance values that must be serialized as their own elements - e.g. not attributes.
10
54
  CHILD_ELEMENTS = [ :pane, :selections ]
11
-
55
+
12
56
  # The pane object for the sheet view
13
57
  # @return [Pane]
14
58
  # @see [Pane]
@@ -17,7 +61,7 @@ module Axlsx
17
61
  yield @pane if block_given?
18
62
  @pane
19
63
  end
20
-
64
+
21
65
  # A hash of selection objects keyed by pane type associated with this sheet view.
22
66
  # @return [Hash]
23
67
  attr_reader :selections
@@ -32,116 +76,7 @@ module Axlsx
32
76
  # @return [Integer]
33
77
  # default nil
34
78
  attr_reader :color_id
35
-
36
-
37
- # Default Grid Color
38
- # Flag indicating that the consuming application
39
- # should use the default grid lines color
40
- # (system dependent). Overrides any color
41
- # specified in colorId.
42
- # @see type
43
- # @return [Boolean]
44
- # default true
45
- attr_reader :default_grid_color
46
-
47
-
48
- # Right To Left
49
- # Flag indicating whether the sheet is in
50
- # 'right to left' display mode. When in this
51
- # mode, Column A is on the far right, Column B ;
52
- # is one column left of Column A, and so on. Also,
53
- # information in cells is displayed in the Right
54
- # to Left format.
55
- # @see type
56
- # @return [Boolean]
57
- # default false
58
- attr_reader :right_to_left
59
-
60
-
61
- # Show Formulas
62
- # Flag indicating whether this sheet should
63
- # display formulas.
64
- # @see type
65
- # @return [Boolean]
66
- # default false
67
- attr_reader :show_formulas
68
-
69
-
70
- # Show Grid Lines
71
- # Flag indicating whether this sheet
72
- # should display gridlines.
73
- # @see type
74
- # @return [Boolean]
75
- # default true
76
- attr_reader :show_grid_lines
77
-
78
-
79
- # Show Outline Symbols
80
- # Flag indicating whether the sheet has outline
81
- # symbols visible. This flag shall always override
82
- # SheetPr element's outlinePr child element
83
- # whose attribute is named showOutlineSymbols
84
- # when there is a conflict.
85
- # @see type
86
- # @return [Boolean]
87
- # default false
88
- attr_reader :show_outline_symbols
89
-
90
-
91
- # Show Headers
92
- # Flag indicating whether the sheet should
93
- # display row and column headings.
94
- # @see type
95
- # @return [Boolean]
96
- # default true
97
- attr_reader :show_row_col_headers
98
-
99
-
100
- # Show Ruler
101
- # Show the ruler in Page Layout View.
102
- # @see type
103
- # @return [Boolean]
104
- # default true
105
- attr_reader :show_ruler
106
-
107
-
108
- # Show White Space
109
- # Flag indicating whether page layout
110
- # view shall display margins. False means
111
- # do not display left, right, top (header),
112
- # and bottom (footer) margins (even when
113
- # there is data in the header or footer).
114
- # @see type
115
- # @return [Boolean]
116
- # default false
117
- attr_reader :show_white_space
118
-
119
-
120
- # Show Zero Values
121
- # Flag indicating whether the window should
122
- # show 0 (zero) in cells containing zero value.
123
- # When false, cells with zero value appear
124
- # blank instead of showing the number zero.
125
- # @see type
126
- # @return [Boolean]
127
- # default true
128
- attr_reader :show_zeros
129
-
130
-
131
- # Sheet Tab Selected
132
- # Flag indicating whether this sheet is selected.
133
- # When only 1 sheet is selected and active, this
134
- # value should be in synch with the activeTab value.
135
- # In case of a conflict, the Start Part setting
136
- # wins and sets the active sheet tab. Multiple
137
- # sheets can be selected, but only one sheet shall
138
- # be active at one time.
139
- # @see type
140
- # @return [Boolean]
141
- # default false
142
- attr_reader :tab_selected
143
-
144
-
79
+
145
80
  # Top Left Visible Cell
146
81
  # Location of the top left visible cell Location
147
82
  # of the top left visible cell in the bottom right
@@ -162,19 +97,7 @@ module Axlsx
162
97
  # @return [Symbol]
163
98
  # default :normal
164
99
  attr_reader :view
165
-
166
-
167
- # Window Protection
168
- # Flag indicating whether the panes in the window
169
- # are locked due to workbook protection.
170
- # This is an option when the workbook structure is
171
- # protected.
172
- # @see type
173
- # @return [Boolean]
174
- # default true
175
- attr_reader :window_protection
176
-
177
-
100
+
178
101
  # Workbook View Index
179
102
  # Zero-based index of this workbook view, pointing
180
103
  # to a workbookView element in the bookViews collection.
@@ -182,8 +105,7 @@ module Axlsx
182
105
  # @return [Integer]
183
106
  # default 0
184
107
  attr_reader :workbook_view_id
185
-
186
-
108
+
187
109
  # Zoom Scale
188
110
  # Window zoom magnification for current view
189
111
  # representing percent values. This attribute
@@ -195,8 +117,8 @@ module Axlsx
195
117
  # @return [Integer]
196
118
  # default 100
197
119
  attr_reader :zoom_scale
198
-
199
-
120
+
121
+
200
122
  # Zoom Scale Normal View
201
123
  # Zoom magnification to use when in normal view,
202
124
  # representing percent values. This attribute is
@@ -208,8 +130,8 @@ module Axlsx
208
130
  # @return [Integer]
209
131
  # default 0
210
132
  attr_reader :zoom_scale_normal
211
-
212
-
133
+
134
+
213
135
  # Zoom Scale Page Layout View
214
136
  # Zoom magnification to use when in page layout
215
137
  # view, representing percent values. This attribute
@@ -221,8 +143,8 @@ module Axlsx
221
143
  # @return [Integer]
222
144
  # default 0
223
145
  attr_reader :zoom_scale_page_layout_view
224
-
225
-
146
+
147
+
226
148
  # Zoom Scale Page Break Preview
227
149
  # Zoom magnification to use when in page break
228
150
  # preview, representing percent values. This
@@ -235,43 +157,7 @@ module Axlsx
235
157
  # @return [Integer]
236
158
  # default 0
237
159
  attr_reader :zoom_scale_sheet_layout_view
238
-
239
-
240
- # Creates a new {SheetView} object
241
- # @option options [Integer] color_id Color Id
242
- # @option options [Boolean] default_grid_color Default Grid Color
243
- # @option options [Boolean] right_to_left Right To Left
244
- # @option options [Boolean] show_formulas Show Formulas
245
- # @option options [Boolean] show_grid_lines Show Grid Lines
246
- # @option options [Boolean] show_outline_symbols Show Outline Symbols
247
- # @option options [Boolean] show_row_col_headers Show Headers
248
- # @option options [Boolean] show_ruler Show Ruler
249
- # @option options [Boolean] show_white_space Show White Space
250
- # @option options [Boolean] show_zeros Show Zero Values
251
- # @option options [Boolean] tab_selected Sheet Tab Selected
252
- # @option options [String, Cell] top_left_cell Top Left Visible Cell
253
- # @option options [Symbol] view View Type
254
- # @option options [Boolean] window_protection Window Protection
255
- # @option options [Integer] workbook_view_id Workbook View Index
256
- # @option options [Integer] zoom_scale_normal Zoom Scale Normal View
257
- # @option options [Integer] zoom_scale_page_layout_view Zoom Scale Page Layout View
258
- # @option options [Integer] zoom_scale_sheet_layout_view Zoom Scale Page Break Preview
259
- def initialize(options={})
260
- #defaults
261
- @color_id = @top_left_cell = @pane = nil
262
- @right_to_left = @show_formulas = @show_outline_symbols = @show_white_space = @tab_selected = @window_protection = false
263
- @default_grid_color = @show_grid_lines = @show_row_col_headers = @show_ruler = @show_zeros = true
264
- @zoom_scale = 100
265
- @zoom_scale_normal = @zoom_scale_page_layout_view = @zoom_scale_sheet_layout_view = @workbook_view_id = 0
266
- @selections = {}
267
-
268
- # write options to instance variables
269
- options.each do |o|
270
- self.send("#{o[0]}=", o[1]) if self.respond_to? "#{o[0]}="
271
- end
272
- end
273
-
274
-
160
+
275
161
  # Adds a new selection
276
162
  # param [Symbol] pane
277
163
  # param [Hash] options
@@ -279,94 +165,42 @@ module Axlsx
279
165
  def add_selection(pane, options = {})
280
166
  @selections[pane] = Selection.new(options.merge(:pane => pane))
281
167
  end
282
-
168
+
283
169
  # @see color_id
284
170
  def color_id=(v); Axlsx::validate_unsigned_int(v); @color_id = v end
285
-
286
-
287
- # @see default_grid_color
288
- def default_grid_color=(v); Axlsx::validate_boolean(v); @default_grid_color = v end
289
-
290
-
291
- # @see right_to_left
292
- def right_to_left=(v); Axlsx::validate_boolean(v); @right_to_left = v end
293
-
294
-
295
- # @see show_formulas
296
- def show_formulas=(v); Axlsx::validate_boolean(v); @show_formulas = v end
297
-
298
-
299
- # @see show_grid_lines
300
- def show_grid_lines=(v); Axlsx::validate_boolean(v); @show_grid_lines = v end
301
-
302
-
303
- # @see show_outline_symbols
304
- def show_outline_symbols=(v); Axlsx::validate_boolean(v); @show_outline_symbols = v end
305
-
306
-
307
- # @see show_row_col_headers
308
- def show_row_col_headers=(v); Axlsx::validate_boolean(v); @show_row_col_headers = v end
309
-
310
-
311
- # @see show_ruler
312
- def show_ruler=(v); Axlsx::validate_boolean(v); @show_ruler = v end
313
-
314
-
315
- # @see show_white_space
316
- def show_white_space=(v); Axlsx::validate_boolean(v); @show_white_space = v end
317
-
318
-
319
- # @see show_zeros
320
- def show_zeros=(v); Axlsx::validate_boolean(v); @show_zeros = v end
321
-
322
-
323
- # @see tab_selected
324
- def tab_selected=(v); Axlsx::validate_boolean(v); @tab_selected = v end
325
-
326
-
171
+
327
172
  # @see top_left_cell
328
173
  def top_left_cell=(v)
329
174
  cell = (v.class == Axlsx::Cell ? v.r_abs : v)
330
175
  Axlsx::validate_string(cell)
331
- @top_left_cell = cell
176
+ @top_left_cell = cell
332
177
  end
333
-
334
-
178
+
335
179
  # @see view
336
180
  def view=(v); Axlsx::validate_sheet_view_type(v); @view = v end
337
-
338
-
339
- # @see window_protection
340
- def window_protection=(v); Axlsx::validate_boolean(v); @window_protection = v end
341
-
342
-
181
+
343
182
  # @see workbook_view_id
344
183
  def workbook_view_id=(v); Axlsx::validate_unsigned_int(v); @workbook_view_id = v end
345
-
346
-
184
+
347
185
  # @see zoom_scale
348
186
  def zoom_scale=(v); Axlsx::validate_scale_0_10_400(v); @zoom_scale = v end
349
-
350
-
187
+
351
188
  # @see zoom_scale_normal
352
189
  def zoom_scale_normal=(v); Axlsx::validate_scale_0_10_400(v); @zoom_scale_normal = v end
353
-
354
-
190
+
355
191
  # @see zoom_scale_page_layout_view
356
192
  def zoom_scale_page_layout_view=(v); Axlsx::validate_scale_0_10_400(v); @zoom_scale_page_layout_view = v end
357
-
358
-
193
+
359
194
  # @see zoom_scale_sheet_layout_view
360
195
  def zoom_scale_sheet_layout_view=(v); Axlsx::validate_scale_0_10_400(v); @zoom_scale_sheet_layout_view = v end
361
-
362
-
196
+
363
197
  # Serializes the data validation
364
198
  # @param [String] str
365
199
  # @return [String]
366
200
  def to_xml_string(str = '')
367
201
  str << '<sheetViews>'
368
202
  str << '<sheetView '
369
- str << instance_values.map { |key, value| (Axlsx::camel(key.to_s, false) << '="' << value.to_s << '"') unless CHILD_ELEMENTS.include?(key.to_sym) || value == nil }.join(' ')
203
+ serialized_attributes str
370
204
  str << '>'
371
205
  @pane.to_xml_string(str) if @pane
372
206
  @selections.each do |key, selection|