robust_excel_ole 0.4 → 0.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.
Files changed (47) hide show
  1. data/.gitignore +1 -0
  2. data/Changelog +15 -0
  3. data/README.rdoc +128 -63
  4. data/README_detail.rdoc +130 -60
  5. data/examples/edit_sheets/example_access_sheets_and_cells.rb +1 -1
  6. data/examples/edit_sheets/example_adding_sheets.rb +2 -2
  7. data/examples/edit_sheets/example_copying.rb +1 -1
  8. data/examples/edit_sheets/example_expanding.rb +1 -1
  9. data/examples/edit_sheets/example_ranges.rb +1 -1
  10. data/examples/edit_sheets/example_saving.rb +2 -2
  11. data/examples/open_save_close/example_control_to_excel.rb +1 -1
  12. data/examples/open_save_close/example_if_obstructed_closeifsaved.rb +2 -2
  13. data/examples/open_save_close/example_if_obstructed_save.rb +2 -2
  14. data/examples/open_save_close/example_if_unsaved_accept.rb +1 -1
  15. data/examples/open_save_close/example_if_unsaved_forget.rb +2 -2
  16. data/examples/open_save_close/example_if_unsaved_forget_more.rb +3 -3
  17. data/examples/open_save_close/example_read_only.rb +1 -1
  18. data/examples/open_save_close/example_rename_cells.rb +1 -1
  19. data/examples/open_save_close/example_simple.rb +1 -1
  20. data/examples/open_save_close/example_unobtrusively.rb +3 -3
  21. data/lib/robust_excel_ole.rb +1 -0
  22. data/lib/robust_excel_ole/book.rb +249 -193
  23. data/lib/robust_excel_ole/bookstore.rb +1 -1
  24. data/lib/robust_excel_ole/cell.rb +1 -1
  25. data/lib/robust_excel_ole/excel.rb +125 -4
  26. data/lib/robust_excel_ole/general.rb +1 -92
  27. data/lib/robust_excel_ole/range.rb +1 -1
  28. data/lib/robust_excel_ole/reo_common.rb +37 -0
  29. data/lib/robust_excel_ole/sheet.rb +77 -24
  30. data/lib/robust_excel_ole/version.rb +1 -1
  31. data/spec/book_spec.rb +112 -82
  32. data/spec/book_specs/book_close_spec.rb +44 -1
  33. data/spec/book_specs/book_misc_spec.rb +97 -92
  34. data/spec/book_specs/book_open_spec.rb +40 -8
  35. data/spec/book_specs/book_save_spec.rb +77 -7
  36. data/spec/book_specs/book_sheet_spec.rb +290 -66
  37. data/spec/book_specs/book_unobtr_spec.rb +99 -73
  38. data/spec/bookstore_spec.rb +1 -1
  39. data/spec/cell_spec.rb +2 -2
  40. data/spec/data/another_workbook.xls +0 -0
  41. data/spec/data/workbook.xls +0 -0
  42. data/spec/excel_spec.rb +174 -23
  43. data/spec/general_spec.rb +3 -18
  44. data/spec/range_spec.rb +3 -3
  45. data/spec/reo_common_spec.rb +104 -0
  46. data/spec/sheet_spec.rb +101 -60
  47. metadata +6 -4
@@ -279,7 +279,7 @@ describe Bookstore do
279
279
  @book3 = Book.open(@simple_file, :force_excel => :new)
280
280
  @bookstore.store(@book2)
281
281
  @bookstore.store(@book3)
282
- sheet = @book3[0]
282
+ sheet = @book3.sheet(1)
283
283
  sheet[1,1] = sheet[1,1].Value == "foo" ? "bar" : "foo"
284
284
  @book.ReadOnly.should be_true
285
285
  @book2.ReadOnly.should be_false
@@ -23,7 +23,7 @@ describe Cell do
23
23
  context "open simple.xls" do
24
24
  before do
25
25
  @book = Book.open(@dir + '/workbook.xls', :read_only => true)
26
- @sheet = @book[1]
26
+ @sheet = @book.sheet(2)
27
27
  @cell = @sheet[1, 1]
28
28
  end
29
29
 
@@ -55,7 +55,7 @@ describe Cell do
55
55
  context "open merge_cells.xls" do
56
56
  before do
57
57
  @book = Book.open(@dir + '/merge_cells.xls', :read_only => true)
58
- @sheet = @book[0]
58
+ @sheet = @book.sheet(1)
59
59
  end
60
60
 
61
61
  after do
