robust_excel_ole 1.11 → 1.12
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Changelog +11 -0
- data/README.rdoc +20 -8
- data/docs/README_open.rdoc +1 -0
- data/docs/README_ranges.rdoc +5 -11
- data/examples/{introducing_examples/example_introducing.rb → introductory_examples/example_introductory.rb} +10 -2
- data/examples/{introducing_examples → introductory_examples}/example_open.rb +18 -17
- data/examples/{introducing_examples → introductory_examples}/example_range.rb +29 -16
- data/examples/modifying_sheets/example_access_sheets_and_cells.rb +8 -7
- data/examples/modifying_sheets/example_add_names.rb +4 -8
- data/examples/modifying_sheets/example_adding_sheets.rb +7 -6
- data/examples/modifying_sheets/example_concating.rb +2 -2
- data/examples/modifying_sheets/example_copying.rb +3 -3
- data/examples/modifying_sheets/example_expanding.rb +2 -2
- data/examples/modifying_sheets/example_naming.rb +2 -2
- data/examples/modifying_sheets/example_ranges.rb +4 -4
- data/examples/modifying_sheets/example_saving.rb +3 -3
- data/examples/open_save_close/example_control_to_excel.rb +10 -11
- data/examples/open_save_close/example_default_excel.rb +13 -14
- data/examples/open_save_close/example_force_excel.rb +9 -10
- data/examples/open_save_close/example_if_obstructed_closeifsaved.rb +7 -7
- data/examples/open_save_close/example_if_obstructed_forget.rb +5 -5
- data/examples/open_save_close/example_if_obstructed_save.rb +7 -7
- data/examples/open_save_close/example_if_unsaved_accept.rb +13 -13
- data/examples/open_save_close/example_if_unsaved_forget.rb +9 -10
- data/examples/open_save_close/example_if_unsaved_forget_more.rb +9 -10
- data/examples/open_save_close/example_read_only.rb +6 -6
- data/examples/open_save_close/example_rename_cells.rb +4 -5
- data/examples/open_save_close/example_reuse.rb +6 -6
- data/examples/open_save_close/example_simple.rb +5 -5
- data/examples/open_save_close/example_unobtrusively.rb +4 -4
- data/lib/robust_excel_ole/address.rb +0 -4
- data/lib/robust_excel_ole/bookstore.rb +4 -28
- data/lib/robust_excel_ole/excel.rb +17 -22
- data/lib/robust_excel_ole/general.rb +11 -18
- data/lib/robust_excel_ole/range_owners.rb +17 -27
- data/lib/robust_excel_ole/reo_common.rb +7 -3
- data/lib/robust_excel_ole/version.rb +1 -1
- data/lib/robust_excel_ole/workbook.rb +178 -180
- data/lib/robust_excel_ole/worksheet.rb +7 -4
- data/robust_excel_ole.gemspec +6 -4
- data/spec/bookstore_spec.rb +38 -34
- data/spec/data/more_data/workbook.xls +0 -0
- data/spec/excel_spec.rb +89 -44
- data/spec/general_spec.rb +1 -0
- data/spec/range_spec.rb +7 -4
- data/spec/workbook_specs/workbook_close_spec.rb +2 -1
- data/spec/workbook_specs/workbook_misc_spec.rb +34 -18
- data/spec/workbook_specs/workbook_open_spec.rb +112 -71
- data/spec/workbook_specs/workbook_save_spec.rb +173 -5
- data/spec/workbook_specs/workbook_sheet_spec.rb +6 -42
- data/spec/workbook_specs/workbook_unobtr_spec.rb +9 -246
- data/spec/worksheet_spec.rb +21 -5
- metadata +12 -11
@@ -198,6 +198,7 @@ describe Workbook do
|
|
198
198
|
end
|
199
199
|
end
|
200
200
|
|
201
|
+
=begin
|
201
202
|
describe "default-visible" do
|
202
203
|
|
203
204
|
it "should keep the visibility of the open workbook" do
|
@@ -288,28 +289,28 @@ describe Workbook do
|
|
288
289
|
excel2 = book1.excel
|
289
290
|
excel2.should == excel1
|
290
291
|
excel2.Visible.should be false
|
291
|
-
book2.Windows(book2.Name).Visible.should be true
|
292
|
+
book2.Windows(book2.Name).Visible.should be true
|
292
293
|
end
|
293
294
|
|
294
295
|
it "should open the workbook visible if the workbook is new" do
|
295
296
|
book1 = Workbook.open(@simple_file1, :default => {:visible => true})
|
296
|
-
book1.visible.should be true
|
297
297
|
book1.excel.Visible.should be true
|
298
298
|
book1.Windows(book1.Name).Visible.should be true
|
299
|
+
book1.visible.should be true
|
299
300
|
end
|
300
301
|
|
301
302
|
it "should open the workbook invisible if the workbook is new" do
|
302
303
|
book1 = Workbook.open(@simple_file1, :default => {:visible => false})
|
303
|
-
book1.visible.should be false
|
304
304
|
book1.excel.Visible.should be false
|
305
305
|
book1.Windows(book1.Name).Visible.should be false
|
306
|
+
book1.visible.should be false
|
306
307
|
end
|
307
308
|
|
308
309
|
it "should open the workbook invisible per default if the workbook is new" do
|
309
310
|
book1 = Workbook.open(@simple_file1)
|
310
|
-
book1.visible.should be false
|
311
311
|
book1.excel.Visible.should be false
|
312
312
|
book1.Windows(book1.Name).Visible.should be true
|
313
|
+
book1.visible.should be false
|
313
314
|
end
|
314
315
|
|
315
316
|
it "should open the workbook visible if the old Excel is closed" do
|
@@ -322,9 +323,9 @@ describe Workbook do
|
|
322
323
|
excel1.close
|
323
324
|
book2 = Workbook.open(@simple_file1, :default => {:visible => true})
|
324
325
|
excel2 = book2.excel
|
325
|
-
book2.visible.should be true
|
326
|
-
excel2.Visible.should be true
|
327
326
|
book1.Windows(book1.Name).Visible.should be true
|
327
|
+
excel2.Visible.should be true
|
328
|
+
book2.visible.should be true
|
328
329
|
end
|
329
330
|
|
330
331
|
it "should open the workbook invisible if the old Excel is closed" do
|
@@ -337,13 +338,15 @@ describe Workbook do
|
|
337
338
|
excel1.close
|
338
339
|
book2 = Workbook.open(@simple_file1, :default => {:visible => false})
|
339
340
|
excel2 = book2.excel
|
340
|
-
book2.visible.should be false
|
341
341
|
excel2.Visible.should be false
|
342
342
|
book1.Windows(book1.Name).Visible.should be false
|
343
|
+
book2.visible.should be false
|
343
344
|
end
|
344
345
|
|
345
346
|
end
|
346
347
|
|
348
|
+
=end
|
349
|
+
|
347
350
|
describe "force-visible" do
|
348
351
|
|
349
352
|
it "should change the visibility of the workbooks" do
|
@@ -386,7 +389,7 @@ describe Workbook do
|
|
386
389
|
it "should set :visible to false" do
|
387
390
|
book1 = Workbook.open(@simple_file, :visible => false)
|
388
391
|
book1.excel.Visible.should be false
|
389
|
-
book1.Windows(book1.Name).Visible.should be
|
392
|
+
book1.Windows(book1.Name).Visible.should be true
|
390
393
|
book1.visible.should be false
|
391
394
|
end
|
392
395
|
|
@@ -418,7 +421,7 @@ describe Workbook do
|
|
418
421
|
excel1 = Excel.create
|
419
422
|
book1 = Workbook.open(@simple_file, :visible => false)
|
420
423
|
book1.excel.Visible.should be false
|
421
|
-
book1.Windows(book1.Name).Visible.should be
|
424
|
+
book1.Windows(book1.Name).Visible.should be true
|
422
425
|
book1.visible.should be false
|
423
426
|
end
|
424
427
|
|
@@ -469,7 +472,7 @@ describe Workbook do
|
|
469
472
|
book1 = Workbook.open(@simple_file)
|
470
473
|
book2 = Workbook.open(@different_file, :default_excel => :new, :visible => false)
|
471
474
|
book2.excel.Visible.should be false
|
472
|
-
book2.Windows(book2.Name).Visible.should be
|
475
|
+
book2.Windows(book2.Name).Visible.should be true
|
473
476
|
book2.visible.should be false
|
474
477
|
end
|
475
478
|
|
@@ -667,7 +670,7 @@ describe Workbook do
|
|
667
670
|
end
|
668
671
|
end
|
669
672
|
|
670
|
-
describe "
|
673
|
+
describe "namevalue_glob, set_namevalue_glob, [], []=" do
|
671
674
|
|
672
675
|
before do
|
673
676
|
@book1 = Workbook.open(@another_simple_file)
|
@@ -727,10 +730,10 @@ describe Workbook do
|
|
727
730
|
@book1.namevalue_glob("foo", :default => 1).should == 1
|
728
731
|
expect {
|
729
732
|
@book1.set_namevalue_glob("foo","bar")
|
730
|
-
}.to raise_error(
|
733
|
+
}.to raise_error(RangeNotEvaluatable, /cannot assign value to range named "foo"/)
|
731
734
|
expect {
|
732
735
|
@book1["foo"] = "bar"
|
733
|
-
}.to raise_error(
|
736
|
+
}.to raise_error(RangeNotEvaluatable, /cannot assign value to range named "foo"/)
|
734
737
|
@book1.namevalue_glob("empty", :default => 1).should be_nil
|
735
738
|
end
|
736
739
|
|
@@ -754,7 +757,7 @@ describe Workbook do
|
|
754
757
|
@book1.namevalue_glob("localname").should == "simple"
|
755
758
|
end
|
756
759
|
|
757
|
-
it "should color the cell" do
|
760
|
+
it "should color the cell (deprecated)" do
|
758
761
|
@book1.set_namevalue_glob("new", "bar")
|
759
762
|
@book1.Names.Item("new").RefersToRange.Interior.ColorIndex.should == -4142
|
760
763
|
@book1.set_namevalue_glob("new", "bar", :color => 4)
|
@@ -768,7 +771,20 @@ describe Workbook do
|
|
768
771
|
#book2.Names.Item("new").RefersToRange.Interior.ColorIndex.should == 42
|
769
772
|
end
|
770
773
|
|
771
|
-
it "should
|
774
|
+
it "should color the cell" do
|
775
|
+
@book1.set_namevalue_glob("new", "bar")
|
776
|
+
@book1.Names.Item("new").RefersToRange.Interior.ColorIndex.should == -4142
|
777
|
+
@book1.color_if_modified = 4
|
778
|
+
@book1.set_namevalue_glob("new", "bar")
|
779
|
+
@book1.Names.Item("new").RefersToRange.Interior.ColorIndex.should == 4
|
780
|
+
@book1["new"].should == "bar"
|
781
|
+
@book1["new"] = "bar"
|
782
|
+
@book1.Names.Item("new").RefersToRange.Interior.ColorIndex.should == 42
|
783
|
+
@book1.save
|
784
|
+
@book1.close
|
785
|
+
end
|
786
|
+
|
787
|
+
it "should save without color (deprecated)" do
|
772
788
|
@book1.set_namevalue_glob("new", "bar", :color => 4)
|
773
789
|
@book1.Names.Item("new").RefersToRange.Interior.ColorIndex.should == 4
|
774
790
|
@book1.save(:discoloring => true)
|
@@ -916,7 +932,7 @@ describe Workbook do
|
|
916
932
|
excel1 = Excel.new(:reuse => false, :visible => false)
|
917
933
|
book1 = Workbook.open(@simple_file, :visible => false)
|
918
934
|
excel1.Visible.should be false
|
919
|
-
book1.Windows(book1.Name).Visible.should be
|
935
|
+
book1.Windows(book1.Name).Visible.should be true
|
920
936
|
book1.visible.should be false
|
921
937
|
end
|
922
938
|
|
@@ -985,7 +1001,7 @@ describe Workbook do
|
|
985
1001
|
excel1 = Excel.new(:reuse => false, :visible => false)
|
986
1002
|
book1 = Workbook.open(@simple_file, :visible => false)
|
987
1003
|
excel1.Visible.should be false
|
988
|
-
book1.Windows(book1.Name).Visible.should be
|
1004
|
+
book1.Windows(book1.Name).Visible.should be true
|
989
1005
|
book1.visible.should be false
|
990
1006
|
excel1.visible = true
|
991
1007
|
book2 = Workbook.open(@different_file)
|
@@ -1035,7 +1051,7 @@ describe Workbook do
|
|
1035
1051
|
@book2.visible = false
|
1036
1052
|
@book2.Saved.should be true
|
1037
1053
|
@book2.excel.Visible.should be false
|
1038
|
-
@book2.Windows(@book2.Name).Visible.should be
|
1054
|
+
@book2.Windows(@book2.Name).Visible.should be true
|
1039
1055
|
@book2.visible.should be false
|
1040
1056
|
end
|
1041
1057
|
|
@@ -32,7 +32,9 @@ describe Workbook do
|
|
32
32
|
@simple_file_other_path1 = @simple_file_other_path
|
33
33
|
@another_simple_file1 = @another_simple_file
|
34
34
|
@simple_file_direct = File.join(File.dirname(__FILE__), 'data') + '/workbook.xls'
|
35
|
-
|
35
|
+
#@simple_file_via_network = File.join('N:/', 'data') + '/workbook.xls'
|
36
|
+
@simple_file_network_path = "N:/data/workbook.xls"
|
37
|
+
@simple_file_hostname_share_path = '//DESKTOP-A3C5CJ6/spec/data/workbook.xls'
|
36
38
|
|
37
39
|
end
|
38
40
|
|
@@ -43,7 +45,7 @@ describe Workbook do
|
|
43
45
|
|
44
46
|
describe "connecting to unknown workbooks" do
|
45
47
|
|
46
|
-
|
48
|
+
context "with none workbook" do
|
47
49
|
|
48
50
|
it "should open one new Excel with the worbook" do
|
49
51
|
book1 = Workbook.open(@simple_file1)
|
@@ -114,7 +116,7 @@ describe Workbook do
|
|
114
116
|
before do
|
115
117
|
ole_e1 = WIN32OLE.new('Excel.Application')
|
116
118
|
ws = ole_e1.Workbooks
|
117
|
-
abs_filename = General.absolute_path(@simple_file1)
|
119
|
+
abs_filename = General.absolute_path(@simple_file1)
|
118
120
|
@ole_wb = ws.Open(abs_filename)
|
119
121
|
end
|
120
122
|
|
@@ -124,6 +126,7 @@ describe Workbook do
|
|
124
126
|
book.should be_alive
|
125
127
|
book.should be_a Workbook
|
126
128
|
book.excel.ole_excel.Hwnd.should == @ole_wb.Application.Hwnd
|
129
|
+
Excel.excels_number.should == 1
|
127
130
|
end
|
128
131
|
end
|
129
132
|
|
@@ -150,6 +153,18 @@ describe Workbook do
|
|
150
153
|
}.to raise_error(WorkbookNotSaved, /workbook is already open but not saved: "workbook.xls"/)
|
151
154
|
end
|
152
155
|
|
156
|
+
it "should let the workbook open, if :if_unsaved is :save" do
|
157
|
+
@ole_wb.Worksheets.Add
|
158
|
+
sheet_num = @ole_wb.Worksheets.Count
|
159
|
+
new_book = Workbook.open(@simple_file1, :if_unsaved => :save)
|
160
|
+
new_book.should be_alive
|
161
|
+
new_book.should be_a Workbook
|
162
|
+
new_book.Worksheets.Count.should == sheet_num
|
163
|
+
new_book.close
|
164
|
+
new_book2 = Workbook.open(@simple_file1)
|
165
|
+
new_book2.Worksheets.Count.should == sheet_num
|
166
|
+
end
|
167
|
+
|
153
168
|
it "should let the workbook open, if :if_unsaved is :accept" do
|
154
169
|
@ole_wb.Worksheets.Add
|
155
170
|
sheet_num = @ole_wb.Worksheets.Count
|
@@ -157,6 +172,10 @@ describe Workbook do
|
|
157
172
|
new_book.should be_alive
|
158
173
|
new_book.should be_a Workbook
|
159
174
|
new_book.Worksheets.Count.should == sheet_num
|
175
|
+
new_book.Saved.should be false
|
176
|
+
new_book.close(:if_unsaved => :forget)
|
177
|
+
new_book2 = Workbook.open(@simple_file1)
|
178
|
+
new_book2.Worksheets.Count.should == sheet_num - 1
|
160
179
|
end
|
161
180
|
|
162
181
|
it "should close the workbook, if :if_unsaved is :forget" do
|
@@ -175,11 +194,11 @@ describe Workbook do
|
|
175
194
|
before do
|
176
195
|
ole_e1 = WIN32OLE.new('Excel.Application')
|
177
196
|
ws1 = ole_e1.Workbooks
|
178
|
-
abs_filename1 = General.absolute_path(@simple_file1)
|
197
|
+
abs_filename1 = General.absolute_path(@simple_file1)
|
179
198
|
@ole_wb1 = ws1.Open(abs_filename1)
|
180
199
|
ole_e2 = WIN32OLE.new('Excel.Application')
|
181
200
|
ws2 = ole_e2.Workbooks
|
182
|
-
abs_filename2 = General.absolute_path(@different_file1)
|
201
|
+
abs_filename2 = General.absolute_path(@different_file1)
|
183
202
|
@ole_wb2 = ws2.Open(abs_filename2)
|
184
203
|
end
|
185
204
|
|
@@ -187,6 +206,7 @@ describe Workbook do
|
|
187
206
|
Workbook.open(@simple_file1) do |book|
|
188
207
|
book.filename.should == @simple_file1
|
189
208
|
book.excel.ole_excel.Hwnd.should == @ole_wb1.Application.Hwnd
|
209
|
+
Excel.excels_number.should == 2
|
190
210
|
end
|
191
211
|
end
|
192
212
|
|
@@ -194,13 +214,12 @@ describe Workbook do
|
|
194
214
|
Workbook.open(@different_file1) do |book|
|
195
215
|
book.filename.should == @different_file1
|
196
216
|
book.excel.ole_excel.Hwnd.should == @ole_wb2.Application.Hwnd
|
217
|
+
Excel.excels_number.should == 2
|
197
218
|
end
|
198
219
|
end
|
199
220
|
|
200
221
|
end
|
201
222
|
|
202
|
-
|
203
|
-
|
204
223
|
end
|
205
224
|
|
206
225
|
describe "with already open Excel instances and an open unsaved workbook" do
|
@@ -209,7 +228,7 @@ describe Workbook do
|
|
209
228
|
@ole_excel1 = WIN32OLE.new('Excel.Application')
|
210
229
|
@ole_excel2 = WIN32OLE.new('Excel.Application')
|
211
230
|
#@ole_workbook1 = @ole_excel1.Workbooks.Open(@simple_file1, { 'ReadOnly' => false })
|
212
|
-
abs_filename = General.absolute_path(@simple_file1)
|
231
|
+
abs_filename = General.absolute_path(@simple_file1)
|
213
232
|
@ole_workbook1 = @ole_excel1.Workbooks.Open(abs_filename, nil, false)
|
214
233
|
@ole_workbook1.Worksheets.Add
|
215
234
|
end
|
@@ -332,6 +351,14 @@ describe Workbook do
|
|
332
351
|
|
333
352
|
context "with :force => {:excel}" do
|
334
353
|
|
354
|
+
it "should raise if excel is not alive" do
|
355
|
+
excel1 = Excel.create
|
356
|
+
excel1.close
|
357
|
+
expect{
|
358
|
+
book1 = Workbook.open(@simple_file1, :force => {:excel => excel1})
|
359
|
+
}.to raise_error(ExcelREOError, "excel is not alive")
|
360
|
+
end
|
361
|
+
|
335
362
|
it "should open in a provided Excel" do
|
336
363
|
book1 = Workbook.open(@simple_file1, :force => {:excel => :new})
|
337
364
|
book2 = Workbook.open(@simple_file1, :force => {:excel => :new})
|
@@ -354,11 +381,9 @@ describe Workbook do
|
|
354
381
|
|
355
382
|
describe "network paths" do
|
356
383
|
|
357
|
-
it "should open the
|
358
|
-
book1 = Workbook.open(@
|
359
|
-
|
360
|
-
book2 = Workbook.open(@simple_file_via_network)
|
361
|
-
}.to_not raise_error
|
384
|
+
it "should open the workbook via network path" do
|
385
|
+
book1 = Workbook.open(@simple_file_hostname_share_path)
|
386
|
+
book2 = Workbook.open(@simple_file_network_path)
|
362
387
|
book1.should === book2
|
363
388
|
book1.Fullname.should == book2.Fullname
|
364
389
|
end
|
@@ -371,7 +396,7 @@ describe Workbook do
|
|
371
396
|
|
372
397
|
before do
|
373
398
|
@book = Workbook.open(@simple_file1)
|
374
|
-
abs_filename = General.absolute_path(@simple_file1)
|
399
|
+
abs_filename = General.absolute_path(@simple_file1)
|
375
400
|
@ole_book = WIN32OLE.connect(abs_filename)
|
376
401
|
end
|
377
402
|
|
@@ -387,7 +412,7 @@ describe Workbook do
|
|
387
412
|
|
388
413
|
it "should yield different Workbook objects for different Excel books" do
|
389
414
|
book3 = Workbook.open(@different_file1)
|
390
|
-
abs_filename2 = General.absolute_path(@different_file1)
|
415
|
+
abs_filename2 = General.absolute_path(@different_file1)
|
391
416
|
ole_book2 = WIN32OLE.connect(abs_filename2)
|
392
417
|
book2 = Workbook.new(ole_book2)
|
393
418
|
book2.should_not === @book
|
@@ -483,7 +508,7 @@ describe Workbook do
|
|
483
508
|
it "should uplift an open unknown workbook" do
|
484
509
|
ole_excel = WIN32OLE.new('Excel.Application')
|
485
510
|
ws = ole_excel.Workbooks
|
486
|
-
abs_filename = General.absolute_path(@simple_file1)
|
511
|
+
abs_filename = General.absolute_path(@simple_file1)
|
487
512
|
ole_workbook = ws.Open(abs_filename)
|
488
513
|
new_book = Workbook.new(ole_workbook)
|
489
514
|
new_book.Fullname.should == ole_workbook.Fullname
|
@@ -493,7 +518,7 @@ describe Workbook do
|
|
493
518
|
it "should uplift an open unknown workbook and make it visible" do
|
494
519
|
ole_excel = WIN32OLE.new('Excel.Application')
|
495
520
|
ws = ole_excel.Workbooks
|
496
|
-
abs_filename = General.absolute_path(@simple_file1)
|
521
|
+
abs_filename = General.absolute_path(@simple_file1)
|
497
522
|
ole_workbook = ws.Open(abs_filename)
|
498
523
|
new_book = Workbook.new(ole_workbook, :visible => true)
|
499
524
|
new_book.Fullname.should == ole_workbook.Fullname
|
@@ -505,7 +530,7 @@ describe Workbook do
|
|
505
530
|
it "should uplift an open unknown workbook and make it visible and readonly" do
|
506
531
|
ole_excel = WIN32OLE.new('Excel.Application')
|
507
532
|
ws = ole_excel.Workbooks
|
508
|
-
abs_filename = General.absolute_path(@simple_file1)
|
533
|
+
abs_filename = General.absolute_path(@simple_file1)
|
509
534
|
ole_workbook = ws.Open(abs_filename)
|
510
535
|
new_book = Workbook.new(ole_workbook, :visible => true)
|
511
536
|
new_book.Fullname.should == ole_workbook.Fullname
|
@@ -607,22 +632,22 @@ describe Workbook do
|
|
607
632
|
end
|
608
633
|
|
609
634
|
it "should fetch the workbook" do
|
610
|
-
|
611
|
-
new_book = Workbook.new(
|
635
|
+
ole_workbook = @book.ole_workbook
|
636
|
+
new_book = Workbook.new(ole_workbook)
|
612
637
|
new_book.should be_a Workbook
|
613
638
|
new_book.should be_alive
|
614
639
|
new_book.should == @book
|
615
640
|
new_book.filename.should == @book.filename
|
616
641
|
new_book.excel.should == @book.excel
|
617
642
|
new_book.excel.Visible.should be false
|
618
|
-
new_book.excel.DisplayAlerts.should be false
|
643
|
+
#new_book.excel.DisplayAlerts.should be false
|
619
644
|
new_book.should === @book
|
620
645
|
new_book.close
|
621
646
|
end
|
622
647
|
|
623
648
|
it "should fetch the workbook" do
|
624
|
-
|
625
|
-
new_book = Workbook.new(
|
649
|
+
ole_workbook = @book.ole_workbook
|
650
|
+
new_book = Workbook.new(ole_workbook, :visible => true)
|
626
651
|
new_book.should be_a Workbook
|
627
652
|
new_book.should be_alive
|
628
653
|
new_book.should == @book
|
@@ -635,8 +660,8 @@ describe Workbook do
|
|
635
660
|
end
|
636
661
|
|
637
662
|
it "should yield an identical Workbook and set visible value" do
|
638
|
-
|
639
|
-
new_book = Workbook.new(
|
663
|
+
ole_workbook = @book.ole_workbook
|
664
|
+
new_book = Workbook.new(ole_workbook, :visible => true)
|
640
665
|
new_book.excel.displayalerts = true
|
641
666
|
new_book.should be_a Workbook
|
642
667
|
new_book.should be_alive
|
@@ -703,6 +728,26 @@ describe Workbook do
|
|
703
728
|
book2.close
|
704
729
|
end
|
705
730
|
|
731
|
+
it "should yield identical Workbook objects for identical Excel books when reopening with current excel" do
|
732
|
+
@book.should be_alive
|
733
|
+
@book.close
|
734
|
+
@book.should_not be_alive
|
735
|
+
book2 = Workbook.open(@simple_file1, :default => {:excel => :current})
|
736
|
+
book2.should === @book
|
737
|
+
book2.should be_alive
|
738
|
+
book2.close
|
739
|
+
end
|
740
|
+
|
741
|
+
it "should yield identical Workbook objects for identical Excel books when reopening with current excel" do
|
742
|
+
@book.should be_alive
|
743
|
+
@book.close
|
744
|
+
@book.should_not be_alive
|
745
|
+
book2 = Workbook.open(@simple_file1, :force => {:excel => :current})
|
746
|
+
book2.should === @book
|
747
|
+
book2.should be_alive
|
748
|
+
book2.close
|
749
|
+
end
|
750
|
+
|
706
751
|
it "should yield identical Workbook objects when reopening and the Excel is closed" do
|
707
752
|
@book.should be_alive
|
708
753
|
@book.close
|
@@ -887,14 +932,14 @@ describe Workbook do
|
|
887
932
|
book4.should be_alive
|
888
933
|
book4.should be_a Workbook
|
889
934
|
book4.excel.should == book2.excel
|
890
|
-
|
935
|
+
book4.Readonly.should == true
|
891
936
|
book4.should_not == book2
|
892
937
|
book4.close
|
893
938
|
book5 = Workbook.open(@simple_file1, :force => {:excel => book2})
|
894
939
|
book5.should be_alive
|
895
940
|
book5.should be_a Workbook
|
896
941
|
book5.excel.should == book2.excel
|
897
|
-
|
942
|
+
book5.Readonly.should == true
|
898
943
|
book5.should_not == book2
|
899
944
|
book5.close
|
900
945
|
book3.close
|
@@ -1043,14 +1088,14 @@ describe Workbook do
|
|
1043
1088
|
book4.should be_alive
|
1044
1089
|
book4.should be_a Workbook
|
1045
1090
|
book4.excel.should == book2.excel
|
1046
|
-
|
1091
|
+
book4.Readonly.should == true
|
1047
1092
|
book4.should_not == book2
|
1048
1093
|
book4.close
|
1049
1094
|
book5 = Workbook.open(@simple_file1, :excel => book2)
|
1050
1095
|
book5.should be_alive
|
1051
1096
|
book5.should be_a Workbook
|
1052
1097
|
book5.excel.should == book2.excel
|
1053
|
-
|
1098
|
+
book5.Readonly.should == true
|
1054
1099
|
book5.should_not == book2
|
1055
1100
|
book5.close
|
1056
1101
|
book3.close
|
@@ -1201,14 +1246,14 @@ describe Workbook do
|
|
1201
1246
|
book4.should be_alive
|
1202
1247
|
book4.should be_a Workbook
|
1203
1248
|
book4.excel.should == book2.excel
|
1204
|
-
|
1249
|
+
book4.Readonly.should == true
|
1205
1250
|
book4.should_not == book2
|
1206
1251
|
book4.close
|
1207
1252
|
book5 = Workbook.open(@simple_file1, :force_excel => book2)
|
1208
1253
|
book5.should be_alive
|
1209
1254
|
book5.should be_a Workbook
|
1210
1255
|
book5.excel.should == book2.excel
|
1211
|
-
|
1256
|
+
book5.Readonly.should == true
|
1212
1257
|
book5.should_not == book2
|
1213
1258
|
book5.close
|
1214
1259
|
book3.close
|
@@ -1920,6 +1965,7 @@ describe Workbook do
|
|
1920
1965
|
@book = Workbook.open(@simple_file)
|
1921
1966
|
@sheet = @book.sheet(1)
|
1922
1967
|
@book.add_sheet(@sheet, :as => 'a_name')
|
1968
|
+
@book.visible = true
|
1923
1969
|
end
|
1924
1970
|
|
1925
1971
|
after do
|
@@ -1953,13 +1999,22 @@ describe Workbook do
|
|
1953
1999
|
|
1954
2000
|
it "should open the new book and close the unsaved book, if user answers 'yes'" do
|
1955
2001
|
# "Yes" is the default. --> language independent
|
1956
|
-
|
2002
|
+
#@key_sender.puts "{enter}"
|
1957
2003
|
@new_book = Workbook.open(@simple_file1, :if_unsaved => :alert)
|
1958
2004
|
@new_book.should be_alive
|
1959
2005
|
@new_book.filename.downcase.should == @simple_file1.downcase
|
1960
2006
|
@book.should_not be_alive
|
1961
2007
|
end
|
1962
2008
|
|
2009
|
+
it "should open the new book and close the unsaved book, if user answers 'yes'" do
|
2010
|
+
# "Yes" is the default. --> language independent
|
2011
|
+
@key_sender.puts "{enter}"
|
2012
|
+
@new_book = Workbook.open(@simple_file1, :if_unsaved => :excel)
|
2013
|
+
@new_book.should be_alive
|
2014
|
+
@new_book.filename.downcase.should == @simple_file1.downcase
|
2015
|
+
@book.should_not be_alive
|
2016
|
+
end
|
2017
|
+
|
1963
2018
|
it "should not open the new book and not close the unsaved book, if user answers 'no'" do
|
1964
2019
|
# "No" is right to "Yes" (the default). --> language independent
|
1965
2020
|
# strangely, in the "no" case, the question will sometimes be repeated three times
|
@@ -1973,19 +2028,11 @@ describe Workbook do
|
|
1973
2028
|
@book.should be_alive
|
1974
2029
|
end
|
1975
2030
|
|
1976
|
-
|
1977
|
-
# "Yes" is the default. --> language independent
|
1978
|
-
@key_sender.puts "{enter}"
|
1979
|
-
@new_book = Workbook.open(@simple_file1, :if_unsaved => :excel)
|
1980
|
-
@new_book.should be_alive
|
1981
|
-
@new_book.filename.downcase.should == @simple_file1.downcase
|
1982
|
-
#@book.should_not be_alive
|
1983
|
-
end
|
2031
|
+
|
1984
2032
|
|
1985
2033
|
it "should not open the new book and not close the unsaved book, if user answers 'no'" do
|
1986
2034
|
# "No" is right to "Yes" (the default). --> language independent
|
1987
|
-
# strangely, in the "no" case, the question will sometimes be repeated three
|
1988
|
-
#@book.excel.Visible = true
|
2035
|
+
# strangely, in the "no" case, the question will sometimes be repeated three time
|
1989
2036
|
@key_sender.puts "{right}{enter}"
|
1990
2037
|
@key_sender.puts "{right}{enter}"
|
1991
2038
|
@key_sender.puts "{right}{enter}"
|
@@ -2055,7 +2102,7 @@ describe Workbook do
|
|
2055
2102
|
if :if_obstructed is :close_if_saved" do
|
2056
2103
|
expect{
|
2057
2104
|
new_book = Workbook.open(@simple_file1, :if_obstructed => :close_if_saved)
|
2058
|
-
}.to raise_error(WorkbookBlocked, /
|
2105
|
+
}.to raise_error(WorkbookBlocked, /same name in a different path/)
|
2059
2106
|
@book.save
|
2060
2107
|
new_book = Workbook.open(@simple_file1, :if_obstructed => :close_if_saved)
|
2061
2108
|
@book.should_not be_alive
|
@@ -2222,7 +2269,7 @@ describe Workbook do
|
|
2222
2269
|
|
2223
2270
|
context "with :read_only" do
|
2224
2271
|
|
2225
|
-
it "should reopen the book with writable
|
2272
|
+
it "should not reopen the book with writable" do
|
2226
2273
|
book = Workbook.open(@simple_file1, :read_only => true)
|
2227
2274
|
book.ReadOnly.should be true
|
2228
2275
|
book.should be_alive
|
@@ -2234,27 +2281,10 @@ describe Workbook do
|
|
2234
2281
|
new_book.ReadOnly.should be false
|
2235
2282
|
new_book.should be_alive
|
2236
2283
|
book.should be_alive
|
2237
|
-
new_book.should == book
|
2238
|
-
new_sheet = new_book.sheet(1)
|
2239
|
-
new_cell_value = new_sheet[1,1].Value
|
2240
|
-
new_cell_value.should == old_cell_value
|
2284
|
+
new_book.should == book
|
2241
2285
|
end
|
2242
2286
|
|
2243
|
-
it "should not
|
2244
|
-
book = Workbook.open(@simple_file1, :read_only => false)
|
2245
|
-
book.ReadOnly.should be false
|
2246
|
-
book.should be_alive
|
2247
|
-
sheet = book.sheet(1)
|
2248
|
-
old_cell_value = sheet[1,1].Value
|
2249
|
-
sheet[1,1] = sheet[1,1].Value == "foo" ? "bar" : "foo"
|
2250
|
-
book.Saved.should be false
|
2251
|
-
new_book = Workbook.open(@simple_file1, :read_only => true, :if_unsaved => :accept)
|
2252
|
-
new_book.ReadOnly.should be true
|
2253
|
-
new_book.Saved.should be true
|
2254
|
-
new_book.should == book
|
2255
|
-
end
|
2256
|
-
|
2257
|
-
it "should reopen the book with writable in the same Excel instance (unsaved changes from readonly will not be saved)" do
|
2287
|
+
it "should not reopen the book with writable" do
|
2258
2288
|
book = Workbook.open(@simple_file1, :read_only => true)
|
2259
2289
|
book.ReadOnly.should be true
|
2260
2290
|
book.should be_alive
|
@@ -2262,28 +2292,39 @@ describe Workbook do
|
|
2262
2292
|
old_cell_value = sheet[1,1].Value
|
2263
2293
|
sheet[1,1] = sheet[1,1].Value == "foo" ? "bar" : "foo"
|
2264
2294
|
book.Saved.should be false
|
2265
|
-
new_book = Workbook.open(@simple_file1, :
|
2295
|
+
new_book = Workbook.open(@simple_file1, :read_only => false, :if_unsaved => :forget)
|
2266
2296
|
new_book.ReadOnly.should be false
|
2267
2297
|
new_book.should be_alive
|
2268
|
-
book.
|
2269
|
-
new_book.
|
2298
|
+
book.should_not be_alive
|
2299
|
+
new_book.should_not == book
|
2270
2300
|
new_sheet = new_book.sheet(1)
|
2271
2301
|
new_cell_value = new_sheet[1,1].Value
|
2272
2302
|
new_cell_value.should == old_cell_value
|
2273
2303
|
end
|
2274
2304
|
|
2275
|
-
it "should reopen the book
|
2276
|
-
book = Workbook.open(@simple_file1, :
|
2305
|
+
it "should raise an error when trying to reopen the book as read_only while the writable book had unsaved changes" do
|
2306
|
+
book = Workbook.open(@simple_file1, :read_only => false)
|
2277
2307
|
book.ReadOnly.should be false
|
2278
2308
|
book.should be_alive
|
2279
2309
|
sheet = book.sheet(1)
|
2280
2310
|
old_cell_value = sheet[1,1].Value
|
2281
2311
|
sheet[1,1] = sheet[1,1].Value == "foo" ? "bar" : "foo"
|
2282
2312
|
book.Saved.should be false
|
2283
|
-
|
2313
|
+
expect{
|
2314
|
+
Workbook.open(@simple_file1, :read_only => true, :if_unsaved => :accept)
|
2315
|
+
}.to raise_error(OptionInvalid)
|
2316
|
+
end
|
2317
|
+
|
2318
|
+
it "should not raise an error when trying to reopen the book as read_only while the writable book had unsaved changes" do
|
2319
|
+
book = Workbook.open(@simple_file1, :read_only => false)
|
2320
|
+
book.ReadOnly.should be false
|
2321
|
+
book.should be_alive
|
2322
|
+
sheet = book.sheet(1)
|
2323
|
+
old_cell_value = sheet[1,1].Value
|
2324
|
+
sheet[1,1] = sheet[1,1].Value == "foo" ? "bar" : "foo"
|
2325
|
+
book.Saved.should be false
|
2326
|
+
new_book = Workbook.open(@simple_file1, :read_only => true, :if_unsaved => :save)
|
2284
2327
|
new_book.ReadOnly.should be true
|
2285
|
-
new_book.Saved.should be true
|
2286
|
-
new_book.should == book
|
2287
2328
|
new_sheet = new_book.sheet(1)
|
2288
2329
|
new_cell_value = new_sheet[1,1].Value
|
2289
2330
|
new_cell_value.should_not == old_cell_value
|