robust_excel_ole 1.21 → 1.24
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 +9 -0
- data/README.rdoc +9 -135
- data/bin/jreo +11 -11
- data/bin/reo +3 -6
- data/docs/README_ranges.rdoc +26 -6
- data/docs/README_sheet.rdoc +1 -1
- data/jreo.bat +1 -1
- data/lib/reo_console.rb +79 -6
- data/lib/robust_excel_ole.rb +1 -1
- data/lib/robust_excel_ole/base.rbs +63 -0
- data/lib/robust_excel_ole/bookstore.rb +3 -3
- data/lib/robust_excel_ole/cell.rb +9 -5
- data/lib/robust_excel_ole/cell.rbs +25 -0
- data/lib/robust_excel_ole/excel.rb +1 -6
- data/lib/robust_excel_ole/general.rb +42 -25
- data/lib/robust_excel_ole/list_object.rb +16 -8
- data/lib/robust_excel_ole/range.rb +62 -98
- data/lib/robust_excel_ole/range_owners.rb +4 -30
- data/lib/robust_excel_ole/vba_objects.rbs +23 -0
- data/lib/robust_excel_ole/version.rb +1 -1
- data/lib/robust_excel_ole/workbook.rb +26 -7
- data/lib/robust_excel_ole/worksheet.rb +28 -16
- data/reo.bat +3 -0
- data/robust_excel_ole.gemspec +1 -0
- data/spec/general_spec.rb +10 -11
- data/spec/list_object_spec.rb +7 -2
- data/spec/range_spec.rb +8 -2
- data/spec/workbook_specs/workbook_misc_spec.rb +12 -2
- data/spec/worksheet_spec.rb +3 -0
- metadata +20 -2
@@ -62,7 +62,7 @@ module RobustExcelOle
|
|
62
62
|
# sets the contents of a range
|
63
63
|
# @param [String] name the name of a range
|
64
64
|
# @param [Variant] value the contents of the range
|
65
|
-
# @option opts [Symbol] :color the color of the
|
65
|
+
# @option opts [Symbol] :color the color of the range when set
|
66
66
|
def set_namevalue_glob(name, value, opts = { })
|
67
67
|
begin
|
68
68
|
name_obj = begin
|
@@ -177,36 +177,10 @@ module RobustExcelOle
|
|
177
177
|
end
|
178
178
|
|
179
179
|
# creates a range from a given defined name or address
|
180
|
-
#
|
181
|
-
# @params [Variant] range name or address
|
180
|
+
# @params [Variant] defined name or address, and optional a worksheet
|
182
181
|
# @return [Range] a range
|
183
|
-
def range(
|
184
|
-
|
185
|
-
worksheet = self if self.is_a?(Worksheet)
|
186
|
-
if address2 == :__not_provided
|
187
|
-
range = if name_or_address.is_a?(String)
|
188
|
-
begin
|
189
|
-
RobustExcelOle::Range.new(name_object(name_or_address).RefersToRange, worksheet)
|
190
|
-
rescue NameNotFound
|
191
|
-
nil
|
192
|
-
end
|
193
|
-
end
|
194
|
-
end
|
195
|
-
if self.is_a?(Worksheet) && (range.nil? || (address2 != :__not_provided))
|
196
|
-
address = name_or_address
|
197
|
-
address = [name_or_address,address2] unless address2 == :__not_provided
|
198
|
-
self.Names.Add('__dummy001',nil,true,nil,nil,nil,nil,nil,nil,'=' + address_tool.as_r1c1(address))
|
199
|
-
range = RobustExcelOle::Range.new(name_object('__dummy001').RefersToRange, worksheet)
|
200
|
-
self.Names.Item('__dummy001').Delete
|
201
|
-
workbook = self.is_a?(Workbook) ? self : self.workbook
|
202
|
-
workbook.save
|
203
|
-
range
|
204
|
-
end
|
205
|
-
rescue WIN32OLERuntimeError, Java::OrgRacobCom::ComFailException
|
206
|
-
address2_string = address2.nil? ? "" : ", #{address2.inspect}"
|
207
|
-
raise RangeNotCreated, "cannot create range (#{name_or_address.inspect}#{address2_string})"
|
208
|
-
end
|
209
|
-
range
|
182
|
+
def range(*args)
|
183
|
+
raise RangeNotCreated, "not yet implemented"
|
210
184
|
end
|
211
185
|
|
212
186
|
def name2range(name) # :deprecated: #
|
@@ -0,0 +1,23 @@
|
|
1
|
+
|
2
|
+
# -*- coding: utf-8 -*-
|
3
|
+
|
4
|
+
module RobustExcelOle
|
5
|
+
|
6
|
+
class VbaObjects < Base
|
7
|
+
|
8
|
+
def to_reo -> VbaObjects
|
9
|
+
|
10
|
+
def address_tool -> AddressTool
|
11
|
+
|
12
|
+
end
|
13
|
+
|
14
|
+
class RangeNotEvaluatable < MiscREOError
|
15
|
+
end
|
16
|
+
|
17
|
+
class OptionInvalid < MiscREOError
|
18
|
+
end
|
19
|
+
|
20
|
+
class ObjectNotAlive < MiscREOError
|
21
|
+
end
|
22
|
+
|
23
|
+
end
|
@@ -823,11 +823,12 @@ module RobustExcelOle
|
|
823
823
|
opts = sheet
|
824
824
|
sheet = nil
|
825
825
|
end
|
826
|
-
new_sheet_name = opts.delete(:as)
|
827
|
-
last_sheet_local = last_sheet
|
828
|
-
after_or_before, base_sheet = opts.to_a.first || [:after, last_sheet_local]
|
829
|
-
base_sheet_ole = base_sheet.ole_worksheet
|
830
826
|
begin
|
827
|
+
sheet = sheet.to_reo unless sheet.nil?
|
828
|
+
new_sheet_name = opts.delete(:as)
|
829
|
+
last_sheet_local = last_sheet
|
830
|
+
after_or_before, base_sheet = opts.to_a.first || [:after, last_sheet_local]
|
831
|
+
base_sheet_ole = base_sheet.to_reo.ole_worksheet
|
831
832
|
if !::COPYSHEETS_JRUBY_BUG
|
832
833
|
add_or_copy_sheet_simple(sheet, { after_or_before.to_s => base_sheet_ole })
|
833
834
|
else
|
@@ -843,7 +844,7 @@ module RobustExcelOle
|
|
843
844
|
end
|
844
845
|
end
|
845
846
|
end
|
846
|
-
rescue WIN32OLERuntimeError, NameNotFound, Java::OrgRacobCom::ComFailException
|
847
|
+
rescue # WIN32OLERuntimeError, NameNotFound, Java::OrgRacobCom::ComFailException
|
847
848
|
raise WorksheetREOError, "could not add given worksheet #{sheet.inspect}"
|
848
849
|
end
|
849
850
|
new_sheet = worksheet_class.new(ole_workbook.Activesheet)
|
@@ -881,6 +882,24 @@ module RobustExcelOle
|
|
881
882
|
worksheet_class.new(@ole_workbook.Worksheets.Item(1))
|
882
883
|
end
|
883
884
|
|
885
|
+
# creates a range from a given defined name or from a given worksheet and address
|
886
|
+
# @params [Variant] defined name or a worksheet
|
887
|
+
# @params [Address] address
|
888
|
+
# @return [Range] a range
|
889
|
+
def range(name_or_worksheet, name_or_address = :__not_provided, address2 = :__not_provided)
|
890
|
+
if name_or_worksheet.respond_to?(:gsub)
|
891
|
+
name = name_or_worksheet
|
892
|
+
RobustExcelOle::Range.new(name_object(name).RefersToRange)
|
893
|
+
else
|
894
|
+
begin
|
895
|
+
worksheet = name_or_worksheet.to_reo
|
896
|
+
worksheet.range(name_or_address, address2)
|
897
|
+
rescue
|
898
|
+
raise RangeNotCreated, "argument error: a defined name or a worksheet and an address must be provided"
|
899
|
+
end
|
900
|
+
end
|
901
|
+
end
|
902
|
+
|
884
903
|
# returns the value of a range
|
885
904
|
# @param [String] name the name of a range
|
886
905
|
# @returns [Variant] the value of the range
|
@@ -892,7 +911,7 @@ module RobustExcelOle
|
|
892
911
|
# @param [String] name the name of the range
|
893
912
|
# @param [Variant] value the contents of the range
|
894
913
|
def []= (name, value)
|
895
|
-
set_namevalue_glob(name, value
|
914
|
+
set_namevalue_glob(name, value)
|
896
915
|
end
|
897
916
|
|
898
917
|
# sets options
|
@@ -921,7 +940,7 @@ module RobustExcelOle
|
|
921
940
|
|
922
941
|
# returns the full file name of the workbook
|
923
942
|
def filename
|
924
|
-
@ole_workbook.Fullname.tr('\\','/') rescue nil
|
943
|
+
General.canonize(@ole_workbook.Fullname.tr('\\','/')) rescue nil
|
925
944
|
end
|
926
945
|
|
927
946
|
# @private
|
@@ -64,7 +64,7 @@ module RobustExcelOle
|
|
64
64
|
end
|
65
65
|
end
|
66
66
|
|
67
|
-
# a cell given the defined name or row and column
|
67
|
+
# returns a cell given the defined name or row and column
|
68
68
|
# @params row, column, or name
|
69
69
|
# @returns cell, if row and column are given
|
70
70
|
def [] p1, p2 = :__not_provided
|
@@ -96,7 +96,7 @@ module RobustExcelOle
|
|
96
96
|
else
|
97
97
|
name, value = p1, p2
|
98
98
|
begin
|
99
|
-
set_namevalue_glob(name, value
|
99
|
+
set_namevalue_glob(name, value)
|
100
100
|
rescue REOError
|
101
101
|
begin
|
102
102
|
workbook.set_namevalue_glob(name, value)
|
@@ -118,19 +118,6 @@ module RobustExcelOle
|
|
118
118
|
end
|
119
119
|
end
|
120
120
|
|
121
|
-
=begin
|
122
|
-
def cellval(x,y)
|
123
|
-
xy = "#{x}_#{y}"
|
124
|
-
@cells = { }
|
125
|
-
begin
|
126
|
-
@cells[xy] ||= RobustExcelOle::Cell.new(@ole_worksheet.Cells.Item(x, y), @worksheet)
|
127
|
-
@cells[xy].Value
|
128
|
-
rescue
|
129
|
-
raise RangeNotEvaluatable, "cannot read cell (#{p1.inspect},#{p2.inspect})"
|
130
|
-
end
|
131
|
-
end
|
132
|
-
=end
|
133
|
-
|
134
121
|
# sets the value of a cell, if row, column and color of the cell are given
|
135
122
|
# @params [Integer] x,y row and column
|
136
123
|
# @option opts [Symbol] :color the color of the cell when set
|
@@ -226,6 +213,31 @@ module RobustExcelOle
|
|
226
213
|
self.Name == other_worksheet.Name
|
227
214
|
end
|
228
215
|
|
216
|
+
# creates a range from a given defined name or address
|
217
|
+
# @params [Variant] defined name or address
|
218
|
+
# @return [Range] a range
|
219
|
+
def range(name_or_address, address2 = :__not_provided)
|
220
|
+
if name_or_address.respond_to?(:gsub) && address2 == :__not_provided
|
221
|
+
name = name_or_address
|
222
|
+
range = RobustExcelOle::Range.new(name_object(name).RefersToRange, self) rescue nil
|
223
|
+
end
|
224
|
+
unless range
|
225
|
+
address = name_or_address
|
226
|
+
address = [name_or_address,address2] unless address2 == :__not_provided
|
227
|
+
workbook.retain_saved do
|
228
|
+
begin
|
229
|
+
self.Names.Add('__dummy001',nil,true,nil,nil,nil,nil,nil,nil,'=' + address_tool.as_r1c1(address))
|
230
|
+
range = RobustExcelOle::Range.new(name_object('__dummy001').RefersToRange, self)
|
231
|
+
self.Names.Item('__dummy001').Delete
|
232
|
+
rescue
|
233
|
+
address2_string = address2.nil? ? "" : ", #{address2.inspect}"
|
234
|
+
raise RangeNotCreated, "cannot create range (#{name_or_address.inspect}#{address2_string})"
|
235
|
+
end
|
236
|
+
end
|
237
|
+
end
|
238
|
+
range
|
239
|
+
end
|
240
|
+
|
229
241
|
# @private
|
230
242
|
# returns true, if the worksheet object responds to VBA methods, false otherwise
|
231
243
|
def alive?
|
@@ -258,7 +270,7 @@ module RobustExcelOle
|
|
258
270
|
|
259
271
|
# @private
|
260
272
|
def inspect
|
261
|
-
|
273
|
+
to_s
|
262
274
|
end
|
263
275
|
|
264
276
|
include MethodHelpers
|
data/reo.bat
ADDED
data/robust_excel_ole.gemspec
CHANGED
@@ -34,6 +34,7 @@ Gem::Specification.new do |s|
|
|
34
34
|
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
35
35
|
s.require_paths = ["lib"]
|
36
36
|
s.add_runtime_dependency "pry", '>= 0.12.1'
|
37
|
+
s.add_runtime_dependency "pry-bond", '>=0.0.1'
|
37
38
|
s.add_development_dependency "rspec", '>= 2.6.0'
|
38
39
|
s.required_ruby_version = '>= 2.1'
|
39
40
|
end
|
data/spec/general_spec.rb
CHANGED
@@ -52,7 +52,7 @@ module RobustExcelOle
|
|
52
52
|
ole_table = worksheet.ListObjects.Item(1)
|
53
53
|
table = Table.new(ole_table)
|
54
54
|
table.Name.should == "table3"
|
55
|
-
table.HeaderRowRange.Value.first.should == ["Number","Person","Amount","Time","
|
55
|
+
table.HeaderRowRange.Value.first.should == ["Number","Person","Amount","Time","Price"]
|
56
56
|
table.ListRows.Count.should == 6
|
57
57
|
worksheet[3,4].Value.should == "Number"
|
58
58
|
end
|
@@ -151,13 +151,11 @@ module RobustExcelOle
|
|
151
151
|
end
|
152
152
|
|
153
153
|
it "should do methods for sheet" do
|
154
|
-
|
155
|
-
(Object.instance_methods.select{|m| m =~ /^(?!\_)/} - @book1.sheet(1).methods).sort.should be_empty
|
154
|
+
((@ole_sheet_methods + @sheet_methods) - @book1.sheet(1).methods).should be_empty
|
156
155
|
end
|
157
156
|
|
158
157
|
it "should do own_methods with popular ole_excel and excel methods" do
|
159
|
-
|
160
|
-
(Object.instance_methods - @book1.sheet(1).own_methods).should == Object.instance_methods
|
158
|
+
((@ole_sheet_methods + @sheet_methods) - @book1.sheet(1).own_methods).should == [] #be_empty
|
161
159
|
end
|
162
160
|
|
163
161
|
it "should respond to popular sheet methods" do
|
@@ -223,10 +221,12 @@ module RobustExcelOle
|
|
223
221
|
canonize("this../.i.s/.../..the/..../pa.th/").should == "this../.i.s/.../..the/..../pa.th"
|
224
222
|
end
|
225
223
|
|
224
|
+
=begin
|
226
225
|
it "should downcase" do
|
227
226
|
canonize("/This/IS/tHe/path").should == "/this/is/the/path"
|
228
227
|
canonize("///THIS/.///./////iS//the/../PatH/////").should == "/this/is/path"
|
229
228
|
end
|
229
|
+
=end
|
230
230
|
|
231
231
|
it "should raise an error for no strings" do
|
232
232
|
expect{
|
@@ -234,14 +234,13 @@ module RobustExcelOle
|
|
234
234
|
}.to raise_error(TypeREOError, "No string given to canonize, but 1")
|
235
235
|
end
|
236
236
|
|
237
|
-
it "should yield the
|
238
|
-
General.canonize(@
|
239
|
-
General.canonize(@
|
240
|
-
General.canonize(@simple_file).should ==
|
241
|
-
General.canonize(@simple_file_extern).should ==
|
237
|
+
it "should yield the network path" do
|
238
|
+
General.canonize(@hostname_share_path).should == @network_path
|
239
|
+
General.canonize(@network_path).should == @network_path
|
240
|
+
General.canonize(@simple_file).should == @simple_file
|
241
|
+
General.canonize(@simple_file_extern).should == @simple_file_extern
|
242
242
|
end
|
243
243
|
|
244
|
-
|
245
244
|
end
|
246
245
|
end
|
247
246
|
|
data/spec/list_object_spec.rb
CHANGED
@@ -41,6 +41,13 @@ describe ListObject do
|
|
41
41
|
@sheet[1,1].Value.should == "Person"
|
42
42
|
end
|
43
43
|
|
44
|
+
it "should do the idempotence" do
|
45
|
+
ole_table = @sheet.ListObjects.Item(1)
|
46
|
+
table = Table.new(ole_table)
|
47
|
+
table2 = Table.new(table)
|
48
|
+
table2.ole_table.should be_a WIN32OLE
|
49
|
+
end
|
50
|
+
|
44
51
|
it "should type-lift a Win32ole list object into a RobustExcelOle list object" do
|
45
52
|
ole_table = @sheet.ListObjects.Item(1)
|
46
53
|
table = Table.new(ole_table)
|
@@ -330,8 +337,6 @@ describe ListObject do
|
|
330
337
|
cells[0].Column.should == 8
|
331
338
|
cells[1].Row.should == 9
|
332
339
|
cells[1].Column.should == 6
|
333
|
-
puts "cells[0]: #{[cells[0]]}"
|
334
|
-
p "cells[0]: #{[cells[0]]}"
|
335
340
|
end
|
336
341
|
|
337
342
|
end
|
data/spec/range_spec.rb
CHANGED
@@ -177,9 +177,9 @@ describe RobustExcelOle::Range do
|
|
177
177
|
end
|
178
178
|
end
|
179
179
|
|
180
|
-
describe "#
|
180
|
+
describe "#value" do
|
181
181
|
|
182
|
-
context "
|
182
|
+
context "value, value=" do
|
183
183
|
|
184
184
|
before do
|
185
185
|
@sheet1 = @book.sheet(1)
|
@@ -207,6 +207,12 @@ describe RobustExcelOle::Range do
|
|
207
207
|
@sheet1.range([1..2,3..5]).v = [[1,2,3],[4,5,6]]
|
208
208
|
@sheet1.range([1..2,3..5]).v.should == [[1,2,3],[4,5,6]]
|
209
209
|
end
|
210
|
+
|
211
|
+
it "should color the range" do
|
212
|
+
@sheet1.range([1..2,3..5]).set_value([[1,2,3],[4,5,6]],:color => 42)
|
213
|
+
@sheet1.range([1..2,3..5]).Interior.ColorIndex.should == 42
|
214
|
+
end
|
215
|
+
|
210
216
|
end
|
211
217
|
end
|
212
218
|
|
@@ -763,7 +763,7 @@ describe Workbook do
|
|
763
763
|
@book1.Names.Item("new").RefersToRange.Interior.ColorIndex.should == 4
|
764
764
|
@book1["new"].should == "bar"
|
765
765
|
@book1["new"] = "bar"
|
766
|
-
@book1.Names.Item("new").RefersToRange.Interior.ColorIndex.should ==
|
766
|
+
@book1.Names.Item("new").RefersToRange.Interior.ColorIndex.should == 4
|
767
767
|
@book1.save
|
768
768
|
@book1.close
|
769
769
|
#book2 = Workbook.open(@simple_file1, :visible => true)
|
@@ -777,7 +777,7 @@ describe Workbook do
|
|
777
777
|
@book1.Names.Item("new").RefersToRange.Interior.ColorIndex.should == 4
|
778
778
|
@book1["new"].should == "bar"
|
779
779
|
@book1["new"] = "bar"
|
780
|
-
@book1.Names.Item("new").RefersToRange.Interior.ColorIndex.should ==
|
780
|
+
@book1.Names.Item("new").RefersToRange.Interior.ColorIndex.should == 4
|
781
781
|
@book1.save
|
782
782
|
@book1.close
|
783
783
|
end
|
@@ -1096,6 +1096,16 @@ describe Workbook do
|
|
1096
1096
|
range.Address.should == "$A$1:$D$3"
|
1097
1097
|
end
|
1098
1098
|
|
1099
|
+
it "should raise error when given integer range" do
|
1100
|
+
expect{
|
1101
|
+
@book1.range([1..2,3..4])
|
1102
|
+
}.to raise_error(RangeNotCreated, /argument/)
|
1103
|
+
end
|
1104
|
+
|
1105
|
+
it "should accept an integer range when given a worksheet" do
|
1106
|
+
@book1.range(@book1.sheet(1),[4..5,1..2]).Address.should == "$A$4:$B$5"
|
1107
|
+
end
|
1108
|
+
|
1099
1109
|
end
|
1100
1110
|
|
1101
1111
|
context "adding and deleting the name of a range" do
|
data/spec/worksheet_spec.rb
CHANGED
@@ -19,6 +19,7 @@ describe Worksheet do
|
|
19
19
|
before do
|
20
20
|
@dir = create_tmpdir
|
21
21
|
@simple_file = @dir + '/workbook.xls'
|
22
|
+
@another_workbook = @dir + '/another_workbook.xls'
|
22
23
|
@protected_file = @dir + '/protected_sheet.xls'
|
23
24
|
@blank_file = @dir + '/book_with_blank.xls'
|
24
25
|
@merge_file = @dir + '/merge_cells.xls'
|
@@ -207,11 +208,13 @@ describe Worksheet do
|
|
207
208
|
describe "range" do
|
208
209
|
|
209
210
|
it "should a range with relative r1c1-reference" do
|
211
|
+
@sheet.range([1,1]).Select
|
210
212
|
@sheet.range(["Z1S[3]:Z[2]S8"]).Address.should == "$D$1:$H$3"
|
211
213
|
@sheet.range(["Z1S3:Z2S8"]).Address.should == "$C$1:$H$2"
|
212
214
|
end
|
213
215
|
|
214
216
|
it "should a range with relative integer-range-reference" do
|
217
|
+
@sheet.range([1,1]).Select
|
215
218
|
@sheet.range([1..[2],[3]..8]).Address.should == "$D$1:$H$3"
|
216
219
|
end
|
217
220
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: robust_excel_ole
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: '1.
|
4
|
+
version: '1.24'
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- traths
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-09-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: pry
|
@@ -24,6 +24,20 @@ dependencies:
|
|
24
24
|
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: 0.12.1
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: pry-bond
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 0.0.1
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 0.0.1
|
27
41
|
- !ruby/object:Gem::Dependency
|
28
42
|
name: rspec
|
29
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -117,8 +131,10 @@ files:
|
|
117
131
|
- lib/robust_excel_ole.rb
|
118
132
|
- lib/robust_excel_ole/address_tool.rb
|
119
133
|
- lib/robust_excel_ole/base.rb
|
134
|
+
- lib/robust_excel_ole/base.rbs
|
120
135
|
- lib/robust_excel_ole/bookstore.rb
|
121
136
|
- lib/robust_excel_ole/cell.rb
|
137
|
+
- lib/robust_excel_ole/cell.rbs
|
122
138
|
- lib/robust_excel_ole/cygwin.rb
|
123
139
|
- lib/robust_excel_ole/excel.rb
|
124
140
|
- lib/robust_excel_ole/general.rb
|
@@ -128,10 +144,12 @@ files:
|
|
128
144
|
- lib/robust_excel_ole/robustexcelole.sublime-project
|
129
145
|
- lib/robust_excel_ole/robustexcelole.sublime-workspace
|
130
146
|
- lib/robust_excel_ole/vba_objects.rb
|
147
|
+
- lib/robust_excel_ole/vba_objects.rbs
|
131
148
|
- lib/robust_excel_ole/version.rb
|
132
149
|
- lib/robust_excel_ole/workbook.rb
|
133
150
|
- lib/robust_excel_ole/worksheet.rb
|
134
151
|
- lib/spec_helper.rb
|
152
|
+
- reo.bat
|
135
153
|
- robust_excel_ole.gemspec
|
136
154
|
- spec/address_tool_spec.rb
|
137
155
|
- spec/base_spec.rb
|