Binary file
@@ -11,7 +11,7 @@ module RobustExcelOle
11
11
  describe Excel do
12
12
 
13
13
  before(:all) do
14
- Excel.close_all
14
+ Excel.kill_all
15
15
  end
16
16
 
17
17
  before do
@@ -321,10 +321,10 @@ module RobustExcelOle
321
321
  @excel1 = book1.excel
322
322
  @excel2 = book2.excel
323
323
  @excel4 = book4.excel
324
- sheet2 = book2[0]
324
+ sheet2 = book2.sheet(1)
325
325
  @old_cell_value2 = sheet2[1,1].value
326
326
  sheet2[1,1] = sheet2[1,1].value == "foo" ? "bar" : "foo"
327
- sheet3 = book3[0]
327
+ sheet3 = book3.sheet(1)
328
328
  @old_cell_value3 = sheet3[1,1].value
329
329
  sheet3[1,1] = sheet3[1,1].value == "foo" ? "bar" : "foo"
330
330
  end
@@ -342,11 +342,11 @@ module RobustExcelOle
342
342
  @excel2.should_not be_alive
343
343
  @excel4.should_not be_alive
344
344
  new_book2 = Book.open(@simple_file)
345
- new_sheet2 = new_book2[0]
345
+ new_sheet2 = new_book2.sheet(1)
346
346
  new_sheet2[1,1].value.should == @old_cell_value2
347
347
  new_book2.close
348
348
  new_book3 = Book.open(@another_simple_file)
349
- new_sheet3 = new_book3[0]
349
+ new_sheet3 = new_book3.sheet(1)
350
350
  new_sheet3[1,1].value.should == @old_cell_value3
351
351
  new_book3.close
352
352
  end
@@ -357,11 +357,11 @@ module RobustExcelOle
357
357
  @excel2.should_not be_alive
358
358
  @excel4.should_not be_alive
359
359
  new_book2 = Book.open(@simple_file)
360
- new_sheet2 = new_book2[0]
360
+ new_sheet2 = new_book2.sheet(1)
361
361
  new_sheet2[1,1].value.should_not == @old_cell_value2
362
362
  new_book2.close
363
363
  new_book3 = Book.open(@another_simple_file)
364
- new_sheet3 = new_book3[0]
364
+ new_sheet3 = new_book3.sheet(1)
365
365
  new_sheet3[1,1].value.should_not == @old_cell_value3
366
366
  new_book3.close
367
367
  end
@@ -390,7 +390,7 @@ module RobustExcelOle
390
390
  #@excel1 = book1.excel
391
391
  @excel2 = book2.excel
392
392
  #@excel4 = book4.excel
393
- sheet2 = book2[0]
393
+ sheet2 = book2.sheet(1)
394
394
  @old_cell_value2 = sheet2[1,1].value
395
395
  sheet2[1,1] = sheet2[1,1].value == "foo" ? "bar" : "foo"
396
396
  #sheet3 = book3[0]
@@ -410,7 +410,7 @@ module RobustExcelOle
410
410
  #@excel4.should_not be_alive
411
411
  #@excel5.should_not be_alive
412
412
  new_book2 = Book.open(@simple_file)
413
- new_sheet2 = new_book2[0]
413
+ new_sheet2 = new_book2.sheet(1)
414
414
  new_sheet2[1,1].value.should_not == @old_cell_value2
415
415
  new_book2.close
416
416
  #new_book3 = Book.open(@another_simple_file)
@@ -428,7 +428,7 @@ module RobustExcelOle
428
428
  #@excel4.should_not be_alive
429
429
  #@excel5.should_not be_alive
430
430
  new_book2 = Book.open(@simple_file)
431
- new_sheet2 = new_book2[0]
431
+ new_sheet2 = new_book2.sheet(1)
432
432
  new_sheet2[1,1].value.should == @old_cell_value2
433
433
  new_book2.close
434
434
  #new_book4 = Book.open(@different_file)
@@ -472,11 +472,11 @@ module RobustExcelOle
472
472
  before do
473
473
  @excel = Excel.create
474
474
  @book = Book.open(@simple_file)
475
- sheet = @book[0]
475
+ sheet = @book.sheet(1)
476
476
  @old_cell_value = sheet[1,1].value
477
477
  sheet[1,1] = sheet[1,1].value == "foo" ? "bar" : "foo"
478
478
  @book2 = Book.open(@another_simple_file)
479
- sheet2 = @book2[0]
479
+ sheet2 = @book2.sheet(1)
480
480
  @old_cell_value2 = sheet2[1,1].value
