robust_excel_ole 1.1.5 → 1.1.6

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 (46) hide show
  1. checksums.yaml +4 -4
  2. data/Changelog +6 -0
  3. data/README.rdoc +2 -2
  4. data/docs/README_excel.rdoc +2 -3
  5. data/docs/README_open.rdoc +8 -12
  6. data/docs/README_ranges.rdoc +21 -9
  7. data/docs/README_sheet.rdoc +1 -1
  8. data/lib/robust_excel_ole/book.rb +3 -23
  9. data/lib/robust_excel_ole/excel.rb +2 -15
  10. data/lib/robust_excel_ole/reo_common.rb +11 -7
  11. data/lib/robust_excel_ole/sheet.rb +36 -15
  12. data/lib/robust_excel_ole/version.rb +1 -1
  13. data/robust_excel_ole.gemspec +1 -1
  14. data/spec/book_spec.rb +1 -1
  15. data/spec/book_specs/book_close_spec.rb +3 -3
  16. data/spec/book_specs/book_misc_spec.rb +25 -1
  17. data/spec/book_specs/book_open_spec.rb +299 -5
  18. data/spec/book_specs/book_sheet_spec.rb +1 -1
  19. data/spec/book_specs/book_unobtr_spec.rb +275 -35
  20. data/spec/data/another_workbook.xls +0 -0
  21. data/spec/data/different_workbook.xls +0 -0
  22. data/spec/data/workbook.xls +0 -0
  23. data/spec/excel_spec.rb +118 -5
  24. data/spec/helpers/key_sender.rb +2 -2
  25. data/spec/reo_common_spec.rb +0 -4
  26. data/spec/sheet_spec.rb +32 -0
  27. data/spec/spec_helper.rb +3 -0
  28. metadata +3 -21
  29. data/spec/ruby1.8.6_rspec2.14/book_spec.rb +0 -1421
  30. data/spec/ruby1.8.6_rspec2.14/book_specs/book_all_spec.rb +0 -22
  31. data/spec/ruby1.8.6_rspec2.14/book_specs/book_close_spec.rb +0 -252
  32. data/spec/ruby1.8.6_rspec2.14/book_specs/book_misc_spec.rb +0 -1070
  33. data/spec/ruby1.8.6_rspec2.14/book_specs/book_open_spec.rb +0 -1855
  34. data/spec/ruby1.8.6_rspec2.14/book_specs/book_save_spec.rb +0 -514
  35. data/spec/ruby1.8.6_rspec2.14/book_specs/book_sheet_spec.rb +0 -395
  36. data/spec/ruby1.8.6_rspec2.14/book_specs/book_subclass_spec.rb +0 -51
  37. data/spec/ruby1.8.6_rspec2.14/book_specs/book_unobtr_spec.rb +0 -1737
  38. data/spec/ruby1.8.6_rspec2.14/bookstore_spec.rb +0 -495
  39. data/spec/ruby1.8.6_rspec2.14/cell_spec.rb +0 -76
  40. data/spec/ruby1.8.6_rspec2.14/cygwin_spec.rb +0 -42
  41. data/spec/ruby1.8.6_rspec2.14/excel_spec.rb +0 -1820
  42. data/spec/ruby1.8.6_rspec2.14/general_spec.rb +0 -212
  43. data/spec/ruby1.8.6_rspec2.14/range_spec.rb +0 -131
  44. data/spec/ruby1.8.6_rspec2.14/reo_common_spec.rb +0 -130
  45. data/spec/ruby1.8.6_rspec2.14/sheet_spec.rb +0 -663
  46. data/spec/ruby1.8.6_rspec2.14/spec_helper.rb +0 -35
