axlsx 1.1.6 → 1.1.7

Sign up to get free protection for your applications and to get access to all the features.
Files changed (48) hide show
  1. data/README.md +19 -6
  2. data/examples/axis-titles.xlsx +0 -0
  3. data/examples/basic_charts.rb +46 -0
  4. data/examples/basic_charts.xlsx +0 -0
  5. data/examples/charts.xlsx +0 -0
  6. data/examples/example.rb +17 -1
  7. data/examples/example.xlsx +0 -0
  8. data/examples/example_streamed.xlsx +0 -0
  9. data/examples/extractive.xlsx +0 -0
  10. data/examples/no-use_autowidth.xlsx +0 -0
  11. data/examples/pie_chart_excel.xlsx +0 -0
  12. data/examples/pie_chart_saved.xlsx +0 -0
  13. data/examples/shared_strings_example.xlsx +0 -0
  14. data/examples/sheet_view.rb +34 -0
  15. data/examples/sheet_view.xlsx +0 -0
  16. data/examples/~$example.xlsx +0 -0
  17. data/lib/axlsx.rb +3 -2
  18. data/lib/axlsx/drawing/axis.rb +18 -0
  19. data/lib/axlsx/drawing/cat_axis.rb +3 -3
  20. data/lib/axlsx/drawing/chart.rb +3 -3
  21. data/lib/axlsx/drawing/drawing.rb +0 -1
  22. data/lib/axlsx/drawing/graphic_frame.rb +2 -2
  23. data/lib/axlsx/drawing/num_data.rb +2 -2
  24. data/lib/axlsx/drawing/title.rb +21 -9
  25. data/lib/axlsx/package.rb +9 -5
  26. data/lib/axlsx/util/validators.rb +28 -4
  27. data/lib/axlsx/version.rb +1 -1
  28. data/lib/axlsx/workbook/workbook.rb +7 -3
  29. data/lib/axlsx/workbook/worksheet/cell.rb +4 -0
  30. data/lib/axlsx/workbook/worksheet/page_setup.rb +1 -1
  31. data/lib/axlsx/workbook/worksheet/pane.rb +144 -0
  32. data/lib/axlsx/workbook/worksheet/selection.rb +111 -0
  33. data/lib/axlsx/workbook/worksheet/sheet_view.rb +379 -0
  34. data/lib/axlsx/workbook/worksheet/worksheet.rb +27 -10
  35. data/test/drawing/tc_axis.rb +19 -2
  36. data/test/drawing/tc_cat_axis.rb +3 -3
  37. data/test/drawing/tc_num_data.rb +5 -1
  38. data/test/drawing/tc_title.rb +16 -0
  39. data/test/tc_package.rb +24 -4
  40. data/test/util/tc_validators.rb +68 -11
  41. data/test/workbook/worksheet/tc_pane.rb +94 -0
  42. data/test/workbook/worksheet/tc_selection.rb +94 -0
  43. data/test/workbook/worksheet/tc_sheet_view.rb +214 -0
  44. data/test/workbook/worksheet/tc_worksheet.rb +0 -7
  45. metadata +28 -13
  46. data/examples/pie_chart.rb +0 -16
  47. data/examples/pie_chart.xlsx +0 -0
  48. data/examples/~$pie_chart_saved.xlsx +0 -0