481
481
  sheet2[1,1] = sheet2[1,1].value == "foo" ? "bar" : "foo"
482
482
  end
@@ -497,11 +497,11 @@ module RobustExcelOle
497
497
  @excel.close(:if_unsaved => :forget)
498
498
  @excel.should_not be_alive
499
499
  new_book = Book.open(@simple_file)
500
- new_sheet = new_book[0]
500
+ new_sheet = new_book.sheet(1)
501
501
  new_sheet[1,1].value.should == @old_cell_value
502
502
  new_book.close
503
503
  new_book2 = Book.open(@another_simple_file)
504
- new_sheet2 = new_book2[0]
504
+ new_sheet2 = new_book2.sheet(1)
505
505
  new_sheet2[1,1].value.should == @old_cell_value2
506
506
  new_book2.close
507
507
  end
@@ -511,11 +511,11 @@ module RobustExcelOle
511
511
  @excel.close(:if_unsaved => :save)
512
512
  @excel.should_not be_alive
513
513
  new_book = Book.open(@simple_file)
514
- new_sheet = new_book[0]
514
+ new_sheet = new_book.sheet(1)
515
515
  new_sheet[1,1].value.should_not == @old_cell_value
516
516
  new_book.close
517
517
  new_book2 = Book.open(@another_simple_file)
518
- new_sheet2 = new_book2[0]
518
+ new_sheet2 = new_book2.sheet(1)
519
519
  new_sheet2[1,1].value.should_not == @old_cell_value2
520
520
  new_book2.close
521
521
  end
@@ -548,7 +548,7 @@ module RobustExcelOle
548
548
  @excel.should_not be_alive
549
549
  @book.should_not be_alive
550
550
  new_book = Book.open(@simple_file)
551
- new_sheet = new_book[0]
551
+ new_sheet = new_book.sheet(1)
552
552
  new_sheet[1,1].value.should == @old_cell_value
553
553
  new_book.close
554
554
  new_book.excel.close(:hard => true)
@@ -568,7 +568,7 @@ module RobustExcelOle
568
568
  @key_sender = IO.popen 'ruby "' + File.join(File.dirname(__FILE__), '/helpers/key_sender.rb') + '" "Microsoft Excel" ' , "w"
569
569
  @excel = Excel.create
570
570
  @book = Book.open(@simple_file)
571
- sheet = @book[0]
571
+ sheet = @book.sheet(1)
572
572
  @old_cell_value = sheet[1,1].value
573
573
  sheet[1,1] = sheet[1,1].value == "foo" ? "bar" : "foo"
574
574
  end
@@ -584,7 +584,7 @@ module RobustExcelOle
584
584
  @excel.close(:if_unsaved => :alert)
585
585
  @excel.should_not be_alive
586
586
  new_book = Book.open(@simple_file)
587
- new_sheet = new_book[0]
587
+ new_sheet = new_book.sheet(1)
588
588
  new_sheet[1,1].value.should_not == @old_cell_value
589
589
  new_book.close
590
590
  end
@@ -598,7 +598,7 @@ module RobustExcelOle
598
598
  @excel.should_not be_alive
599
599
  @book.should_not be_alive
600
600
  new_book = Book.open(@simple_file)
601
- new_sheet = new_book[0]
601
+ new_sheet = new_book.sheet(1)
602
602
  new_sheet[1,1].value.should == @old_cell_value
603
603
  new_book.close
604
604
  end
@@ -736,6 +736,43 @@ module RobustExcelOle
736
736
  @excel2.DisplayAlerts.should be_false
737
737
  end
738
738
  end
739
+ end
740
+
741
+ context "with calculation" do
742
+
743
+ before do
744
+ @excel1 = Excel.new(:visible => true)
745
+ end
746
+
747
+ it "should not set calculation mode when no workbook is opened" do
748
+ @excel1.with_calculation(:automatic) do
749
+ @excel1.Calculation.should_not == -4105
750
+ end
751
+ end
752
+
753
+ it "should set calculation mode to manual" do
754
+ b = Book.open(@simple_file)
755
+ @excel1.with_calculation(:manual) do
756
+ @excel1.Calculation.should == -4135
757
+ @excel1.CalculateBeforeSave.should be_false
758
+ end
759
+ end
760
+
761
+ it "should set calculation mode automatic" do
762
+ b = Book.open(@simple_file)
763
+ @excel1.with_calculation(:automatic) do
764
+ @excel1.Calculation.should == -4105
765
+ @excel1.CalculateBeforeSave.should be_true
766
+ end
767
+ end
768
+
769
+ it "should set calculation mode to automatic as default" do
770
+ b = Book.open(@simple_file)
771
+ @excel1.with_calculation do
772
+ @excel1.Calculation.should == -4105
773
+ @excel1.CalculateBeforeSave.should be_true
774
+ end
775
+ end
739
776
 