@@ -1,212 +0,0 @@
1
- # -*- coding: utf-8 -*-
2
-
3
- require File.join(File.dirname(__FILE__), './spec_helper')
4
-
5
- $VERBOSE = nil
6
-
7
- include General
8
- include RobustExcelOle
9
-
10
- module RobustExcelOle
11
-
12
- describe General do
13
-
14
- before(:all) do
15
- excel = Excel.new(:reuse => true)
16
- open_books = excel == nil ? 0 : excel.Workbooks.Count
17
- puts "*** open books *** : #{open_books}" if open_books > 0
18
- Excel.kill_all
19
- end
20
-
21
- before do
22
- @dir = create_tmpdir
23
- @simple_file = @dir + '/workbook.xls'
24
- @simple_save_file = @dir + '/workbook_save.xls'
25
- @different_file = @dir + '/different_workbook.xls'
26
- @simple_file_other_path = @dir + '/more_data/workbook.xls'
27
- @another_simple_file = @dir + '/another_workbook.xls'
28
- @linked_file = @dir + '/workbook_linked.xlsm'
29
- @simple_file_xlsm = @dir + '/workbook.xls'
30
- @simple_file_xlsx = @dir + '/workbook.xlsx'
31
- end
32
-
33
- after do
34
- Excel.kill_all
35
- rm_tmp(@dir)
36
- end
37
-
38
- describe "methods, own_methods, respond_to?" do
39
-
40
- before do
41
- @book1 = Book.open(@simple_file)
42
- @ole_workbook_methods =
43
- ["Activate", "ActiveSheet", "Application", "Close", "FullName", "HasPassword", "Name", "Names",
44
- "Password", "Protect", "ProtectSharing", "ProtectStructure", "Protect", "ReadOnly", "Save",
45
- "SaveAs", "Saved", "Sheets", "Unprotect"]
46
- @book_methods = ["focus", "add_sheet", "alive?", "close", "filename", "nameval", "ole_object",
47
- "ole_workbook", "reopen", "save", "save_as", "saved", "set_nameval"]
48
- @ole_excel_methods =
49
- ["ActiveCell", "ActiveSheet", "ActiveWorkbook", "Application", "Calculate", "Cells", "Columns",
50
- "DisplayAlerts", "Evaluate", "Hwnd", "Name", "Names", "Quit", "Range", "Ready", "Save",
51
- "Sheets", "UserName", "Value", "Visible", "Workbooks", "Worksheets"]
52
- @excel_methods = ["alive?", "book_class", "close", "displayalerts", "recreate", "visible",
53
- "with_displayalerts"]
54
- @ole_sheet_methods = []
55
- # ["Activate", "Calculate", "Copy", "Name", "Select", "Evaluate", "Protect", "Unprotect"]
56
- @sheet_methods = ["book_class", "col_range", "each", "each_column", "each_column_with_index",
57
- "each_row", "each_row_with_index", "nameval", "rangeval",
58
- "set_rangeval", "row_range", "set_nameval"]
59
- end
60
-
61
- after do
62
- @book1.close
63
- end
64
-
65
- it "should do methods for book" do
66
- ((@ole_workbook_methods + @book_methods) - @book1.methods).should be_empty
67
- (Object.instance_methods.select{|m| m =~ /^(?!\_)/} - @book1.methods).should be_empty
68
- end
69
-
70
- it "should do own_methods with popular ole_workbook and workbook methods" do
71
- ((@ole_workbook_methods + @book_methods) - @book1.own_methods).should be_empty
72
- (Object.instance_methods - @book1.own_methods).should == Object.instance_methods
73
- end
74
-
75
- it "should respond to popular workbook methods" do
76
- @book_methods.each{|m| @book1.respond_to?(m).should be_true}
77
- end
78
-
79
- it "should do methods for excel" do
80
- ((@ole_excel_methods + @excel_methods) - @book1.excel.methods).should be_empty
81
- (Object.instance_methods.select{|m| m =~ /^(?!\_)/} - @book1.excel.methods).sort.should be_empty
82
- end
83
-
84
- it "should do own_methods with popular ole_excel and excel methods" do
85
- ((@ole_excel_methods + @excel_methods) - @book1.excel.own_methods).should be_empty
86
- (Object.instance_methods - @book1.excel.own_methods).should == Object.instance_methods
87
- end
88
-
89
- it "should respond to popular excel methods" do
90
- @excel_methods.each{|m| @book1.excel.respond_to?(m).should be_true}
91
- end
92
-
93
- it "should do methods for sheet" do
94
- ((@ole_sheet_methods + @sheet_methods) - @book1.sheet(1).methods).should be_empty
95
- (Object.instance_methods.select{|m| m =~ /^(?!\_)/} - @book1.sheet(1).methods).sort.should be_empty
96
- end
97
-
98
- it "should do own_methods with popular ole_excel and excel methods" do
99
- ((@ole_sheet_methods + @sheet_methods) - @book1.sheet(1).own_methods).should == [] #be_empty
100
- (Object.instance_methods - @book1.sheet(1).own_methods).should == Object.instance_methods
101
- end
102
-
103
- it "should respond to popular sheet methods" do
104
- @sheet_methods.each{|m| @book1.sheet(1).respond_to?(m).should be_true}
105
- end
106
-
107
- end
108
-
109
- describe "#absolute_path" do
110
-
111
- context "with standard" do
112
-
113
- before do
114
- @previous_dir = Dir.getwd
115
- end
116
-
117
- after do
118
- Dir.chdir @previous_dir
119
- end
120
-
121
- it "should return the right absolute paths" do
122
- absolute_path("C:/abc").should == "C:\\abc"
123
- absolute_path("C:\\abc").should == "C:\\abc"
124
- Dir.chdir "C:/windows"
125
- absolute_path("C:abc").downcase.should == Dir.pwd.gsub("/","\\").downcase + "\\abc"
126
- absolute_path("C:abc").upcase.should == File.expand_path("abc").gsub("/","\\").upcase
127
- end
128
-
129
- it "should return right absolute path name" do
130
- filename = 'C:/Dokumente und Einstellungen/Zauberthomas/Eigene Dateien/robust_excel_ole/spec/book_spec.rb'
131
- absolute_path(filename).gsub("\\","/").should == filename
132
- end
133
- end
134
- end
135
-
136
- describe "canonize" do
137
-
138
- context "with standard" do
139
-
140
- it "should reduce slash at the end" do
141
- normalize("hallo/").should == "hallo"
142
- normalize("/this/is/the/Path/").should == "/this/is/the/Path"
143
- end
144
-
145
- it "should save capital letters" do
146
- normalize("HALLO/").should == "HALLO"
147
- normalize("/This/IS/tHe/patH/").should == "/This/IS/tHe/patH"
148
- end
149
-
150
- it "should reduce multiple shlashes" do
151
- normalize("/this/is//the/path").should == "/this/is/the/path"
152
- normalize("///this/////////is//the/path/////").should == "/this/is/the/path"
153
- end
154
-
155
- it "should reduce dots in the paths" do
156
- canonize("/this/is/./the/path").should == "/this/is/the/path"
157
- canonize("this/.is/./the/pa.th/").should == "this/.is/the/pa.th"
158
- canonize("this//.///.//.is/the/pa.th/").should == "this/.is/the/pa.th"
159
- end
160
-
161
- it "should change to the upper directory with two dots" do
162
- canonize("/this/is/../the/path").should == "/this/the/path"
163
- canonize("this../.i.s/.../..the/..../pa.th/").should == "this../.i.s/.../..the/..../pa.th"
164
- end
165
-
166
- it "should downcase" do
167
- canonize("/This/IS/tHe/path").should == "/this/is/the/path"
168
- canonize("///THIS/.///./////iS//the/../PatH/////").should == "/this/is/path"
169
- end
170
-
171
- it "should raise an error for no strings" do
172
- expect{
173
- canonize(1)
174
- }.to raise_error(TypeREOError, "No string given to canonize, but 1")
175
- end
176
-
177
- end
178
- end
179
-
180
- describe "path" do
181
-
182
- it "should create a path" do
183
- path1 = "this" / "is" / "a" / "path"
184
- path1.should == "this/is/a/path"
185
- path2 = "this" / "is" / "a" / "path" /
186
- #path2.should == "this/is/a/path/"
187
- path3 = "this" /
188
- #path3.should == "this/"
189
- path4 = "this" / nil
190
- path4.should == "this"
191
- end
192
- end
193
-
194
- describe "Object methods" do
195
-
196
- before do
197
- @book = Book.open(@simple_file)
198
- @sheet = @book.sheet(1)
199
- end
200
-
201
- before do
202
- @book.close
203
- end
204
-
205
- it "should raise an error when asking excel of a sheet" do
206
- expect{
207
- @sheet.excel
208
- }.to raise_error(TypeREOError, "receiver instance is neither an Excel nor a Book")
209
- end
210
- end
211
- end
212
- end
@@ -1,131 +0,0 @@
1
- # -*- cdoing: utf-8 -*-
2
- require File.join(File.dirname(__FILE__), './spec_helper')
3
-
4
- include RobustExcelOle
5
-
6
- describe RobustExcelOle::Range do
7
-
8
- before(:all) do
9
- excel = Excel.new(:reuse => true)
10
- open_books = excel == nil ? 0 : excel.Workbooks.Count
11
- puts "*** open books *** : #{open_books}" if open_books > 0
12
- Excel.kill_all
13
- end
14
-
15
- before do
16
- @dir = create_tmpdir
17
- @book = Book.open(@dir + '/workbook.xls', :force_excel => :new)
18
- @sheet = @book.sheet(2)
19
- @range = RobustExcelOle::Range.new(@sheet.ole_worksheet.UsedRange.Rows(1))
20
- end
21
-
22
- after do
23
- @book.close
24
- Excel.kill_all
25
- rm_tmp(@dir)
26
- end
27
-
28
- describe "#each" do
29
- it "items is RobustExcelOle::Cell" do
30
- @range.each do |cell|
31
- cell.should be_kind_of RobustExcelOle::Cell
32
- end
33
- end
34
- end
35
-
36
- describe "#values" do
37
- context "with (0..2)" do
38
- it { @range.values(0..2).should eq ['simple', 'file', 'sheet2'] }
39
- end
40
-
41
- context "with (1..2)" do
42
- it { @range.values(1..2).should eq ['file', 'sheet2'] }
43
- end
44
-
45
- context "with (2..2)" do
46
- it { @range.values(2..2).should eq ['sheet2'] }
47
- end
48
-
49
- context "with no arguments" do
50
- it { @range.values.should eq ['simple', 'file', 'sheet2'] }
51
- end
52
-
53
- context "when instance is column range" do
54
- before do
55
- @sheet = @book.sheet(1)
56
- @range = RobustExcelOle::Range.new(@sheet.ole_worksheet.UsedRange.Columns(1))
57
- end
58
- it { @range.values.should eq ['foo', 'foo', 'matz'] }
59
- end
60
-
61
- context "read 'merge_cells.xls'" do
62
- before do
63
- @merge_cells_book = Book.open("#{@dir}/merge_cells.xls", :force_excel => :new)
64
- @merge_cells_sheet = @merge_cells_book.sheet(1)
65
- end
66
-
67
- after do
68
- @merge_cells_book.close
69
- end
70
-
71
- context "only merged_cell" do
72
- before do
73
- @only_merged_range = @merge_cells_sheet.row_range(4)
74
- end
75
-
76
- context "without argument" do
77
- it { @only_merged_range.values.should eq ['merged', 'merged', 'merged', 'merged'] }
78
- end
79
-
80
- context "with (1..2)" do
81
- it { @only_merged_range.values(2..3).should eq ['merged', 'merged'] }
82
- end
83
-
84
- end
85
-
86
- context "mix merged cell and no merge cell" do
87
- before do
88
- @mix_merged_no_merged_range = @merge_cells_sheet.row_range(2)
89
- end
90
-
91
- context "without argument" do
92
- it { @mix_merged_no_merged_range.values.should eq ['first merged', 'first merged', 'first merged', nil] }
93
- end
94
-
95
- context "with (2..3)" do
96
- it { @mix_merged_no_merged_range.values(2..3).should eq ['first merged', nil] }
97
- end
98
-
99
- end
100
- end
101
- end
102
-
103
- describe "#[]" do
104
- context "access [0]" do
105
- it { @range[0].should be_kind_of RobustExcelOle::Cell }
106
- it { @range[0].value.should eq 'simple' }
107
- end
108
-
109
- context "access [2]" do
110
- it { @range[2].value.should eq 'sheet2' }
111
- end
112
-
113
- context "access [0] and [1] and [2]" do
114
- it "should get every values" do
115
- @range[0].value.should eq 'simple'
116
- @range[1].value.should eq 'file'
117
- @range[2].value.should eq 'sheet2'
118
- end
119
- end
120
- end
121
-
122
- describe "#method_missing" do
123
- it "can access COM method" do
124
- @range.Range(@range.Cells.Item(1), @range.Cells.Item(3)).value.should eq [@range.values(0..2)]
125
- end
126
-
127
- context "unknown method" do
128
- it { expect { @range.hogehogefoo}.to raise_error }
129
- end
130
- end
131
- end
@@ -1,130 +0,0 @@
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
- it "should simple test" do
16
- puts "a"
17
- end
18
-
19
- before(:all) do
20
- excel = Excel.new(:reuse => true)
21
- open_books = excel == nil ? 0 : excel.Workbooks.Count
22
- puts "*** open books *** : #{open_books}" if open_books > 0
23
- Excel.kill_all
24
- end
25
-
26
- before do
27
- @dir = create_tmpdir
28
- @simple_file = @dir + '/workbook.xls'
29
- @simple_save_file = @dir + '/workbook_save.xls'
30
- @different_file = @dir + '/different_workbook.xls'
31
- @simple_file_other_path = @dir + '/more_data/workbook.xls'
32
- @another_simple_file = @dir + '/another_workbook.xls'
33
- @linked_file = @dir + '/workbook_linked.xlsm'
34
- @simple_file_xlsm = @dir + '/workbook.xls'
35
- @simple_file_xlsx = @dir + '/workbook.xlsx'
36
- end
37
-
38
- after do
39
- Excel.kill_all
40
- #rm_tmp(@dir)
41
- end
42
-
43
- describe "trace" do
44
-
45
- it "should put some number" do
46
- a = 4
47
- REOCommon::trace "some text #{a}"
48
- end
49
-
50
- it "should put another text" do
51
- b = Book.open(@simple_file)
52
- REOCommon::trace "book: #{b}"
53
- end
54
- end
55
-
56
- describe "own_methods" do
57
-
58
- before do
59
- @book1 = Book.open(@simple_file)
60
- @ole_workbook_methods =
61
- ["Activate", "ActiveSheet", "Application", "Close", "FullName", "HasPassword", "Name", "Names",
62
- "Password", "Protect", "ProtectSharing", "ProtectStructure", "Protect", "ReadOnly", "Save",
63
- "SaveAs", "Saved", "Sheets", "Unprotect"]
64
- @book_methods = ["focus", "add_sheet", "alive?", "close", "filename", "nameval", "ole_object",
65
- "ole_workbook", "reopen", "save", "save_as", "saved", "set_nameval"]
66
- @ole_excel_methods =
67
- ["ActiveCell", "ActiveSheet", "ActiveWorkbook", "Application", "Calculate", "Cells", "Columns",
68
- "DisplayAlerts", "Evaluate", "Hwnd", "Name", "Names", "Quit", "Range", "Ready", "Save",
69
- "Sheets", "UserName", "Value", "Visible", "Workbooks", "Worksheets"]
70
- @excel_methods = ["alive?", "book_class", "close", "displayalerts", "recreate", "visible", "with_displayalerts"]
71
- end
72
-
73
- after do
74
- @book1.close
75
- end
76
-
77
- it "should do own_methods with popular ole_workbook and workbook methods" do
78
- ((@ole_workbook_methods + @book_methods) - @book1.own_methods).should be_empty
79
- (Object.instance_methods - @book1.own_methods).should == Object.instance_methods
80
- end
81
-
82
- it "should do own_methods with popular ole_excel and excel methods" do
83
- ((@ole_excel_methods + @excel_methods) - @book1.excel.own_methods).should be_empty
84
- (Object.instance_methods - @book1.excel.own_methods).should == Object.instance_methods
85
- end
86
-
87
- end
88
-
89
- describe "Object methods" do
90
-
91
- before do
92
- @book = Book.open(@simple_file)
93
- @sheet = @book.sheet(1)
94
- end
95
-
96
- before do
97
- @book.close
98
- end
99
-
100
- it "should raise an error when asking excel of a sheet" do
101
- expect{
102
- @sheet.excel
103
- }.to raise_error(TypeREOError, "receiver instance is neither an Excel nor a Book")
104
- end
105
-
106
- end
107
-
108
- describe "misc" do
109
-
110
- LOG_TO_STDOUT = true
111
- REOCommon::trace "foo"
112
-
113
- LOG_TO_STDOUT = false
114
- REOCommon::trace "foo"
115
-
116
- REO_LOG_DIR = ""
117
- REOCommon::trace "foo"
118
-
119
- REO_LOG_DIR = "C:"
120
- REOCommon::trace "foo"
121
-
122
- REOCommon::tr1 "foo"
123
-
124
- h = {:a => {:c => 4}, :b => 2}
125
- REOCommon::puts_hash(h)
126
-
127
- end
128
-
129
- end
130
- end