robust_excel_ole 0.3.5 → 0.3.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.
- data/Changelog +33 -0
- data/README.rdoc +97 -35
- data/README_detail.rdoc +121 -53
- data/examples/edit_sheets/example_naming.rb +1 -0
- data/lib/reo_console.rb +52 -0
- data/lib/robust_excel_ole.rb +41 -7
- data/lib/robust_excel_ole/book.rb +327 -193
- data/lib/robust_excel_ole/bookstore.rb +33 -17
- data/lib/robust_excel_ole/excel.rb +280 -188
- data/lib/robust_excel_ole/sheet.rb +29 -16
- data/lib/robust_excel_ole/version.rb +1 -1
- data/lib/spec_helper.rb +1 -1
- data/reo.bat +1 -1
- data/spec/book_specs/book_all_spec.rb +22 -0
- data/spec/{book_close_spec.rb → book_specs/book_close_spec.rb} +14 -14
- data/spec/{book_misc_spec.rb → book_specs/book_misc_spec.rb} +38 -29
- data/spec/{book_open_spec.rb → book_specs/book_open_spec.rb} +40 -16
- data/spec/{book_save_spec.rb → book_specs/book_save_spec.rb} +173 -12
- data/spec/{book_sheet_spec.rb → book_specs/book_sheet_spec.rb} +8 -4
- data/spec/{book_spec.rb → book_specs/book_spec.rb} +456 -187
- data/spec/{book_subclass_spec.rb → book_specs/book_subclass_spec.rb} +4 -4
- data/spec/{book_unobtr_spec.rb → book_specs/book_unobtr_spec.rb} +64 -4
- data/spec/bookstore_spec.rb +11 -4
- data/spec/cell_spec.rb +7 -5
- data/spec/data/another_workbook.xls +0 -0
- data/spec/data/different_workbook.xls +0 -0
- data/spec/data/more_data/workbook.xls +0 -0
- data/spec/data/workbook.xls +0 -0
- data/spec/excel_spec.rb +367 -87
- data/spec/range_spec.rb +6 -4
- data/spec/robust_excel_ole_spec.rb +113 -0
- data/spec/sheet_spec.rb +42 -6
- metadata +16 -12
data/spec/range_spec.rb
CHANGED
@@ -1,18 +1,20 @@
|
|
1
1
|
# -*- cdoing: utf-8 -*-
|
2
2
|
require File.join(File.dirname(__FILE__), './spec_helper')
|
3
3
|
|
4
|
+
include RobustExcelOle
|
5
|
+
|
4
6
|
describe RobustExcelOle::Range do
|
5
7
|
|
6
8
|
before(:all) do
|
7
|
-
excel =
|
9
|
+
excel = Excel.new(:reuse => true)
|
8
10
|
open_books = excel == nil ? 0 : excel.Workbooks.Count
|
9
11
|
puts "*** open books *** : #{open_books}" if open_books > 0
|
10
|
-
|
12
|
+
Excel.close_all
|
11
13
|
end
|
12
14
|
|
13
15
|
before do
|
14
16
|
@dir = create_tmpdir
|
15
|
-
@book =
|
17
|
+
@book = Book.open(@dir + '/workbook.xls')
|
16
18
|
@sheet = @book[1]
|
17
19
|
@range = RobustExcelOle::Range.new(@sheet.worksheet.UsedRange.Rows(1))
|
18
20
|
end
|
@@ -57,7 +59,7 @@ describe RobustExcelOle::Range do
|
|
57
59
|
|
58
60
|
context "read 'merge_cells.xls'" do
|
59
61
|
before do
|
60
|
-
@merge_cells_book =
|
62
|
+
@merge_cells_book = Book.open("#{@dir}/merge_cells.xls")
|
61
63
|
@merge_cells_sheet = @merge_cells_book[0]
|
62
64
|
end
|
63
65
|
|
@@ -0,0 +1,113 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
|
3
|
+
require File.join(File.dirname(__FILE__), './spec_helper')
|
4
|
+
|
5
|
+
$VERBOSE = nil
|
6
|
+
|
7
|
+
include RobustExcelOle
|
8
|
+
|
9
|
+
describe RobustExcelOle do
|
10
|
+
|
11
|
+
before(:all) do
|
12
|
+
excel = Excel.new(:reuse => true)
|
13
|
+
open_books = excel == nil ? 0 : excel.Workbooks.Count
|
14
|
+
puts "*** open books *** : #{open_books}" if open_books > 0
|
15
|
+
Excel.close_all
|
16
|
+
end
|
17
|
+
|
18
|
+
before do
|
19
|
+
@dir = create_tmpdir
|
20
|
+
@simple_file = @dir + '/workbook.xls'
|
21
|
+
end
|
22
|
+
|
23
|
+
after do
|
24
|
+
#Excel.close_all
|
25
|
+
rm_tmp(@dir)
|
26
|
+
end
|
27
|
+
|
28
|
+
describe "t" do
|
29
|
+
|
30
|
+
it "should put some" do
|
31
|
+
a = 4
|
32
|
+
t "some text #{a}"
|
33
|
+
end
|
34
|
+
|
35
|
+
it "should put another text" do
|
36
|
+
a = 5
|
37
|
+
t "another text #{a}"
|
38
|
+
end
|
39
|
+
|
40
|
+
end
|
41
|
+
|
42
|
+
describe "#absolute_path" do
|
43
|
+
|
44
|
+
context "with standard" do
|
45
|
+
|
46
|
+
before do
|
47
|
+
@previous_dir = Dir.getwd
|
48
|
+
end
|
49
|
+
|
50
|
+
after do
|
51
|
+
Dir.chdir @previous_dir
|
52
|
+
end
|
53
|
+
|
54
|
+
it "should return the right absolute paths" do
|
55
|
+
absolute_path("C:/abc").should == "C:\\abc"
|
56
|
+
absolute_path("C:\\abc").should == "C:\\abc"
|
57
|
+
Dir.chdir "C:/windows"
|
58
|
+
absolute_path("C:abc").downcase.should == Dir.pwd.gsub("/","\\").downcase + "\\abc"
|
59
|
+
absolute_path("C:abc").upcase.should == File.expand_path("abc").gsub("/","\\").upcase
|
60
|
+
end
|
61
|
+
|
62
|
+
it "should return right absolute path name" do
|
63
|
+
filename = 'C:/Dokumente und Einstellungen/Zauberthomas/Eigene Dateien/robust_excel_ole/spec/book_spec.rb'
|
64
|
+
absolute_path(filename).gsub("\\","/").should == filename
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
describe "canonize" do
|
70
|
+
|
71
|
+
context "with standard" do
|
72
|
+
|
73
|
+
it "should reduce slash at the end" do
|
74
|
+
normalize("hallo/").should == "hallo"
|
75
|
+
normalize("/this/is/the/Path/").should == "/this/is/the/Path"
|
76
|
+
end
|
77
|
+
|
78
|
+
it "should save capital letters" do
|
79
|
+
normalize("HALLO/").should == "HALLO"
|
80
|
+
normalize("/This/IS/tHe/patH/").should == "/This/IS/tHe/patH"
|
81
|
+
end
|
82
|
+
|
83
|
+
it "should reduce multiple shlashes" do
|
84
|
+
normalize("/this/is//the/path").should == "/this/is/the/path"
|
85
|
+
normalize("///this/////////is//the/path/////").should == "/this/is/the/path"
|
86
|
+
end
|
87
|
+
|
88
|
+
it "should reduce dots in the paths" do
|
89
|
+
canonize("/this/is/./the/path").should == "/this/is/the/path"
|
90
|
+
canonize("this/.is/./the/pa.th/").should == "this/.is/the/pa.th"
|
91
|
+
canonize("this//.///.//.is/the/pa.th/").should == "this/.is/the/pa.th"
|
92
|
+
end
|
93
|
+
|
94
|
+
it "should change to the upper directory with two dots" do
|
95
|
+
canonize("/this/is/../the/path").should == "/this/the/path"
|
96
|
+
canonize("this../.i.s/.../..the/..../pa.th/").should == "this../.i.s/.../..the/..../pa.th"
|
97
|
+
end
|
98
|
+
|
99
|
+
it "should downcase" do
|
100
|
+
canonize("/This/IS/tHe/path").should == "/this/is/the/path"
|
101
|
+
canonize("///THIS/.///./////iS//the/../PatH/////").should == "/this/is/path"
|
102
|
+
end
|
103
|
+
|
104
|
+
it "should raise an error for no strings" do
|
105
|
+
expect{
|
106
|
+
canonize(1)
|
107
|
+
}.to raise_error(ExcelError, "No string given to canonize, but 1")
|
108
|
+
end
|
109
|
+
|
110
|
+
end
|
111
|
+
end
|
112
|
+
|
113
|
+
end
|
data/spec/sheet_spec.rb
CHANGED
@@ -16,6 +16,14 @@ describe RobustExcelOle::Sheet do
|
|
16
16
|
rm_tmp(@dir)
|
17
17
|
end
|
18
18
|
|
19
|
+
before(:all) do
|
20
|
+
Excel.close_all
|
21
|
+
end
|
22
|
+
|
23
|
+
after(:all) do
|
24
|
+
Excel.close_all
|
25
|
+
end
|
26
|
+
|
19
27
|
describe ".initialize" do
|
20
28
|
context "when open sheet protected(with password is 'protect')" do
|
21
29
|
before do
|
@@ -72,7 +80,7 @@ describe RobustExcelOle::Sheet do
|
|
72
80
|
new_sheet = @book.add_sheet @sheet
|
73
81
|
expect{
|
74
82
|
new_sheet.name = 'foo'
|
75
|
-
}.to raise_error(ExcelErrorSheet,
|
83
|
+
}.to raise_error(ExcelErrorSheet, /sheet name "foo" already exists/)
|
76
84
|
end
|
77
85
|
end
|
78
86
|
end
|
@@ -377,7 +385,7 @@ describe RobustExcelOle::Sheet do
|
|
377
385
|
context "returning the value of a range" do
|
378
386
|
|
379
387
|
before do
|
380
|
-
@book1 = RobustExcelOle::Book.open(@dir + '/another_workbook.xls'
|
388
|
+
@book1 = RobustExcelOle::Book.open(@dir + '/another_workbook.xls')
|
381
389
|
@sheet1 = @book1[0]
|
382
390
|
end
|
383
391
|
|
@@ -393,15 +401,19 @@ describe RobustExcelOle::Sheet do
|
|
393
401
|
it "should raise an error if name not defined" do
|
394
402
|
expect {
|
395
403
|
value = @sheet1.nvalue("foo")
|
396
|
-
}.to raise_error(SheetError,
|
404
|
+
}.to raise_error(SheetError, /cannot evaluate name "foo" in sheet/)
|
397
405
|
expect {
|
398
406
|
@sheet1["foo"]
|
399
|
-
}.to raise_error(SheetError,
|
407
|
+
}.to raise_error(SheetError, /cannot evaluate name "foo" in sheet/)
|
400
408
|
end
|
401
409
|
|
402
|
-
it "should return default value if name not defined" do
|
410
|
+
it "should return default value if name not defined and default value is given" do
|
403
411
|
@sheet1.nvalue("foo", :default => 2).should == 2
|
404
412
|
end
|
413
|
+
|
414
|
+
it "should evaluate a formula" do
|
415
|
+
@sheet1.nvalue("named_formula").should == 4
|
416
|
+
end
|
405
417
|
end
|
406
418
|
end
|
407
419
|
|
@@ -428,6 +440,12 @@ describe RobustExcelOle::Sheet do
|
|
428
440
|
@sheet1.nvalue("firstcell").should == "bar"
|
429
441
|
@sheet1[1,1].Value.should == "bar"
|
430
442
|
end
|
443
|
+
|
444
|
+
it "should raise an error" do
|
445
|
+
expect{
|
446
|
+
@sheet1.nvalue("foo")
|
447
|
+
}.to raise_error(SheetError, /cannot evaluate name "foo" in sheet/)
|
448
|
+
end
|
431
449
|
end
|
432
450
|
end
|
433
451
|
|
@@ -461,11 +479,29 @@ describe RobustExcelOle::Sheet do
|
|
461
479
|
it "should raise an error" do
|
462
480
|
expect{
|
463
481
|
@sheet1.set_name("foo",-2,1)
|
464
|
-
}.to raise_error(SheetError,
|
482
|
+
}.to raise_error(SheetError, /cannot add name "foo" to cell with row -2 and column 1/)
|
465
483
|
end
|
466
484
|
end
|
467
485
|
end
|
468
486
|
|
487
|
+
describe "send methods to worksheet" do
|
488
|
+
|
489
|
+
it "should send methods to worksheet" do
|
490
|
+
@sheet.Cells(1,1).Value.should eq 'foo'
|
491
|
+
end
|
492
|
+
|
493
|
+
it "should raise an error for unknown methods or properties" do
|
494
|
+
expect{
|
495
|
+
@sheet.Foo
|
496
|
+
}.to raise_error(VBAMethodMissingError, /unknown VBA property or method :Foo/)
|
497
|
+
end
|
498
|
+
|
499
|
+
# it "should report that worksheet is not alive" do
|
500
|
+
# @book.close
|
501
|
+
# expect{ @sheet.Nonexisting_method }.to raise_error(ExcelError, "method missing: worksheet nil")
|
502
|
+
# end
|
503
|
+
end
|
504
|
+
|
469
505
|
describe "#method_missing" do
|
470
506
|
it "can access COM method" do
|
471
507
|
@sheet.Cells(1,1).Value.should eq 'foo'
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: robust_excel_ole
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 31
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 3
|
9
|
-
-
|
10
|
-
version: 0.3.
|
9
|
+
- 6
|
10
|
+
version: 0.3.6
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- traths
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2015-
|
18
|
+
date: 2015-10-27 00:00:00 +01:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
@@ -46,6 +46,7 @@ extra_rdoc_files:
|
|
46
46
|
- LICENSE
|
47
47
|
files:
|
48
48
|
- .gitignore
|
49
|
+
- Changelog
|
49
50
|
- Gemfile
|
50
51
|
- Guardfile
|
51
52
|
- LICENSE
|
@@ -75,6 +76,7 @@ files:
|
|
75
76
|
- examples/open_save_close/example_reuse.rb
|
76
77
|
- examples/open_save_close/example_simple.rb
|
77
78
|
- examples/open_save_close/example_unobtrusively.rb
|
79
|
+
- lib/reo_console.rb
|
78
80
|
- lib/robust_excel_ole.rb
|
79
81
|
- lib/robust_excel_ole/book.rb
|
80
82
|
- lib/robust_excel_ole/bookstore.rb
|
@@ -89,14 +91,15 @@ files:
|
|
89
91
|
- lib/spec_helper.rb
|
90
92
|
- reo.bat
|
91
93
|
- robust_excel_ole.gemspec
|
92
|
-
- spec/
|
93
|
-
- spec/
|
94
|
-
- spec/
|
95
|
-
- spec/
|
96
|
-
- spec/
|
97
|
-
- spec/
|
98
|
-
- spec/
|
99
|
-
- spec/
|
94
|
+
- spec/book_specs/book_all_spec.rb
|
95
|
+
- spec/book_specs/book_close_spec.rb
|
96
|
+
- spec/book_specs/book_misc_spec.rb
|
97
|
+
- spec/book_specs/book_open_spec.rb
|
98
|
+
- spec/book_specs/book_save_spec.rb
|
99
|
+
- spec/book_specs/book_sheet_spec.rb
|
100
|
+
- spec/book_specs/book_spec.rb
|
101
|
+
- spec/book_specs/book_subclass_spec.rb
|
102
|
+
- spec/book_specs/book_unobtr_spec.rb
|
100
103
|
- spec/bookstore_spec.rb
|
101
104
|
- spec/cell_spec.rb
|
102
105
|
- spec/cygwin_spec.rb
|
@@ -116,6 +119,7 @@ files:
|
|
116
119
|
- spec/helpers/create_temporary_dir.rb
|
117
120
|
- spec/helpers/key_sender.rb
|
118
121
|
- spec/range_spec.rb
|
122
|
+
- spec/robust_excel_ole_spec.rb
|
119
123
|
- spec/sheet_spec.rb
|
120
124
|
- spec/spec_helper.rb
|
121
125
|
- version.rb
|