740
777
  end
741
778
 
@@ -788,12 +825,12 @@ module RobustExcelOle
788
825
  before do
789
826
  @book = Book.open(@simple_file)
790
827
  @book3 = Book.open(@different_file, :read_only => true)
791
- sheet = @book[0]
828
+ sheet = @book.sheet(1)
792
829
  sheet[1,1] = sheet[1,1].value == "foo" ? "bar" : "foo"
793
- sheet3 = @book3[0]
830
+ sheet3 = @book3.sheet(1)
794
831
  sheet3[1,1] = sheet3[1,1].value == "foo" ? "bar" : "foo"
795
832
  @book2 = Book.open(@another_simple_file, :force_excel => :new)
796
- sheet2 = @book2[0]
833
+ sheet2 = @book2.sheet(1)
797
834
  sheet2[1,1] = sheet2[1,1].value == "foo" ? "bar" : "foo"
798
835
  end
799
836
 
@@ -882,6 +919,120 @@ module RobustExcelOle
882
919
 
883
920
  end
884
921
  end
922
+
923
+ describe "nameval, set_nameval" do
924
+
925
+ before do
926
+ @book1 = Book.open(@dir + '/another_workbook.xls')
927
+ @excel1 = @book1.excel
928
+ end
929
+
930
+ after do
931
+ @book1.close(:if_unsaved => :forget)
932
+ end
933
+
934
+ it "should return value of a defined name" do
935
+ @excel1.nameval("firstcell").should == "foo"
936
+ @excel1["firstcell"].should == "foo"
937
+ end
938
+
939
+ it "should return default value if name not defined and default value is given" do
940
+ @excel1.nameval("foo", :default => 2).should == 2
941
+ end
942
+
943
+ it "should evaluate a formula" do
944
+ @excel1.nameval("named_formula").should == 4
945
+ @excel1["named_formula"].should == 4
946
+ end
947
+
948
+ it "should raise an error if name not defined" do
949
+ expect {
950
+ @excel1.nameval("foo")
951
+ }.to raise_error(ExcelError, /cannot find name "foo"/)
952
+ expect {
953
+ @excel1["foo"]
954
+ }.to raise_error(ExcelError, /cannot find name "foo"/)
955
+ expect {
956
+ excel2 = Excel.create
957
+ excel2.nameval("one")
958
+ }.to raise_error(ExcelError, /cannot find name "one"/)
959
+ expect {
960
+ excel3 = Excel.create
961
+ excel3["one"]
962
+ }.to raise_error(ExcelError, /cannot find name "one"/)
963
+ end
964
+
965
+ it "should set a range to a value" do
966
+ @excel1.nameval("firstcell").should == "foo"
967
+ @excel1.set_nameval("firstcell","bar")
968
+ @excel1.nameval("firstcell").should == "bar"
969
+ @excel1["firstcell"] = "foo"
970
+ @excel1.nameval("firstcell").should == "foo"
971
+ end
972
+
973
+ it "should raise an error if name cannot be evaluated" do
974
+ expect{
975
+ @excel1.set_nameval("foo", 1)
976
+ }.to raise_error(ExcelError, /cannot find name "foo"/)
977
+ expect{
978
+ @excel1["foo"] = 1
979
+ }.to raise_error(ExcelError, /cannot find name "foo"/)
980
+ end
981
+ end
982
+
983
+ describe "rangeval, set_rangeval" do
984
+
985
+ before do
986
+ @book1 = Book.open(@dir + '/another_workbook.xls')
987
+ @excel1 = @book1.excel
988
+ end
989
+
990
+ after do
991
+ @book1.close(:if_unsaved => :forget)
992
+ end
993
+
994
+ it "should return value of a locally defined name" do
995
+ @excel1.rangeval("firstcell").should == "foo"
996
+ end
997
+
998
+ it "should return value of a defined name" do
999
+ @excel1.rangeval("new").should == "foo"
1000
+ @excel1.rangeval("one").should == 1.0
1001
+ @excel1.rangeval("four").should == [[1,2],[3,4]]
1002
+ @excel1.rangeval("firstrow").should == [[1,2]]
1003
+ end
1004
+
1005
+ it "should return default value if name not defined and default value is given" do
1006
+ @excel1.rangeval("foo", :default => 2).should == 2
1007
+ end
1008
+
1009
+ it "should raise an error if name not defined for the sheet" do
1010
+ expect {
1011
+ @excel1.rangeval("foo")
1012
+ }.to raise_error(ExcelError, /cannot find name "foo"/)
1013
+ expect {
1014
+ @excel1.rangeval("named_formula")
1015
+ }.to raise_error(ExcelError, /cannot find name "named_formula"/)
1016
+ expect {
1017
+ excel2 = Excel.create
1018
+ excel2.rangeval("one")
1019
+ }.to raise_error(ExcelError, /cannot find name "one"/)
1020
+ end
1021
+
1022
+ it "should set a range to a value" do
1023
+ @excel1.rangeval("firstcell").should == "foo"
1024
+ @excel1.set_rangeval("firstcell","bar")
1025
+ @excel1.rangeval("firstcell").should == "bar"
1026
+ end
1027
+
1028
+ it "should raise an error if name cannot be evaluated" do
1029
+ expect{
1030
+ @excel1.set_nameval("foo", 1)
1031
+ }.to raise_error(ExcelError, /cannot find name "foo"/)
1032
+ end
1033
+
1034
+ end
1035
+
885
1036
  end