@@ -0,0 +1,214 @@
1
+ # encoding: UTF-8
2
+ $LOAD_PATH.unshift "#{File.dirname(__FILE__)}/../../"
3
+ require 'tc_helper.rb'
4
+
5
+ class TestSheetView < Test::Unit::TestCase
6
+ def setup
7
+ #inverse defaults for booleans
8
+ @boolean_options = { :right_to_left => true, :show_formulas => true, :show_outline_symbols => true,
9
+ :show_white_space => true, :tab_selected => true, :default_grid_color => false, :show_grid_lines => false,
10
+ :show_row_col_headers => false, :show_ruler => false, :show_zeros => false, :window_protection => true }
11
+ @symbol_options = { :view => :page_break_preview }
12
+ @nil_options = { :color_id => 2, :top_left_cell => 'A2' }
13
+ @int_0 = { :zoom_scale_normal => 100, :zoom_scale_page_layout_view => 100, :zoom_scale_sheet_layout_view => 100, :workbook_view_id => 2 }
14
+ @int_100 = { :zoom_scale => 10 }
15
+
16
+ @integer_options = { :color_id => 2, :workbook_view_id => 2 }.merge(@int_0).merge(@int_100)
17
+ @string_options = { :top_left_cell => 'A2' }
18
+
19
+
20
+ @options = @boolean_options.merge(@boolean_options).merge(@symbol_options).merge(@nil_options).merge(@int_0).merge(@int_100)
21
+
22
+ @sv = Axlsx::SheetView.new(@options)
23
+ end
24
+
25
+ def test_initialize
26
+ sv = Axlsx::SheetView.new
27
+
28
+ @boolean_options.each do |key, value|
29
+ assert_equal(!value, sv.send(key.to_sym), "initialized default #{key} should be #{!value}")
30
+ assert_equal(value, @sv.send(key.to_sym), "initialized options #{key} should be #{value}")
31
+ end
32
+
33
+ @nil_options.each do |key, value|
34
+ assert_equal(nil, sv.send(key.to_sym), "initialized default #{key} should be nil")
35
+ assert_equal(value, @sv.send(key.to_sym), "initialized options #{key} should be #{value}")
36
+ end
37
+
38
+ @int_0.each do |key, value|
39
+ assert_equal(0, sv.send(key.to_sym), "initialized default #{key} should be 0")
40
+ assert_equal(value, @sv.send(key.to_sym), "initialized options #{key} should be #{value}")
41
+ end
42
+
43
+ @int_100.each do |key, value|
44
+ assert_equal(100, sv.send(key.to_sym), "initialized default #{key} should be 100")
45
+ assert_equal(value, @sv.send(key.to_sym), "initialized options #{key} should be #{value}")
46
+ end
47
+ end
48
+
49
+ def test_boolean_attribute_validation
50
+ @boolean_options.each do |key, value|
51
+ assert_raise(ArgumentError, "#{key} must be boolean") { @sv.send("#{key}=".to_sym, 'A') }
52
+ assert_nothing_raised { @sv.send("#{key}=".to_sym, true) }
53
+ end
54
+ end
55
+
56
+ def test_string_attribute_validation
57
+ @string_options.each do |key, value|
58
+ assert_raise(ArgumentError, "#{key} must be string") { @sv.send("#{key}=".to_sym, :symbol) }
59
+ assert_nothing_raised { @sv.send("#{key}=".to_sym, "foo") }
60
+ end
61
+ end
62
+
63
+ def test_symbol_attribute_validation
64
+ @symbol_options.each do |key, value|
65
+ assert_raise(ArgumentError, "#{key} must be symbol") { @sv.send("#{key}=".to_sym, "foo") }
66
+ assert_nothing_raised { @sv.send("#{key}=".to_sym, value) }
67
+ end
68
+ end
69
+
70
+ def test_integer_attribute_validation
71
+ @integer_options.each do |key, value|
72
+ assert_raise(ArgumentError, "#{key} must be integer") { @sv.send("#{key}=".to_sym, "foo") }
73
+ assert_nothing_raised { @sv.send("#{key}=".to_sym, value) }
74
+ end
75
+ end
76
+
77
+ def test_color_id
78
+ assert_raise(ArgumentError) { @sv.color_id = "10" }
79
+ assert_nothing_raised { @sv.color_id = 2 }
80
+ assert_equal(@sv.color_id, 2)
81
+ end
82
+
83
+ def test_default_grid_color
84
+ assert_raise(ArgumentError) { @sv.default_grid_color = "foo" }
85
+ assert_nothing_raised { @sv.default_grid_color = false }
86
+ assert_equal(@sv.default_grid_color, false)
87
+ end
88
+
89
+ def test_right_to_left
90
+ assert_raise(ArgumentError) { @sv.right_to_left = "foo´" }
91
+ assert_nothing_raised { @sv.right_to_left = true }
92
+ assert_equal(@sv.right_to_left, true)
93
+ end
94
+
95
+ def test_show_formulas
96
+ assert_raise(ArgumentError) { @sv.show_formulas = 'foo' }
97
+ assert_nothing_raised { @sv.show_formulas = false }
98
+ assert_equal(@sv.show_formulas, false)
99
+ end
100
+
101
+ def test_show_grid_lines
102
+ assert_raise(ArgumentError) { @sv.show_grid_lines = "foo" }
103
+ assert_nothing_raised { @sv.show_grid_lines = false }
104
+ assert_equal(@sv.show_grid_lines, false)
105
+ end
106
+
107
+ def test_show_outline_symbols
108
+ assert_raise(ArgumentError) { @sv.show_outline_symbols = 'foo' }
109
+ assert_nothing_raised { @sv.show_outline_symbols = false }
110
+ assert_equal(@sv.show_outline_symbols, false)
111
+ end
112
+
113
+ def test_show_row_col_headers
114
+ assert_raise(ArgumentError) { @sv.show_row_col_headers = "foo" }
115
+ assert_nothing_raised { @sv.show_row_col_headers = false }
116
+ assert_equal(@sv.show_row_col_headers, false)
117
+ end
118
+
119
+ def test_show_ruler
120
+ assert_raise(ArgumentError) { @sv.show_ruler = 'foo' }
121
+ assert_nothing_raised { @sv.show_ruler = false }
122
+ assert_equal(@sv.show_ruler, false)
123
+ end
124
+
125
+ def test_show_white_space
126
+ assert_raise(ArgumentError) { @sv.show_white_space = 'foo' }
127
+ assert_nothing_raised { @sv.show_white_space = false }
128
+ assert_equal(@sv.show_white_space, false)
129
+ end
130
+
131
+ def test_show_zeros
132
+ assert_raise(ArgumentError) { @sv.show_zeros = "foo" }
133
+ assert_nothing_raised { @sv.show_zeros = false }
134
+ assert_equal(@sv.show_zeros, false)
135
+ end
136
+
137
+ def test_tab_selected
138
+ assert_raise(ArgumentError) { @sv.tab_selected = "foo" }
139
+ assert_nothing_raised { @sv.tab_selected = false }
140
+ assert_equal(@sv.tab_selected, false)
141
+ end
142
+
143
+ def test_top_left_cell
144
+ assert_raise(ArgumentError) { @sv.top_left_cell = :cell_adress }
145
+ assert_nothing_raised { @sv.top_left_cell = "A2" }
146
+ assert_equal(@sv.top_left_cell, "A2")
147
+ end
148
+
149
+ def test_view
150
+ assert_raise(ArgumentError) { @sv.view = 'view' }
151
+ assert_nothing_raised { @sv.view = :page_break_preview }
152
+ assert_equal(@sv.view, :page_break_preview)
153
+ end
154
+
155
+ def test_window_protection
156
+ assert_raise(ArgumentError) { @sv.window_protection = "foo" }
157
+ assert_nothing_raised { @sv.window_protection = false }
158
+ assert_equal(@sv.window_protection, false)
159
+ end
160
+
161
+ def test_workbook_view_id
162
+ assert_raise(ArgumentError) { @sv.workbook_view_id = "1" }
163
+ assert_nothing_raised { @sv.workbook_view_id = 1 }
164
+ assert_equal(@sv.workbook_view_id, 1)
165
+ end
166
+
167
+ def test_zoom_scale
168
+ assert_raise(ArgumentError) { @sv.zoom_scale = "50" }
169
+ assert_nothing_raised { @sv.zoom_scale = 50 }
170
+ assert_equal(@sv.zoom_scale, 50)
171
+ end
172
+
173
+ def test_zoom_scale_normal
174
+ assert_raise(ArgumentError) { @sv.zoom_scale_normal = "50" }
175
+ assert_nothing_raised { @sv.zoom_scale_normal = 50 }
176
+ assert_equal(@sv.zoom_scale_normal, 50)
177
+ end
178
+
179
+ def test_zoom_scale_page_layout_view
180
+ assert_raise(ArgumentError) { @sv.zoom_scale_page_layout_view = "50" }
181
+ assert_nothing_raised { @sv.zoom_scale_page_layout_view = 50 }
182
+ assert_equal(@sv.zoom_scale_page_layout_view, 50)
183
+ end
184
+
185
+ def test_zoom_scale_sheet_layout_view
186
+ assert_raise(ArgumentError) { @sv.zoom_scale_sheet_layout_view = "50" }
187
+ assert_nothing_raised { @sv.zoom_scale_sheet_layout_view = 50 }
188
+ assert_equal(@sv.zoom_scale_sheet_layout_view, 50)
189
+ end
190
+
191
+ def test_to_xml
192
+ p = Axlsx::Package.new
193
+ @ws = p.workbook.add_worksheet :name => "sheetview"
194
+ @ws.sheet_view do |vs|
195
+ vs.view = :page_break_preview
196
+ end
197
+
198
+ doc = Nokogiri::XML.parse(@ws.sheet_view.to_xml_string)
199
+
200
+ assert_equal(1, doc.xpath("//sheetView[@tabSelected='false']").size)
201
+
202
+ assert_equal(1, doc.xpath("//sheetView[@tabSelected='false'][@showWhiteSpace='false'][@showOutlineSymbols='false'][@showFormulas='false']
203
+ [@rightToLeft='false'][@windowProtection='false'][@showZeros='true'][@showRuler='true']
204
+ [@showRowColHeaders='true'][@showGridLines='true'][@defaultGridColor='true']
205
+ [@zoomScale='100'][@workbookViewId='0'][@zoomScaleSheetLayoutView='0'][@zoomScalePageLayoutView='0']
206
+ [@zoomScaleNormal='0'][@view='page_break_preview']").size)
207
+ end
208
+
209
+ def test_add_selection
210
+ @sv.add_selection(:top_left, :active_cell => "A1")
211
+ assert_equal('A1', @sv.selections[:top_left].active_cell)
212
+ end
213
+
214
+ end
@@ -217,13 +217,6 @@ class TestWorksheet < Test::Unit::TestCase
217
217
  assert_equal(doc.xpath('//xmlns:worksheet/xmlns:sheetViews/xmlns:sheetView[@showGridLines="false"]').size, 1)
218
218
  end
219
219
 
220
-
221
- def test_to_xml_string_show_selection
222
- doc = Nokogiri::XML(@ws.to_xml_string)
223
- assert_equal(doc.xpath('//xmlns:worksheet/xmlns:sheetViews/xmlns:sheetView/xmlns:selection[@activeCell="A1"]').size, 1)
224
- assert_equal(doc.xpath('//xmlns:worksheet/xmlns:sheetViews/xmlns:sheetView/xmlns:selection[@sqref="A1"]').size, 1)
225
- end
226
-
227
220
  def test_to_xml_string_auto_fit_data
228
221
  @ws.add_row [1, "two"]
229
222
  doc = Nokogiri::XML(@ws.to_xml_string)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: axlsx
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.6
4
+ version: 1.1.7
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-05-30 00:00:00.000000000 Z
12
+ date: 2012-06-11 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: nokogiri
16
- requirement: &2151817600 !ruby/object:Gem::Requirement
16
+ requirement: &2151816940 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: 1.4.1
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *2151817600
24
+ version_requirements: *2151816940
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: rubyzip
27
- requirement: &2151816420 !ruby/object:Gem::Requirement
27
+ requirement: &2151815700 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: 0.9.5
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *2151816420
35
+ version_requirements: *2151815700
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: rake
38
- requirement: &2151814900 !ruby/object:Gem::Requirement
38
+ requirement: &2151814440 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: 0.8.7
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *2151814900
46
+ version_requirements: *2151814440
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: cover_me
49
- requirement: &2151814060 !ruby/object:Gem::Requirement
49
+ requirement: &2151813500 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,7 +54,7 @@ dependencies:
54
54
  version: '0'
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *2151814060
57
+ version_requirements: *2151813500
58
58
  description: ! ' xlsx generation with charts, images, automated column width, customizable
59
59
  styles and full schema validation. Axlsx excels at helping you generate beautiful
60
60
  Office Open XML Spreadsheet documents without having to understand the entire ECMA
@@ -179,10 +179,13 @@ files:
179
179
  - lib/axlsx/workbook/worksheet/icon_set.rb~
180
180
  - lib/axlsx/workbook/worksheet/page_margins.rb
181
181
  - lib/axlsx/workbook/worksheet/page_setup.rb
182
+ - lib/axlsx/workbook/worksheet/pane.rb
182
183
  - lib/axlsx/workbook/worksheet/print_options.rb
183
184
  - lib/axlsx/workbook/worksheet/row.rb
185
+ - lib/axlsx/workbook/worksheet/selection.rb
184
186
  - lib/axlsx/workbook/worksheet/shared_strings_table.rb~
185
187
  - lib/axlsx/workbook/worksheet/sheet_protection.rb
188
+ - lib/axlsx/workbook/worksheet/sheet_view.rb
186
189
  - lib/axlsx/workbook/worksheet/table.rb
187
190
  - lib/axlsx/workbook/worksheet/table.rb~
188
191
  - lib/axlsx/workbook/worksheet/worksheet.rb
@@ -225,8 +228,12 @@ files:
225
228
  - lib/schema/vml-wordprocessingDrawing.xsd
226
229
  - lib/schema/wml.xsd
227
230
  - lib/schema/xml.xsd
231
+ - examples/axis-titles.xlsx
232
+ - examples/basic_charts.rb
233
+ - examples/basic_charts.xlsx
228
234
  - examples/chart_colors.rb
229
235
  - examples/chart_colors.xlsx
236
+ - examples/charts.xlsx
230
237
  - examples/conditional_formatting/example_conditional_formatting.rb
231
238
  - examples/conditional_formatting/getting_barred.rb
232
239
  - examples/conditional_formatting/getting_barred.xlsx
@@ -252,6 +259,7 @@ files:
252
259
  - examples/example_streamed.xlsx
253
260
  - examples/examples_saved.xlsx
254
261
  - examples/extractive.rb
262
+ - examples/extractive.xlsx
255
263
  - examples/fish.xlsx
256
264
  - examples/image1.gif
257
265
  - examples/image1.jpeg
@@ -260,17 +268,18 @@ files:
260
268
  - examples/no-use_autowidth.xlsx
261
269
  - examples/pareto.rb
262
270
  - examples/pareto.xlsx
263
- - examples/pie_chart.rb
264
- - examples/pie_chart.xlsx
271
+ - examples/pie_chart_excel.xlsx
265
272
  - examples/pie_chart_saved.xlsx
266
273
  - examples/sample.png
267
274
  - examples/shared_strings_example.xlsx
268
275
  - examples/sheet_protection.rb
269
276
  - examples/sheet_protection.xlsx
277
+ - examples/sheet_view.rb
278
+ - examples/sheet_view.xlsx
270
279
  - examples/skydrive/real_example.rb
271
280
  - examples/two_cell_anchor_image.rb
272
281
  - examples/two_cell_anchor_image.xlsx
273
- - examples/~$pie_chart_saved.xlsx
282
+ - examples/~$example.xlsx
274
283
  - LICENSE
275
284
  - README.md
276
285
  - Rakefile
@@ -371,9 +380,12 @@ files:
371
380
  - test/workbook/worksheet/tc_icon_set.rb~
372
381
  - test/workbook/worksheet/tc_page_margins.rb
373
382
  - test/workbook/worksheet/tc_page_setup.rb
383
+ - test/workbook/worksheet/tc_pane.rb
374
384
  - test/workbook/worksheet/tc_print_options.rb
375
385
  - test/workbook/worksheet/tc_row.rb
386
+ - test/workbook/worksheet/tc_selection.rb
376
387
  - test/workbook/worksheet/tc_sheet_protection.rb
388
+ - test/workbook/worksheet/tc_sheet_view.rb
377
389
  - test/workbook/worksheet/tc_worksheet.rb
378
390
  homepage: https://github.com/randym/axlsx
379
391
  licenses: []
@@ -495,8 +507,11 @@ test_files:
495
507
  - test/workbook/worksheet/tc_icon_set.rb~
496
508
  - test/workbook/worksheet/tc_page_margins.rb
497
509
  - test/workbook/worksheet/tc_page_setup.rb
510
+ - test/workbook/worksheet/tc_pane.rb
498
511
  - test/workbook/worksheet/tc_print_options.rb
499
512
  - test/workbook/worksheet/tc_row.rb
513
+ - test/workbook/worksheet/tc_selection.rb
500
514
  - test/workbook/worksheet/tc_sheet_protection.rb
515
+ - test/workbook/worksheet/tc_sheet_view.rb
501
516
  - test/workbook/worksheet/tc_worksheet.rb
502
517
  has_rdoc: axlsx
@@ -1,16 +0,0 @@
1
- $LOAD_PATH.unshift "#{File.dirname(__FILE__)}/../lib"
2
- require 'axlsx'
3
- p = Axlsx::Package.new
4
- wb = p.workbook
5
- ##Generating A Pie Chart
6
- #```ruby
7
- wb.add_worksheet(:name => "Pie Chart") do |sheet|
8
- sheet.add_row ["First", "Second", "Third", "Fourth"]
9
- sheet.add_row [1, 2, 3, "=PRODUCT(A2:C2)"]
10
- sheet.add_chart(Axlsx::Pie3DChart, :start_at => [0,2], :end_at => [5, 15], :title => "example 3: Pie Chart") do |chart|
11
- chart.add_series :data => sheet["A2:D2"], :labels => sheet["A1:D1"]
12
- end
13
- end
14
-
15
- p.serialize('pie_chart.xlsx')
16
- #
Binary file