wrap_excel 0.0.8 → 0.0.9
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/README.ja.rdoc +2 -2
- data/README.rdoc +2 -2
- data/lib/wrap_excel/book.rb +22 -4
- data/lib/wrap_excel/version.rb +1 -1
- data/spec/book_spec.rb +100 -0
- metadata +47 -17
data/README.ja.rdoc
CHANGED
@@ -74,14 +74,14 @@ rangeオブジェクトからのアクセス。
|
|
74
74
|
|
75
75
|
既存のファイルは保存可能です。
|
76
76
|
|
77
|
-
WrapExcel::Book.open('./sample.xls') do |book|
|
77
|
+
WrapExcel::Book.open('./sample.xls', :read_only => false) do |book|
|
78
78
|
# do something
|
79
79
|
book.save
|
80
80
|
end
|
81
81
|
|
82
82
|
もしくは
|
83
83
|
|
84
|
-
book = WrapExcel::Book.open('./sample.xls')
|
84
|
+
book = WrapExcel::Book.open('./sample.xls', :read_only => false)
|
85
85
|
book.save
|
86
86
|
book.close
|
87
87
|
|
data/README.rdoc
CHANGED
@@ -74,14 +74,14 @@ Read from range object
|
|
74
74
|
|
75
75
|
Can save an existing file.
|
76
76
|
|
77
|
-
WrapExcel::Book.open('./sample.xls') do |book|
|
77
|
+
WrapExcel::Book.open('./sample.xls', :read_only => false) do |book|
|
78
78
|
# do something
|
79
79
|
book.save
|
80
80
|
end
|
81
81
|
|
82
82
|
or
|
83
83
|
|
84
|
-
book = WrapExcel::Book.open('./sample.xls')
|
84
|
+
book = WrapExcel::Book.open('./sample.xls', :read_only => false)
|
85
85
|
book.save
|
86
86
|
book.close
|
87
87
|
|
data/lib/wrap_excel/book.rb
CHANGED
@@ -5,7 +5,7 @@ module WrapExcel
|
|
5
5
|
attr_reader :book
|
6
6
|
|
7
7
|
def initialize(file, options={ }, &block)
|
8
|
-
options = {
|
8
|
+
@options = {
|
9
9
|
:read_only => true,
|
10
10
|
:displayalerts => false,
|
11
11
|
:visible => false
|
@@ -13,10 +13,10 @@ module WrapExcel
|
|
13
13
|
file = WrapExcel::Cygwin.cygpath('-w', file) if RUBY_PLATFORM =~ /cygwin/
|
14
14
|
file = WIN32OLE.new('Scripting.FileSystemObject').GetAbsolutePathName(file)
|
15
15
|
@winapp = WIN32OLE.new('Excel.Application')
|
16
|
-
@winapp.DisplayAlerts = options[:displayalerts]
|
17
|
-
@winapp.Visible = options[:visible]
|
16
|
+
@winapp.DisplayAlerts = @options[:displayalerts]
|
17
|
+
@winapp.Visible = @options[:visible]
|
18
18
|
WIN32OLE.const_load(@winapp, WrapExcel) unless WrapExcel.const_defined?(:CONSTANTS)
|
19
|
-
@book = @winapp.Workbooks.Open(file,{ 'ReadOnly' => options[:read_only] })
|
19
|
+
@book = @winapp.Workbooks.Open(file,{ 'ReadOnly' => @options[:read_only] })
|
20
20
|
|
21
21
|
if block
|
22
22
|
begin
|
@@ -35,6 +35,7 @@ module WrapExcel
|
|
35
35
|
end
|
36
36
|
|
37
37
|
def save
|
38
|
+
raise IOError, "Not opened for writing(open with :read_only option)" if @options[:read_only]
|
38
39
|
@book.save
|
39
40
|
end
|
40
41
|
|
@@ -49,6 +50,23 @@ module WrapExcel
|
|
49
50
|
end
|
50
51
|
end
|
51
52
|
|
53
|
+
def add_sheet(sheet = nil, options = { })
|
54
|
+
if sheet.is_a? Hash
|
55
|
+
options = sheet
|
56
|
+
sheet = nil
|
57
|
+
end
|
58
|
+
|
59
|
+
new_sheet_name = options.delete(:as)
|
60
|
+
|
61
|
+
after_or_before, base_sheet = options.first || [:after, WrapExcel::Sheet.new(@book.Worksheets.Item(@book.Worksheets.Count))]
|
62
|
+
base_sheet = base_sheet.sheet
|
63
|
+
sheet ? sheet.Copy({ after_or_before => base_sheet }) : @book.WorkSheets.Add({ after_or_before => base_sheet })
|
64
|
+
|
65
|
+
new_sheet = WrapExcel::Sheet.new(@winapp.Activesheet)
|
66
|
+
new_sheet.name = new_sheet_name if new_sheet_name
|
67
|
+
new_sheet
|
68
|
+
end
|
69
|
+
|
52
70
|
def self.open(file, options={ }, &block)
|
53
71
|
new(file, options, &block)
|
54
72
|
end
|
data/lib/wrap_excel/version.rb
CHANGED
data/spec/book_spec.rb
CHANGED
@@ -76,4 +76,104 @@ describe WrapExcel::Book do
|
|
76
76
|
}
|
77
77
|
end
|
78
78
|
end
|
79
|
+
|
80
|
+
describe "#add_sheet" do
|
81
|
+
before do
|
82
|
+
@book = WrapExcel::Book.open(@simple_file)
|
83
|
+
@sheet = @book[0]
|
84
|
+
end
|
85
|
+
|
86
|
+
after do
|
87
|
+
@book.close
|
88
|
+
end
|
89
|
+
|
90
|
+
context "only first argument" do
|
91
|
+
it "should add worksheet" do
|
92
|
+
expect { @book.add_sheet @sheet }.to change{ @book.book.Worksheets.Count }.from(3).to(4)
|
93
|
+
end
|
94
|
+
|
95
|
+
it "should return copyed sheet" do
|
96
|
+
sheet = @book.add_sheet @sheet
|
97
|
+
copyed_sheet = @book.book.Worksheets.Item(@book.book.Worksheets.Count)
|
98
|
+
sheet.name.should eq copyed_sheet.name
|
99
|
+
end
|
100
|
+
end
|
101
|
+
|
102
|
+
context "with first argument" do
|
103
|
+
context "with second argument is {:as => 'copyed_name'}" do
|
104
|
+
it "copyed sheet name should be 'copyed_name'" do
|
105
|
+
@book.add_sheet(@sheet, :as => 'copyed_name').name.should eq 'copyed_name'
|
106
|
+
end
|
107
|
+
end
|
108
|
+
|
109
|
+
context "with second argument is {:before => @sheet}" do
|
110
|
+
it "should add the first sheet" do
|
111
|
+
@book.add_sheet(@sheet, :before => @sheet).name.should eq @book[0].name
|
112
|
+
end
|
113
|
+
end
|
114
|
+
|
115
|
+
context "with second argument is {:after => @sheet}" do
|
116
|
+
it "should add the first sheet" do
|
117
|
+
@book.add_sheet(@sheet, :after => @sheet).name.should eq @book[1].name
|
118
|
+
end
|
119
|
+
end
|
120
|
+
|
121
|
+
context "with second argument is {:before => @book[2], :after => @sheet}" do
|
122
|
+
it "should arguments in the first is given priority" do
|
123
|
+
@book.add_sheet(@sheet, :before => @book[2], :after => @sheet).name.should eq @book[2].name
|
124
|
+
end
|
125
|
+
end
|
126
|
+
|
127
|
+
end
|
128
|
+
|
129
|
+
context "without first argument" do
|
130
|
+
context "second argument is {:as => 'new sheet'}" do
|
131
|
+
it "should return new sheet" do
|
132
|
+
@book.add_sheet(:as => 'new sheet').name.should eq 'new sheet'
|
133
|
+
end
|
134
|
+
end
|
135
|
+
|
136
|
+
context "second argument is {:before => @sheet}" do
|
137
|
+
it "should add the first sheet" do
|
138
|
+
@book.add_sheet(:before => @sheet).name.should eq @book[0].name
|
139
|
+
end
|
140
|
+
end
|
141
|
+
|
142
|
+
context "second argument is {:after => @sheet}" do
|
143
|
+
it "should add the second sheet" do
|
144
|
+
@book.add_sheet(:after => @sheet).name.should eq @book[1].name
|
145
|
+
end
|
146
|
+
end
|
147
|
+
|
148
|
+
end
|
149
|
+
|
150
|
+
context "without argument" do
|
151
|
+
it "should add empty sheet" do
|
152
|
+
expect { @book.add_sheet }.to change{ @book.book.Worksheets.Count }.from(3).to(4)
|
153
|
+
end
|
154
|
+
|
155
|
+
it "shoule return copyed sheet" do
|
156
|
+
sheet = @book.add_sheet
|
157
|
+
copyed_sheet = @book.book.Worksheets.Item(@book.book.Worksheets.Count)
|
158
|
+
sheet.name.should eq copyed_sheet.name
|
159
|
+
end
|
160
|
+
end
|
161
|
+
end
|
162
|
+
|
163
|
+
describe ".save" do
|
164
|
+
context "when open with read only" do
|
165
|
+
before do
|
166
|
+
@book = WrapExcel::Book.open(@simple_file)
|
167
|
+
end
|
168
|
+
|
169
|
+
it {
|
170
|
+
expect {
|
171
|
+
@book.save
|
172
|
+
}.to raise_error(IOError,
|
173
|
+
"Not opened for writing(open with :read_only option)")
|
174
|
+
}
|
175
|
+
end
|
176
|
+
|
177
|
+
end
|
178
|
+
|
79
179
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: wrap_excel
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.9
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-10-16 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rake
|
16
|
-
requirement:
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,15 @@ dependencies:
|
|
21
21
|
version: 0.9.2
|
22
22
|
type: :development
|
23
23
|
prerelease: false
|
24
|
-
version_requirements:
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ! '>='
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: 0.9.2
|
25
30
|
- !ruby/object:Gem::Dependency
|
26
31
|
name: rspec
|
27
|
-
requirement:
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
28
33
|
none: false
|
29
34
|
requirements:
|
30
35
|
- - ! '>='
|
@@ -32,10 +37,15 @@ dependencies:
|
|
32
37
|
version: 2.6.0
|
33
38
|
type: :development
|
34
39
|
prerelease: false
|
35
|
-
version_requirements:
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: 2.6.0
|
36
46
|
- !ruby/object:Gem::Dependency
|
37
47
|
name: rb-fchange
|
38
|
-
requirement:
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
39
49
|
none: false
|
40
50
|
requirements:
|
41
51
|
- - ! '>='
|
@@ -43,10 +53,15 @@ dependencies:
|
|
43
53
|
version: '0'
|
44
54
|
type: :development
|
45
55
|
prerelease: false
|
46
|
-
version_requirements:
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ! '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
47
62
|
- !ruby/object:Gem::Dependency
|
48
63
|
name: rb-notifu
|
49
|
-
requirement:
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
50
65
|
none: false
|
51
66
|
requirements:
|
52
67
|
- - ! '>='
|
@@ -54,10 +69,15 @@ dependencies:
|
|
54
69
|
version: '0'
|
55
70
|
type: :development
|
56
71
|
prerelease: false
|
57
|
-
version_requirements:
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ! '>='
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: '0'
|
58
78
|
- !ruby/object:Gem::Dependency
|
59
79
|
name: win32console
|
60
|
-
requirement:
|
80
|
+
requirement: !ruby/object:Gem::Requirement
|
61
81
|
none: false
|
62
82
|
requirements:
|
63
83
|
- - ! '>='
|
@@ -65,10 +85,15 @@ dependencies:
|
|
65
85
|
version: '0'
|
66
86
|
type: :development
|
67
87
|
prerelease: false
|
68
|
-
version_requirements:
|
88
|
+
version_requirements: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
90
|
+
requirements:
|
91
|
+
- - ! '>='
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: '0'
|
69
94
|
- !ruby/object:Gem::Dependency
|
70
95
|
name: guard-rspec
|
71
|
-
requirement:
|
96
|
+
requirement: !ruby/object:Gem::Requirement
|
72
97
|
none: false
|
73
98
|
requirements:
|
74
99
|
- - ! '>='
|
@@ -76,7 +101,12 @@ dependencies:
|
|
76
101
|
version: '0'
|
77
102
|
type: :development
|
78
103
|
prerelease: false
|
79
|
-
version_requirements:
|
104
|
+
version_requirements: !ruby/object:Gem::Requirement
|
105
|
+
none: false
|
106
|
+
requirements:
|
107
|
+
- - ! '>='
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: '0'
|
80
110
|
description: WrapExcel is to wrap the win32ole, and easy to use Excel operations with
|
81
111
|
ruby. Detailed description please see the README.
|
82
112
|
email:
|
@@ -132,7 +162,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
132
162
|
version: '0'
|
133
163
|
segments:
|
134
164
|
- 0
|
135
|
-
hash:
|
165
|
+
hash: 109616829
|
136
166
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
137
167
|
none: false
|
138
168
|
requirements:
|
@@ -141,10 +171,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
141
171
|
version: '0'
|
142
172
|
segments:
|
143
173
|
- 0
|
144
|
-
hash:
|
174
|
+
hash: 109616829
|
145
175
|
requirements: []
|
146
176
|
rubyforge_project: wrap_excel
|
147
|
-
rubygems_version: 1.8.
|
177
|
+
rubygems_version: 1.8.23
|
148
178
|
signing_key:
|
149
179
|
specification_version: 3
|
150
180
|
summary: WrapExcel is a wrapper library that specializes in the operation of Excel
|