886
1037
  end
887
1038
 
@@ -43,8 +43,8 @@ module RobustExcelOle
43
43
  ["Activate", "ActiveSheet", "Application", "Close", "FullName", "HasPassword", "Name", "Names",
44
44
  "Password", "Protect", "ProtectSharing", "ProtectStructure", "Protect", "ReadOnly", "Save",
45
45
  "SaveAs", "Saved", "Sheets", "Unprotect"]
46
- @book_methods = ["activate", "add_sheet", "alive?", "close", "filename", "nvalue", "ole_object",
47
- "ole_workbook", "reopen", "save", "save_as", "saved", "set_nvalue"]
46
+ @book_methods = ["activate", "add_sheet", "alive?", "close", "filename", "nameval", "ole_object",
47
+ "ole_workbook", "reopen", "save", "save_as", "saved", "set_nameval"]
48
48
  @ole_excel_methods =
49
49
  ["ActiveCell", "ActiveSheet", "ActiveWorkbook", "Application", "Calculate", "Cells", "Columns",
50
50
  "DisplayAlerts", "Evaluate", "Hwnd", "Name", "Names", "Quit", "Range", "Ready", "Save",
@@ -161,7 +161,7 @@ module RobustExcelOle
161
161
 
162
162
  before do
163
163
  @book = Book.open(@simple_file)
164
- @sheet = @book[0]
164
+ @sheet = @book.sheet(1)
165
165
  end
166
166
 
167
167
  before do
@@ -173,21 +173,6 @@ module RobustExcelOle
173
173
  @sheet.excel
174
174
  }.to raise_error(ExcelError, "receiver instance is neither an Excel nor a Book")
175
175
  end
176
-
177
- end
178
-
179
- describe "trace" do
180
-
181
- it "should put some number" do
182
- a = 4
183
- trace "some text #{a}"
184
- end
185
-
186
- it "should put another text" do
187
- a = 5
188
- trace "another text #{a}"
189
- end
190
176
  end
191
-
192
177
  end
193
178
  end
@@ -15,7 +15,7 @@ describe RobustExcelOle::Range do
15
15
  before do
16
16
  @dir = create_tmpdir
17
17
  @book = Book.open(@dir + '/workbook.xls', :force_excel => :new)
18
- @sheet = @book[1]
18
+ @sheet = @book.sheet(2)
19
19
  @range = RobustExcelOle::Range.new(@sheet.worksheet.UsedRange.Rows(1))
20
20
  end
21
21
 
@@ -52,7 +52,7 @@ describe RobustExcelOle::Range do
52
52
 
53
53
  context "when instance is column range" do
54
54
  before do
55
- @sheet = @book[0]
55
+ @sheet = @book.sheet(1)
56
56
  @range = RobustExcelOle::Range.new(@sheet.worksheet.UsedRange.Columns(1))
57
57
  end
58
58
  it { @range.values.should eq ['foo', 'foo', 'matz'] }
@@ -61,7 +61,7 @@ describe RobustExcelOle::Range do
61
61
  context "read 'merge_cells.xls'" do
62
62
  before do
63
63
  @merge_cells_book = Book.open("#{@dir}/merge_cells.xls", :force_excel => :new)
