robust_excel_ole 1.1.4 → 1.1.5
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.
- checksums.yaml +4 -4
- data/Changelog +13 -0
- data/README.rdoc +107 -73
- data/{README_excel.rdoc → docs/README_excel.rdoc} +2 -0
- data/{README_open.rdoc → docs/README_open.rdoc} +12 -16
- data/{README_ranges.rdoc → docs/README_ranges.rdoc} +1 -1
- data/{README_save_close.rdoc → docs/README_save_close.rdoc} +0 -0
- data/{README_sheet.rdoc → docs/README_sheet.rdoc} +0 -0
- data/examples/open_save_close/example_control_to_excel.rb +3 -3
- data/examples/open_save_close/example_default_excel.rb +2 -2
- data/examples/open_save_close/example_force_excel.rb +2 -2
- data/examples/open_save_close/example_if_obstructed_closeifsaved.rb +2 -2
- data/examples/open_save_close/example_if_obstructed_forget.rb +2 -2
- data/examples/open_save_close/example_if_obstructed_save.rb +2 -2
- data/examples/open_save_close/example_if_unsaved_accept.rb +3 -3
- data/examples/open_save_close/example_if_unsaved_forget.rb +7 -3
- data/examples/open_save_close/example_if_unsaved_forget_more.rb +1 -1
- data/examples/open_save_close/example_read_only.rb +2 -2
- data/examples/open_save_close/example_rename_cells.rb +2 -2
- data/examples/open_save_close/example_reuse.rb +2 -2
- data/examples/open_save_close/example_simple.rb +1 -1
- data/examples/open_save_close/example_unobtrusively.rb +2 -2
- data/lib/robust_excel_ole/book.rb +75 -76
- data/lib/robust_excel_ole/bookstore.rb +9 -9
- data/lib/robust_excel_ole/excel.rb +5 -5
- data/lib/robust_excel_ole/general.rb +11 -4
- data/lib/robust_excel_ole/reo_common.rb +3 -0
- data/lib/robust_excel_ole/version.rb +1 -1
- data/robust_excel_ole.gemspec +2 -2
- data/spec/book_spec.rb +67 -63
- data/spec/book_specs/book_close_spec.rb +12 -10
- data/spec/book_specs/book_misc_spec.rb +279 -279
- data/spec/book_specs/book_open_spec.rb +258 -105
- data/spec/book_specs/book_save_spec.rb +28 -28
- data/spec/book_specs/book_unobtr_spec.rb +862 -164
- data/spec/bookstore_spec.rb +22 -22
- data/spec/data/another_workbook.xls +0 -0
- data/spec/data/different_workbook.xls +0 -0
- data/spec/data/workbook.xls +0 -0
- data/spec/excel_spec.rb +256 -254
- data/spec/general_spec.rb +7 -7
- data/spec/ruby1.8.6_rspec2.14/book_spec.rb +1421 -0
- data/spec/ruby1.8.6_rspec2.14/book_specs/book_all_spec.rb +22 -0
- data/spec/ruby1.8.6_rspec2.14/book_specs/book_close_spec.rb +252 -0
- data/spec/ruby1.8.6_rspec2.14/book_specs/book_misc_spec.rb +1070 -0
- data/spec/ruby1.8.6_rspec2.14/book_specs/book_open_spec.rb +1855 -0
- data/spec/ruby1.8.6_rspec2.14/book_specs/book_save_spec.rb +514 -0
- data/spec/ruby1.8.6_rspec2.14/book_specs/book_sheet_spec.rb +395 -0
- data/spec/ruby1.8.6_rspec2.14/book_specs/book_subclass_spec.rb +51 -0
- data/spec/ruby1.8.6_rspec2.14/book_specs/book_unobtr_spec.rb +1737 -0
- data/spec/ruby1.8.6_rspec2.14/bookstore_spec.rb +495 -0
- data/spec/ruby1.8.6_rspec2.14/cell_spec.rb +76 -0
- data/spec/ruby1.8.6_rspec2.14/cygwin_spec.rb +42 -0
- data/spec/ruby1.8.6_rspec2.14/excel_spec.rb +1820 -0
- data/spec/ruby1.8.6_rspec2.14/general_spec.rb +212 -0
- data/spec/ruby1.8.6_rspec2.14/range_spec.rb +131 -0
- data/spec/ruby1.8.6_rspec2.14/reo_common_spec.rb +130 -0
- data/spec/ruby1.8.6_rspec2.14/sheet_spec.rb +663 -0
- data/spec/ruby1.8.6_rspec2.14/spec_helper.rb +35 -0
- data/spec/sheet_spec.rb +2 -2
- metadata +28 -12
- data/README_detail.rdoc +0 -852
- data/README_development.rdoc +0 -5
@@ -29,6 +29,7 @@ describe Book do
|
|
29
29
|
@simple_file_xlsx = @dir + '/workbook.xlsx'
|
30
30
|
@simple_file1 = @simple_file
|
31
31
|
@different_file1 = @different_file
|
32
|
+
@simple_file_other_path1 = @simple_file_other_path
|
32
33
|
end
|
33
34
|
|
34
35
|
after do
|
@@ -36,6 +37,40 @@ describe Book do
|
|
36
37
|
#rm_tmp(@dir)
|
37
38
|
end
|
38
39
|
|
40
|
+
describe "simple open" do
|
41
|
+
|
42
|
+
it "should simply open" do
|
43
|
+
book = Workbook.open(@simple_file, :v => true, :f => {:e => :new})
|
44
|
+
end
|
45
|
+
|
46
|
+
end
|
47
|
+
|
48
|
+
describe "new" do
|
49
|
+
|
50
|
+
it "should simply create a new one" do
|
51
|
+
book = Workbook.new(@simple_file)
|
52
|
+
book.should be_alive
|
53
|
+
book.should be_a Book
|
54
|
+
end
|
55
|
+
|
56
|
+
it "should set options" do
|
57
|
+
book = Workbook.new(@simple_file, :visible => true, :read_only => true, :force => {:excel => :new})
|
58
|
+
book.should be_alive
|
59
|
+
book.should be_a Book
|
60
|
+
book.excel.Visible.should be true
|
61
|
+
book.Windows(book.Name).Visible.should be true
|
62
|
+
book.ReadOnly.should be true
|
63
|
+
book2 = Workbook.new(@different_file, :force => {:excel => :new}, :v => true)
|
64
|
+
book2.should be_alive
|
65
|
+
book2.should be_a Book
|
66
|
+
book2.excel.Visible.should be true
|
67
|
+
book2.Windows(book2.Name).Visible.should be true
|
68
|
+
book2.ReadOnly.should be false
|
69
|
+
book2.excel.should_not == book.excel
|
70
|
+
end
|
71
|
+
|
72
|
+
end
|
73
|
+
|
39
74
|
describe "open" do
|
40
75
|
|
41
76
|
context "with calculation mode" do
|
@@ -111,8 +146,8 @@ describe Book do
|
|
111
146
|
book2.should be_a Book
|
112
147
|
book2.excel.should_not == @book.excel
|
113
148
|
book2.should_not == @book
|
114
|
-
@book.Readonly.should
|
115
|
-
book2.Readonly.should
|
149
|
+
@book.Readonly.should be false
|
150
|
+
book2.Readonly.should be true
|
116
151
|
book2.close
|
117
152
|
end
|
118
153
|
end
|
@@ -135,8 +170,8 @@ describe Book do
|
|
135
170
|
new_book.should == @book
|
136
171
|
new_book.filename.should == @book.filename
|
137
172
|
new_book.excel.should == @book.excel
|
138
|
-
new_book.excel.Visible.should
|
139
|
-
new_book.excel.DisplayAlerts.should
|
173
|
+
new_book.excel.Visible.should be false
|
174
|
+
new_book.excel.DisplayAlerts.should be false
|
140
175
|
new_book.should === @book
|
141
176
|
new_book.close
|
142
177
|
end
|
@@ -149,8 +184,8 @@ describe Book do
|
|
149
184
|
new_book.should == @book
|
150
185
|
new_book.filename.should == @book.filename
|
151
186
|
new_book.excel.should == @book.excel
|
152
|
-
new_book.excel.Visible.should
|
153
|
-
new_book.excel.DisplayAlerts.should
|
187
|
+
new_book.excel.Visible.should be true
|
188
|
+
new_book.excel.DisplayAlerts.should be true
|
154
189
|
new_book.should === @book
|
155
190
|
new_book.close
|
156
191
|
end
|
@@ -165,8 +200,8 @@ describe Book do
|
|
165
200
|
new_book.filename.should == @book.filename
|
166
201
|
new_book.excel.should == @book.excel
|
167
202
|
new_book.should === @book
|
168
|
-
new_book.excel.Visible.should
|
169
|
-
new_book.excel.DisplayAlerts.should
|
203
|
+
new_book.excel.Visible.should be true
|
204
|
+
new_book.excel.DisplayAlerts.should be true
|
170
205
|
new_book.close
|
171
206
|
end
|
172
207
|
|
@@ -252,7 +287,8 @@ describe Book do
|
|
252
287
|
@book.close
|
253
288
|
@book.should_not be_alive
|
254
289
|
book2 = Book.open(@simple_file1, :force => {:excel => new_excel})
|
255
|
-
|
290
|
+
#@book.should be_alive
|
291
|
+
#book2.should === @book
|
256
292
|
book2.should be_alive
|
257
293
|
book2.excel.should == new_excel
|
258
294
|
book2.excel.should_not == old_excel
|
@@ -274,6 +310,91 @@ describe Book do
|
|
274
310
|
|
275
311
|
end
|
276
312
|
|
313
|
+
context "with abbrevations" do
|
314
|
+
|
315
|
+
before do
|
316
|
+
@book = Book.open(@simple_file1)
|
317
|
+
end
|
318
|
+
|
319
|
+
after do
|
320
|
+
@book.close rescue nil
|
321
|
+
end
|
322
|
+
|
323
|
+
it "should work as force" do
|
324
|
+
book2 = Book.open(@another_simple_file, :excel => :new)
|
325
|
+
book2.excel.should_not == @book.excel
|
326
|
+
book3 = Book.open(@different_file, :excel => book2.excel)
|
327
|
+
book3.excel.should == book2.excel
|
328
|
+
end
|
329
|
+
|
330
|
+
it "should work with abbrevation of force and excel" do
|
331
|
+
book2 = Book.open(@another_simple_file, :f => {:e => :new})
|
332
|
+
book2.excel.should_not == @book.excel
|
333
|
+
book3 = Book.open(@different_file, :f => {:e => book2.excel})
|
334
|
+
book3.excel.should == book2.excel
|
335
|
+
end
|
336
|
+
|
337
|
+
it "should work with abbrevation of force" do
|
338
|
+
book2 = Book.open(@another_simple_file, :f => {:excel => :new})
|
339
|
+
book2.excel.should_not == @book.excel
|
340
|
+
book3 = Book.open(@different_file, :f => {:excel => book2.excel})
|
341
|
+
book3.excel.should == book2.excel
|
342
|
+
end
|
343
|
+
|
344
|
+
it "should work with abbrevation of force" do
|
345
|
+
book2 = Book.open(@another_simple_file, :force => {:e => :new})
|
346
|
+
book2.excel.should_not == @book.excel
|
347
|
+
book3 = Book.open(@different_file, :force => {:e => book2.excel})
|
348
|
+
book3.excel.should == book2.excel
|
349
|
+
end
|
350
|
+
|
351
|
+
it "should open in a given Excel provided as Excel, Book, or WIN32OLE representing an Excel or Workbook" do
|
352
|
+
book2 = Book.open(@another_simple_file)
|
353
|
+
book3 = Book.open(@different_file)
|
354
|
+
book3 = Book.open(@simple_file1, :excel => book2.excel)
|
355
|
+
book3.excel.should === book2.excel
|
356
|
+
book4 = Book.open(@simple_file1, :excel => @book)
|
357
|
+
book4.excel.should === @book.excel
|
358
|
+
book3.close
|
359
|
+
book4.close
|
360
|
+
book5 = Book.open(@simple_file1, :excel => book2.ole_workbook)
|
361
|
+
book5.excel.should === book2.excel
|
362
|
+
win32ole_excel1 = WIN32OLE.connect(@book.ole_workbook.Fullname).Application
|
363
|
+
book6 = Book.open(@simple_file1, :excel => win32ole_excel1)
|
364
|
+
book6.excel.should === @book.excel
|
365
|
+
end
|
366
|
+
|
367
|
+
it "should use abbreviations of default" do
|
368
|
+
book2 = Book.open(@simple_file1, :d => {:excel => :current})
|
369
|
+
book2.excel.should == @book.excel
|
370
|
+
end
|
371
|
+
|
372
|
+
it "should use abbreviations of default" do
|
373
|
+
book2 = Book.open(@simple_file1, :d => {:e => :current})
|
374
|
+
book2.excel.should == @book.excel
|
375
|
+
end
|
376
|
+
|
377
|
+
it "should use abbreviations of default" do
|
378
|
+
book2 = Book.open(@simple_file1, :default => {:e => :current})
|
379
|
+
book2.excel.should == @book.excel
|
380
|
+
end
|
381
|
+
|
382
|
+
it "should reopen the book in the Excel where it was opened most recently" do
|
383
|
+
excel1 = @book.excel
|
384
|
+
excel2 = Excel.new(:reuse => false)
|
385
|
+
@book.close
|
386
|
+
book2 = Book.open(@simple_file1, :d => {:e => :current})
|
387
|
+
book2.excel.should == excel1
|
388
|
+
book2.close
|
389
|
+
book3 = Book.open(@simple_file1, :e => excel2)
|
390
|
+
book3.close
|
391
|
+
book3 = Book.open(@simple_file1, :d => {:e => :current})
|
392
|
+
book3.excel.should == excel2
|
393
|
+
book3.close
|
394
|
+
end
|
395
|
+
|
396
|
+
end
|
397
|
+
|
277
398
|
context "with :force => {:excel}" do
|
278
399
|
|
279
400
|
before do
|
@@ -300,15 +421,14 @@ describe Book do
|
|
300
421
|
book6.excel.should === @book.excel
|
301
422
|
end
|
302
423
|
|
303
|
-
|
304
424
|
it "should open in a new Excel" do
|
305
425
|
book2 = Book.open(@simple_file1, :force => {:excel => :new})
|
306
426
|
book2.should be_alive
|
307
427
|
book2.should be_a Book
|
308
428
|
book2.excel.should_not == @book.excel
|
309
429
|
book2.should_not == @book
|
310
|
-
@book.Readonly.should
|
311
|
-
book2.Readonly.should
|
430
|
+
@book.Readonly.should be false
|
431
|
+
book2.Readonly.should be true
|
312
432
|
book2.close
|
313
433
|
end
|
314
434
|
|
@@ -323,14 +443,14 @@ describe Book do
|
|
323
443
|
book4.should be_alive
|
324
444
|
book4.should be_a Book
|
325
445
|
book4.excel.should == book2.excel
|
326
|
-
book4.Readonly.should == true
|
446
|
+
#book4.Readonly.should == true
|
327
447
|
book4.should_not == book2
|
328
448
|
book4.close
|
329
449
|
book5 = Book.open(@simple_file1, :force => {:excel => book2})
|
330
450
|
book5.should be_alive
|
331
451
|
book5.should be_a Book
|
332
452
|
book5.excel.should == book2.excel
|
333
|
-
book5.Readonly.should == true
|
453
|
+
#book5.Readonly.should == true
|
334
454
|
book5.should_not == book2
|
335
455
|
book5.close
|
336
456
|
book3.close
|
@@ -349,14 +469,14 @@ describe Book do
|
|
349
469
|
book4.should be_alive
|
350
470
|
book4.should be_a Book
|
351
471
|
book4.excel.should == book2.excel
|
352
|
-
book4.ReadOnly.should
|
472
|
+
book4.ReadOnly.should be true
|
353
473
|
book4.should == book2
|
354
474
|
book4.close
|
355
475
|
book5 = Book.open(@simple_file1, :force => {:excel => book2}, :read_only => true)
|
356
476
|
book5.should be_alive
|
357
477
|
book5.should be_a Book
|
358
478
|
book5.excel.should == book2.excel
|
359
|
-
book5.ReadOnly.should
|
479
|
+
book5.ReadOnly.should be true
|
360
480
|
book5.should == book2
|
361
481
|
book5.close
|
362
482
|
book3.close
|
@@ -371,7 +491,7 @@ describe Book do
|
|
371
491
|
book4.should be_alive
|
372
492
|
book4.should be_a Book
|
373
493
|
book4.excel.should == book2.excel
|
374
|
-
book4.ReadOnly.should
|
494
|
+
book4.ReadOnly.should be true
|
375
495
|
book4.should == book2
|
376
496
|
book4.close
|
377
497
|
end
|
@@ -465,8 +585,8 @@ describe Book do
|
|
465
585
|
book2.should be_a Book
|
466
586
|
book2.excel.should_not == @book.excel
|
467
587
|
book2.should_not == @book
|
468
|
-
@book.Readonly.should
|
469
|
-
book2.Readonly.should
|
588
|
+
@book.Readonly.should be false
|
589
|
+
book2.Readonly.should be true
|
470
590
|
book2.close
|
471
591
|
end
|
472
592
|
|
@@ -481,14 +601,14 @@ describe Book do
|
|
481
601
|
book4.should be_alive
|
482
602
|
book4.should be_a Book
|
483
603
|
book4.excel.should == book2.excel
|
484
|
-
book4.Readonly.should ==
|
604
|
+
#book4.Readonly.should == false
|
485
605
|
book4.should_not == book2
|
486
606
|
book4.close
|
487
607
|
book5 = Book.open(@simple_file1, :force_excel => book2)
|
488
608
|
book5.should be_alive
|
489
609
|
book5.should be_a Book
|
490
610
|
book5.excel.should == book2.excel
|
491
|
-
book5.Readonly.should ==
|
611
|
+
#book5.Readonly.should == false
|
492
612
|
book5.should_not == book2
|
493
613
|
book5.close
|
494
614
|
book3.close
|
@@ -507,14 +627,14 @@ describe Book do
|
|
507
627
|
book4.should be_alive
|
508
628
|
book4.should be_a Book
|
509
629
|
book4.excel.should == book2.excel
|
510
|
-
book4.ReadOnly.should
|
630
|
+
book4.ReadOnly.should be true
|
511
631
|
book4.should == book2
|
512
632
|
book4.close
|
513
633
|
book5 = Book.open(@simple_file1, :force_excel => book2, :read_only => true)
|
514
634
|
book5.should be_alive
|
515
635
|
book5.should be_a Book
|
516
636
|
book5.excel.should == book2.excel
|
517
|
-
book5.ReadOnly.should
|
637
|
+
book5.ReadOnly.should be true
|
518
638
|
book5.should == book2
|
519
639
|
book5.close
|
520
640
|
book3.close
|
@@ -529,7 +649,7 @@ describe Book do
|
|
529
649
|
book4.should be_alive
|
530
650
|
book4.should be_a Book
|
531
651
|
book4.excel.should == book2.excel
|
532
|
-
book4.ReadOnly.should
|
652
|
+
book4.ReadOnly.should be true
|
533
653
|
book4.should == book2
|
534
654
|
book4.close
|
535
655
|
end
|
@@ -1175,40 +1295,65 @@ describe Book do
|
|
1175
1295
|
|
1176
1296
|
end
|
1177
1297
|
|
1298
|
+
it "should new_excel" do
|
1299
|
+
book = Book.open(@simple_file1)
|
1300
|
+
book.sheet(1)[1,1].Value = "f"
|
1301
|
+
book.Saved.should be false
|
1302
|
+
book2 = Book.open(@simple_file1, :if_unsaved => :new_excel)
|
1303
|
+
end
|
1304
|
+
|
1178
1305
|
context "with :if_unsaved" do
|
1179
1306
|
|
1180
1307
|
before do
|
1181
1308
|
@book = Book.open(@simple_file1)
|
1182
|
-
|
1183
|
-
@sheet
|
1184
|
-
@
|
1309
|
+
sheet = @book.sheet(1)
|
1310
|
+
#@book.add_sheet(@sheet, :as => 'a_name')
|
1311
|
+
@old_value = sheet[1,1].Value
|
1312
|
+
sheet[1,1] = (sheet[1,1].value == "foo" ? "bar" : "foo")
|
1313
|
+
@new_value = sheet[1,1].Value
|
1314
|
+
@book.Saved.should be false
|
1185
1315
|
end
|
1186
1316
|
|
1187
1317
|
after do
|
1188
1318
|
@book.close(:if_unsaved => :forget)
|
1189
|
-
|
1319
|
+
end
|
1320
|
+
|
1321
|
+
it "should open the book in a new excel instance, if :if_unsaved is :new_excel" do
|
1322
|
+
new_book = Book.open(@simple_file1, :if_unsaved => :new_excel)
|
1323
|
+
new_book.excel.should_not == @book.excel
|
1324
|
+
@book.should be_alive
|
1325
|
+
@book.Saved.should be false
|
1326
|
+
new_book.should be_alive
|
1327
|
+
new_book.Saved.should be true
|
1328
|
+
new_book.sheet(1)[1,1].Value.should == @old_value
|
1329
|
+
#new_book.filename.should == @book.filename
|
1330
|
+
new_book.excel.should_not == @book.excel
|
1331
|
+
new_book.close
|
1190
1332
|
end
|
1191
1333
|
|
1192
1334
|
it "should raise an error, if :if_unsaved is :raise" do
|
1193
1335
|
expect {
|
1194
|
-
|
1336
|
+
new_book = Book.open(@simple_file1, :if_unsaved => :raise)
|
1195
1337
|
}.to raise_error(WorkbookNotSaved, /workbook is already open but not saved: "workbook.xls"/)
|
1196
1338
|
end
|
1197
1339
|
|
1198
1340
|
it "should let the book open, if :if_unsaved is :accept" do
|
1199
|
-
|
1200
|
-
@new_book = Book.open(@simple_file1, :if_unsaved => :accept)
|
1201
|
-
}.to_not raise_error
|
1341
|
+
new_book = Book.open(@simple_file1, :if_unsaved => :accept)
|
1202
1342
|
@book.should be_alive
|
1203
|
-
|
1204
|
-
|
1343
|
+
new_book.should be_alive
|
1344
|
+
new_book.Saved.should be false
|
1345
|
+
@book.Saved.should be false
|
1346
|
+
new_book.sheet(1)[1,1].Value.should == @new_value
|
1347
|
+
new_book.should == @book
|
1205
1348
|
end
|
1206
1349
|
|
1207
1350
|
it "should open book and close old book, if :if_unsaved is :forget" do
|
1208
|
-
|
1351
|
+
new_book = Book.open(@simple_file1, :if_unsaved => :forget)
|
1209
1352
|
@book.should_not be_alive
|
1210
|
-
|
1211
|
-
|
1353
|
+
new_book.should be_alive
|
1354
|
+
new_book.Saved.should be true
|
1355
|
+
new_book.sheet(1)[1,1].Value.should == @old_value
|
1356
|
+
#@new_book.filename.downcase.should == @simple_file.downcase
|
1212
1357
|
end
|
1213
1358
|
|
1214
1359
|
context "with :if_unsaved => :alert" do
|
@@ -1223,10 +1368,12 @@ describe Book do
|
|
1223
1368
|
it "should open the new book and close the unsaved book, if user answers 'yes'" do
|
1224
1369
|
# "Yes" is the default. --> language independent
|
1225
1370
|
@key_sender.puts "{enter}"
|
1226
|
-
|
1227
|
-
|
1228
|
-
|
1229
|
-
@
|
1371
|
+
new_book = Book.open(@simple_file1, :if_unsaved => :alert)
|
1372
|
+
new_book.should be_alive
|
1373
|
+
#@book.should_not be_alive
|
1374
|
+
#new_book.filename.downcase.should == @simple_file.downcase
|
1375
|
+
new_book.Saved.should be true
|
1376
|
+
new_book.sheet(1)[1,1].Value.should == @old_value
|
1230
1377
|
end
|
1231
1378
|
end
|
1232
1379
|
=begin
|
@@ -1258,10 +1405,11 @@ describe Book do
|
|
1258
1405
|
it "should open the new book and close the unsaved book, if user answers 'yes'" do
|
1259
1406
|
# "Yes" is the default. --> language independent
|
1260
1407
|
@key_sender.puts "{enter}"
|
1261
|
-
|
1262
|
-
|
1263
|
-
|
1264
|
-
|
1408
|
+
new_book = Book.open(@simple_file1, :if_unsaved => :excel)
|
1409
|
+
new_book.should be_alive
|
1410
|
+
#@book.should_not be_alive
|
1411
|
+
new_book.Saved.should be true
|
1412
|
+
new_book.sheet(1)[1,1].Value.should == @old_value
|
1265
1413
|
end
|
1266
1414
|
|
1267
1415
|
=begin
|
@@ -1281,24 +1429,15 @@ describe Book do
|
|
1281
1429
|
|
1282
1430
|
end
|
1283
1431
|
|
1284
|
-
it "should open the book in a new excel instance, if :if_unsaved is :new_excel" do
|
1285
|
-
@new_book = Book.open(@simple_file1, :if_unsaved => :new_excel)
|
1286
|
-
@book.should be_alive
|
1287
|
-
@new_book.should be_alive
|
1288
|
-
@new_book.filename.should == @book.filename
|
1289
|
-
@new_book.excel.should_not == @book.excel
|
1290
|
-
@new_book.close
|
1291
|
-
end
|
1292
|
-
|
1293
1432
|
it "should raise an error, if :if_unsaved is default" do
|
1294
1433
|
expect {
|
1295
|
-
|
1434
|
+
new_book = Book.open(@simple_file1, :if_unsaved => :raise)
|
1296
1435
|
}.to raise_error(WorkbookNotSaved, /workbook is already open but not saved: "workbook.xls"/)
|
1297
1436
|
end
|
1298
1437
|
|
1299
1438
|
it "should raise an error, if :if_unsaved is invalid option" do
|
1300
1439
|
expect {
|
1301
|
-
|
1440
|
+
new_book = Book.open(@simple_file1, :if_unsaved => :invalid_option)
|
1302
1441
|
}.to raise_error(OptionInvalid, ":if_unsaved: invalid option: :invalid_option")
|
1303
1442
|
end
|
1304
1443
|
end
|
@@ -1314,79 +1453,90 @@ describe Book do
|
|
1314
1453
|
book_before = Book.open(@simple_file1)
|
1315
1454
|
book_before.close
|
1316
1455
|
end
|
1317
|
-
@book = Book.open(@
|
1456
|
+
@book = Book.open(@simple_file_other_path1)
|
1318
1457
|
#@book.Windows(@book.Name).Visible = true
|
1319
|
-
|
1320
|
-
|
1321
|
-
|
1458
|
+
#@sheet_count = @book.ole_workbook.Worksheets.Count
|
1459
|
+
sheet = @book.sheet(1)
|
1460
|
+
#@book.add_sheet(@sheet, :as => 'a_name')
|
1461
|
+
@old_value = sheet[1,1].Value
|
1462
|
+
sheet[1,1] = (sheet[1,1].value == "foo" ? "bar" : "foo")
|
1463
|
+
@new_value = sheet[1,1].Value
|
1464
|
+
@book.Saved.should be false
|
1322
1465
|
end
|
1323
1466
|
|
1324
1467
|
after do
|
1325
1468
|
@book.close(:if_unsaved => :forget)
|
1326
|
-
|
1469
|
+
#@new_book.close rescue nil
|
1327
1470
|
end
|
1328
1471
|
|
1329
1472
|
it "should raise an error, if :if_obstructed is :raise" do
|
1330
1473
|
expect {
|
1331
|
-
|
1474
|
+
new_book = Book.open(@simple_file1, :if_obstructed => :raise)
|
1332
1475
|
}.to raise_error(WorkbookBlocked, /blocked by a workbook with the same name in a different path/)
|
1333
1476
|
end
|
1334
1477
|
|
1335
1478
|
it "should close the other book and open the new book, if :if_obstructed is :forget" do
|
1336
|
-
|
1479
|
+
new_book = Book.open(@simple_file1, :if_obstructed => :forget)
|
1337
1480
|
@book.should_not be_alive
|
1338
|
-
|
1339
|
-
|
1481
|
+
new_book.should be_alive
|
1482
|
+
new_book.filename.downcase.should == @simple_file.downcase
|
1483
|
+
old_book = Book.open(@simple_file_other_path1, :if_obstructed => :forget)
|
1484
|
+
old_book.sheet(1)[1,1].Value.should == @old_value
|
1340
1485
|
end
|
1341
1486
|
|
1342
1487
|
it "should save the old book, close it, and open the new book, if :if_obstructed is :save" do
|
1343
|
-
|
1488
|
+
new_book = Book.open(@simple_file1, :if_obstructed => :save)
|
1344
1489
|
@book.should_not be_alive
|
1345
|
-
|
1346
|
-
|
1347
|
-
old_book = Book.open(@
|
1348
|
-
old_book.
|
1490
|
+
new_book.should be_alive
|
1491
|
+
new_book.filename.downcase.should == @simple_file1.downcase
|
1492
|
+
old_book = Book.open(@simple_file_other_path1, :if_obstructed => :forget)
|
1493
|
+
old_book.sheet(1)[1,1].Value.should == @new_value
|
1494
|
+
#old_book.ole_workbook.Worksheets.Count.should == @sheet_count + 1
|
1349
1495
|
old_book.close
|
1350
1496
|
end
|
1351
1497
|
|
1352
1498
|
it "should raise an error, if the old book is unsaved, and close the old book and open the new book,
|
1353
1499
|
if :if_obstructed is :close_if_saved" do
|
1354
1500
|
expect{
|
1355
|
-
|
1501
|
+
new_book = Book.open(@simple_file1, :if_obstructed => :close_if_saved)
|
1356
1502
|
}.to raise_error(WorkbookBlocked, /workbook with the same name in a different path is unsaved/)
|
1357
1503
|
@book.save
|
1358
|
-
|
1504
|
+
new_book = Book.open(@simple_file1, :if_obstructed => :close_if_saved)
|
1359
1505
|
@book.should_not be_alive
|
1360
|
-
|
1361
|
-
|
1362
|
-
old_book = Book.open(@
|
1363
|
-
old_book.
|
1506
|
+
new_book.should be_alive
|
1507
|
+
new_book.filename.downcase.should == @simple_file1.downcase
|
1508
|
+
old_book = Book.open(@simple_file_other_path1, :if_obstructed => :forget)
|
1509
|
+
old_book.sheet(1)[1,1].Value.should == @new_value
|
1510
|
+
#old_book.ole_workbook.Worksheets.Count.should == @sheet_count + 1
|
1364
1511
|
old_book.close
|
1365
1512
|
end
|
1366
1513
|
|
1367
1514
|
it "should close the old book and open the new book, if :if_obstructed is :close_if_saved" do
|
1368
1515
|
@book.close(:if_unsaved => :forget)
|
1369
1516
|
book = Book.open(@simple_file_other_path)
|
1370
|
-
Book.open(@simple_file1, :if_obstructed => :close_if_saved)
|
1517
|
+
book2 = Book.open(@simple_file1, :if_obstructed => :close_if_saved)
|
1371
1518
|
end
|
1372
1519
|
|
1373
1520
|
it "should open the book in a new excel instance, if :if_obstructed is :new_excel" do
|
1374
|
-
|
1521
|
+
new_book = Book.open(@simple_file1, :if_obstructed => :new_excel)
|
1375
1522
|
@book.should be_alive
|
1376
|
-
@
|
1377
|
-
@
|
1378
|
-
|
1523
|
+
@book.Saved.should be false
|
1524
|
+
@book.sheet(1)[1,1].Value.should == @new_value
|
1525
|
+
new_book.should be_alive
|
1526
|
+
new_book.filename.should_not == @book.filename
|
1527
|
+
new_book.excel.should_not == @book.excel
|
1528
|
+
new_book.sheet(1)[1,1].Value.should == @old_value
|
1379
1529
|
end
|
1380
1530
|
|
1381
1531
|
it "should raise an error, if :if_obstructed is default" do
|
1382
1532
|
expect {
|
1383
|
-
|
1533
|
+
new_book = Book.open(@simple_file1)
|
1384
1534
|
}.to raise_error(WorkbookBlocked, /blocked by a workbook with the same name in a different path/)
|
1385
1535
|
end
|
1386
1536
|
|
1387
1537
|
it "should raise an error, if :if_obstructed is invalid option" do
|
1388
1538
|
expect {
|
1389
|
-
|
1539
|
+
new_book = Book.open(@simple_file1, :if_obstructed => :invalid_option)
|
1390
1540
|
}.to raise_error(OptionInvalid, ":if_obstructed: invalid option: :invalid_option")
|
1391
1541
|
end
|
1392
1542
|
end
|
@@ -1451,7 +1601,7 @@ describe Book do
|
|
1451
1601
|
book = Book.open(@simple_save_file, :if_absent => :create)
|
1452
1602
|
book.should be_a Book
|
1453
1603
|
book.close
|
1454
|
-
File.exist?(@simple_save_file).should
|
1604
|
+
File.exist?(@simple_save_file).should be true
|
1455
1605
|
end
|
1456
1606
|
|
1457
1607
|
it "should raise an exception by default" do
|
@@ -1485,7 +1635,7 @@ describe Book do
|
|
1485
1635
|
it "should set update_links to :alert" do
|
1486
1636
|
book = Book.open(@simple_file, :update_links => :alert)
|
1487
1637
|
book.UpdateLinks.should == XlUpdateLinksUserSetting
|
1488
|
-
book.Saved.should
|
1638
|
+
book.Saved.should be true
|
1489
1639
|
end
|
1490
1640
|
|
1491
1641
|
it "should set update_links to :never" do
|
@@ -1512,14 +1662,14 @@ describe Book do
|
|
1512
1662
|
|
1513
1663
|
it "should reopen the book with writable (unsaved changes from readonly will not be saved)" do
|
1514
1664
|
book = Book.open(@simple_file1, :read_only => true)
|
1515
|
-
book.ReadOnly.should
|
1665
|
+
book.ReadOnly.should be true
|
1516
1666
|
book.should be_alive
|
1517
1667
|
sheet = book.sheet(1)
|
1518
1668
|
old_cell_value = sheet[1,1].value
|
1519
1669
|
sheet[1,1] = sheet[1,1].value == "foo" ? "bar" : "foo"
|
1520
|
-
book.Saved.should
|
1670
|
+
book.Saved.should be false
|
1521
1671
|
new_book = Book.open(@simple_file1, :read_only => false, :if_unsaved => :accept)
|
1522
|
-
new_book.ReadOnly.should
|
1672
|
+
new_book.ReadOnly.should be false
|
1523
1673
|
new_book.should be_alive
|
1524
1674
|
book.should be_alive
|
1525
1675
|
new_book.should == book
|
@@ -1530,28 +1680,28 @@ describe Book do
|
|
1530
1680
|
|
1531
1681
|
it "should not raise an error when trying to reopen the book as read_only while the writable book had unsaved changes" do
|
1532
1682
|
book = Book.open(@simple_file1, :read_only => false)
|
1533
|
-
book.ReadOnly.should
|
1683
|
+
book.ReadOnly.should be false
|
1534
1684
|
book.should be_alive
|
1535
1685
|
sheet = book.sheet(1)
|
1536
1686
|
old_cell_value = sheet[1,1].value
|
1537
1687
|
sheet[1,1] = sheet[1,1].value == "foo" ? "bar" : "foo"
|
1538
|
-
book.Saved.should
|
1688
|
+
book.Saved.should be false
|
1539
1689
|
new_book = Book.open(@simple_file1, :read_only => true, :if_unsaved => :accept)
|
1540
|
-
new_book.ReadOnly.should
|
1541
|
-
new_book.Saved.should
|
1690
|
+
new_book.ReadOnly.should be true
|
1691
|
+
new_book.Saved.should be true
|
1542
1692
|
new_book.should == book
|
1543
1693
|
end
|
1544
1694
|
|
1545
1695
|
it "should reopen the book with writable in the same Excel instance (unsaved changes from readonly will not be saved)" do
|
1546
1696
|
book = Book.open(@simple_file1, :read_only => true)
|
1547
|
-
book.ReadOnly.should
|
1697
|
+
book.ReadOnly.should be true
|
1548
1698
|
book.should be_alive
|
1549
1699
|
sheet = book.sheet(1)
|
1550
1700
|
old_cell_value = sheet[1,1].value
|
1551
1701
|
sheet[1,1] = sheet[1,1].value == "foo" ? "bar" : "foo"
|
1552
|
-
book.Saved.should
|
1702
|
+
book.Saved.should be false
|
1553
1703
|
new_book = Book.open(@simple_file1, :if_unsaved => :accept, :force => {:excel => book.excel}, :read_only => false)
|
1554
|
-
new_book.ReadOnly.should
|
1704
|
+
new_book.ReadOnly.should be false
|
1555
1705
|
new_book.should be_alive
|
1556
1706
|
book.should be_alive
|
1557
1707
|
new_book.should == book
|
@@ -1562,23 +1712,26 @@ describe Book do
|
|
1562
1712
|
|
1563
1713
|
it "should reopen the book with readonly (unsaved changes of the writable should be saved)" do
|
1564
1714
|
book = Book.open(@simple_file1, :force => {:excel => :new}, :read_only => false)
|
1565
|
-
book.ReadOnly.should
|
1715
|
+
book.ReadOnly.should be false
|
1566
1716
|
book.should be_alive
|
1567
1717
|
sheet = book.sheet(1)
|
1568
1718
|
old_cell_value = sheet[1,1].value
|
1569
1719
|
sheet[1,1] = sheet[1,1].value == "foo" ? "bar" : "foo"
|
1570
|
-
book.Saved.should
|
1720
|
+
book.Saved.should be false
|
1571
1721
|
new_book = Book.open(@simple_file1, :force => {:excel => book.excel}, :read_only => true, :if_unsaved => :accept)
|
1572
|
-
new_book.ReadOnly.should
|
1573
|
-
new_book.Saved.should
|
1722
|
+
new_book.ReadOnly.should be true
|
1723
|
+
new_book.Saved.should be true
|
1574
1724
|
new_book.should == book
|
1725
|
+
new_sheet = new_book.sheet(1)
|
1726
|
+
new_cell_value = new_sheet[1,1].value
|
1727
|
+
new_cell_value.should_not == old_cell_value
|
1575
1728
|
end
|
1576
1729
|
|
1577
1730
|
it "should open the second book in another Excel as writable" do
|
1578
1731
|
book = Book.open(@simple_file1, :read_only => true)
|
1579
|
-
book.ReadOnly.should
|
1732
|
+
book.ReadOnly.should be true
|
1580
1733
|
new_book = Book.open(@simple_file1, :force => {:excel => :new}, :read_only => false)
|
1581
|
-
new_book.ReadOnly.should
|
1734
|
+
new_book.ReadOnly.should be false
|
1582
1735
|
new_book.close
|
1583
1736
|
book.close
|
1584
1737
|
end
|
@@ -1618,10 +1771,10 @@ describe Book do
|
|
1618
1771
|
book.close
|
1619
1772
|
end
|
1620
1773
|
|
1621
|
-
it "should open xlsm file" do
|
1622
|
-
|
1623
|
-
|
1624
|
-
end
|
1774
|
+
#it "should open xlsm file" do
|
1775
|
+
# book = Book.open(@simple_file_xlsm, :visible => true)
|
1776
|
+
# book.close
|
1777
|
+
#end
|
1625
1778
|
|
1626
1779
|
it "should open xlsx file" do
|
1627
1780
|
book = Book.open(@simple_file_xlsx, :visible => true)
|