64
- @merge_cells_sheet = @merge_cells_book[0]
64
+ @merge_cells_sheet = @merge_cells_book.sheet(1)
65
65
  end
66
66
 
67
67
  after do
@@ -0,0 +1,104 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+ require File.join(File.dirname(__FILE__), './spec_helper')
4
+ require File.expand_path( '../../lib/robust_excel_ole/reo_common', __FILE__)
5
+
6
+ $VERBOSE = nil
7
+
8
+ include General
9
+ include RobustExcelOle
10
+
11
+ module RobustExcelOle
12
+
13
+ describe REOCommon do
14
+
15
+ before(:all) do
16
+ excel = Excel.new(:reuse => true)
17
+ open_books = excel == nil ? 0 : excel.Workbooks.Count
18
+ puts "*** open books *** : #{open_books}" if open_books > 0
19
+ Excel.kill_all
20
+ end
21
+
22
+ before do
23
+ @dir = create_tmpdir
24
+ @simple_file = @dir + '/workbook.xls'
25
+ @simple_save_file = @dir + '/workbook_save.xls'
26
+ @different_file = @dir + '/different_workbook.xls'
27
+ @simple_file_other_path = @dir + '/more_data/workbook.xls'
28
+ @another_simple_file = @dir + '/another_workbook.xls'
29
+ @linked_file = @dir + '/workbook_linked.xlsm'
30
+ @simple_file_xlsm = @dir + '/workbook.xls'
31
+ @simple_file_xlsx = @dir + '/workbook.xlsx'
32
+ end
33
+
34
+ after do
35
+ Excel.kill_all
36
+ rm_tmp(@dir)
37
+ end
38
+
39
+ describe "trace" do
40
+
41
+ it "should put some number" do
42
+ a = 4
43
+ REOCommon::trace "some text #{a}"
44
+ end
45
+
46
+ it "should put another text" do
47
+ b = Book.open(@simple_file)
48
+ REOCommon::trace "book: #{b}"
49
+ end
50
+ end
51
+
52
+ describe "own_methods" do
53
+
54
+ before do
55
+ @book1 = Book.open(@simple_file)
56
+ @ole_workbook_methods =
57
+ ["Activate", "ActiveSheet", "Application", "Close", "FullName", "HasPassword", "Name", "Names",
58
+ "Password", "Protect", "ProtectSharing", "ProtectStructure", "Protect", "ReadOnly", "Save",
59
+ "SaveAs", "Saved", "Sheets", "Unprotect"]
60
+ @book_methods = ["activate", "add_sheet", "alive?", "close", "filename", "nameval", "ole_object",
61
+ "ole_workbook", "reopen", "save", "save_as", "saved", "set_nameval"]
62
+ @ole_excel_methods =
63
+ ["ActiveCell", "ActiveSheet", "ActiveWorkbook", "Application", "Calculate", "Cells", "Columns",
64
+ "DisplayAlerts", "Evaluate", "Hwnd", "Name", "Names", "Quit", "Range", "Ready", "Save",
65
+ "Sheets", "UserName", "Value", "Visible", "Workbooks", "Worksheets"]
66
+ @excel_methods = ["alive?", "book_class", "close", "displayalerts", "recreate", "visible", "with_displayalerts"]
67
+ end
68
+
69
+ after do
70
+ @book1.close
71
+ end
72
+
73
+ it "should do own_methods with popular ole_workbook and workbook methods" do
74
+ ((@ole_workbook_methods + @book_methods) - @book1.own_methods).should be_empty
75
+ (Object.instance_methods - @book1.own_methods).should == Object.instance_methods
76
+ end
77
+
78
+ it "should do own_methods with popular ole_excel and excel methods" do
79
+ ((@ole_excel_methods + @excel_methods) - @book1.excel.own_methods).should be_empty
80
+ (Object.instance_methods - @book1.excel.own_methods).should == Object.instance_methods
81
+ end
82
+
83
+ end
84
+
85
+ describe "Object methods" do
86
+
87
+ before do
88
+ @book = Book.open(@simple_file)
89
+ @sheet = @book.sheet(1)
90
+ end
91
+
92
+ before do
93
+ @book.close
94
+ end
95
+
96
+ it "should raise an error when asking excel of a sheet" do
97
+ expect{
98
+ @sheet.excel
99
+ }.to raise_error(ExcelError, "receiver instance is neither an Excel nor a Book")
100
+ end
101
+
102
+ end
103
+ end
104
+ end