robust_excel_ole 1.20 → 1.21

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1cbad43d74758e37eb8e8d17e0297ead9f7cda838f5a157832145d41bacb743a
4
- data.tar.gz: 80a112947a96132e8f8bb5ccccdccace4b7c1227418475aac51d6aa771b2e876
3
+ metadata.gz: 7598173082d025a168f3c4e8021eb41c97fb1af36943e35cf2a812fcc0f39672
4
+ data.tar.gz: 2e1e0585da1b1369d323b218b0817f23679b71f99f637a269a6abf14673df615
5
5
  SHA512:
6
- metadata.gz: 4983b1d7e31e09873bf70e9903e3bdcd7a438e238283c5f2bae9198b5ed53c83fd5726f55b7e9ad4559b820dca65f2c82cb82f85091b199f4b58adfa98064c6b
7
- data.tar.gz: 6c1c920de4c68699a10e87241121a01e66884317f06ad8ce9962b049c024658b797e014ef0aaaa297287065e80d85514d384925f24412bf1175aa8d97c252865
6
+ metadata.gz: '09581d754af617dcbe58149087d78c0281e7aa1e6d5feb27f4b58a0b08a0cc5967d15398d85952174143a2e867133b2d1dbf352fd0656bc7488183c7edca94ab'
7
+ data.tar.gz: bc6c1bed4f9b3370a376b875fa5a4f64b690ef6df6da70efde30a5caa49447b32b28ba09864adcb4c0ca9ea861ddeb28b5af851e30db826e749c6c97cc0153de
data/Changelog CHANGED
@@ -2,7 +2,7 @@
2
2
  All notable changes to this project will be documented in this file.
3
3
 
4
4
 
5
- ## [1.20] 2020-14-07
5
+ ## [1.20] 2020-23-07
6
6
 
7
7
  ### Changed
8
8
  - using pry in console
@@ -320,13 +320,13 @@ For more details about reading and writing contents of cells and ranges see {REA
320
320
 
321
321
  === List Objects
322
322
 
323
- === Creating list objects
323
+ === Creating List Objects
324
324
 
325
325
  We can define a list object (or table) from scratch.
326
326
 
327
- table = ListObject.new(worksheet, "table 1", [1,1], 3,["Person","Amount"])
327
+ table = ListObject.new(worksheet, "table 1", [1,1], 3,["Person","AmountSales"])
328
328
 
329
- This command creates a list object in worksheet named "table 1", with upper left corner at position [1,1] (first cell), with 3 rows and the columns "Person" and "Amount".
329
+ This command creates a list object in worksheet named "table 1", with upper left corner at position [1,1] (first cell), with 3 rows and the columns "Person" and "Amoun%tSales".
330
330
 
331
331
  Likewise we can get a RobustExcelOle list object with help of an existing WIN32OlE list object.
332
332
 
@@ -346,11 +346,25 @@ A row in this table can be accessed with help of #[], e.g.
346
346
 
347
347
  === Reading and setting values
348
348
 
349
- Now we can set and get the value of a cell of the table with help of methods that are underscored versions of the column names, e.g.
349
+ Now we can set and get the value of a cell of the table with help of methods that are equal to or are underscored variants of the column names, e.g.
350
350
 
351
- row1.person = "John"
352
- row1.person
353
- # => "John"
351
+ row1.AmountSales = 40
352
+
353
+ or
354
+
355
+ row1.amount_sales = 40
356
+
357
+ and
358
+
359
+ row1.AmountSales
360
+ # => 40
361
+
362
+ or
363
+
364
+ row1.amount_sales
365
+ # => 40
366
+
367
+ Special characters in the colare being ignored.
354
368
 
355
369
  We can also read and set values in a whole row, e.g.
356
370
 
data/bin/reo CHANGED
@@ -2,23 +2,26 @@
2
2
  # -*- ruby -*-
3
3
 
4
4
  require 'pry'
5
- require 'robust_excel_ole'
5
+ require '../robust_excel_ole/lib/robust_excel_ole'
6
6
 
7
7
  include REO
8
8
  include General
9
9
 
10
- puts 'REO console started'
11
- puts
12
-
13
10
  # some pry configuration
14
11
  Pry.config.windows_console_warning = false
15
- Pry.config.history.should_save = true
12
+ #Pry.config.history_save = true
16
13
  Pry.config.color = false
17
14
  #Pry.editor = 'notepad' # 'subl', 'vi'
18
15
  #Pry.config.prompt =
19
- # [
20
- # ->(_obj, _nest_level, _) { ">> " },
21
- # ->(*) { " " }
22
- # ]
16
+ #[
17
+ #->(_obj, _nest_level, _) { ">> " },
18
+ #->(*) { " " }
19
+ #]
23
20
 
24
- pry
21
+ hooks = Pry::Hooks.new
22
+
23
+ hooks.add_hook :when_started, :hook12 do
24
+ puts 'REO console started'
25
+ puts
26
+ end
27
+ Pry.start(nil, hooks: hooks)
@@ -4,18 +4,21 @@ require '../robust_excel_ole/lib/robust_excel_ole'
4
4
  include REO
5
5
  include General
6
6
 
7
- puts 'REO console started'
8
- puts
9
-
10
7
  # some pry configuration
11
8
  Pry.config.windows_console_warning = false
12
- Pry.config.history.should_save = true
9
+ #Pry.config.history_save = true
13
10
  Pry.config.color = false
14
11
  #Pry.editor = 'notepad' # 'subl', 'vi'
15
12
  #Pry.config.prompt =
16
- # [
17
- # ->(_obj, _nest_level, _) { ">> " },
18
- # ->(*) { " " }
19
- # ]
13
+ #[
14
+ #->(_obj, _nest_level, _) { ">> " },
15
+ #->(*) { " " }
16
+ #]
20
17
 
21
- pry
18
+ hooks = Pry::Hooks.new
19
+
20
+ hooks.add_hook :when_started, :hook12 do
21
+ puts 'REO console started'
22
+ puts
23
+ end
24
+ Pry.start(nil, hooks: hooks)
@@ -2,6 +2,7 @@
2
2
 
3
3
  module RobustExcelOle
4
4
 
5
+ # @private
5
6
  class Bookstore < Base
6
7
 
7
8
  def initialize
@@ -26,7 +26,7 @@ module RobustExcelOle
26
26
 
27
27
  # @private
28
28
  def to_s
29
- @ole_table.Name.to_s
29
+ @ole_range.Name.to_s
30
30
  end
31
31
 
32
32
  # @private
@@ -38,49 +38,7 @@ module General
38
38
  def self.normalize_drive_letter(drive)
39
39
  drive.upcase.end_with?(':') ? drive : "#{drive}:"
40
40
  end
41
-
42
41
 
43
- =begin
44
- NetworkDrive = Struct.new(:drive_letter, :network_name)
45
-
46
- @private
47
- def network2hostnamesharepath(filename)
48
- puts "network2hostnamesharepath:"
49
- puts "filename: #{filename}"
50
- network = WIN32OLE.new('WScript.Network')
51
- drives = network.enumnetworkdrives
52
- puts "drives: #{drives.inspect}"
53
- drive_letter, filename_after_drive_letter = filename.split(':')
54
- puts "drive_letter: #{drive_letter.inspect}"
55
- puts "filename_after_drive_letter: #{filename_after_drive_letter.inspect}"
56
- drive_letter = normalize_drive_letter(drive_letter)
57
- puts "drive_letter: #{drive_letter.inspect}"
58
- network_drives = get_network_drives
59
- puts "network_drives: #{network_drives.inspect}"
60
- network_drive = network_drives.find{ |d| d.drive_letter == drive_letter }
61
- puts "network_drive: #{network_drive.inspect}"
62
- return filename unless network_drive
63
- #return (File.exists?(filename) ? filename : nil) unless network_drive
64
- return network_drive.network_name + filename_after_drive_letter
65
- end
66
-
67
- def get_network_drives
68
- network = WIN32OLE.new('WScript.Network')
69
- drives = network.enumnetworkdrives
70
- ndrives = []
71
- count = drives.Count
72
- (0..(count - 1)).step(2) do |i|
73
- ndrives << NetworkDrive.new( drives.Item(i), drives.Item(i + 1))
74
- end
75
- ndrives
76
- end
77
-
78
- def normalize_drive_letter(drive)
79
- drive.upcase.end_with?(':') ? drive : "#{drive}:"
80
- end
81
-
82
- =end
83
-
84
42
  # @private
85
43
  def absolute_path(file)
86
44
  file[0,2] = './' if ::EXPANDPATH_JRUBY_BUG && file =~ /[A-Z]:[^\/]/
@@ -163,7 +121,7 @@ class WIN32OLE
163
121
  class2method = [
164
122
  {Excel => :Hwnd},
165
123
  {Workbook => :FullName},
166
- {Worksheet => :Copy},
124
+ {Worksheet => :UsedRange},
167
125
  {RobustExcelOle::Range => :Row},
168
126
  {ListObject => :ListRows}
169
127
  ]
@@ -224,6 +182,31 @@ class ::String
224
182
  word
225
183
  end
226
184
 
185
+ def delete_multiple_underscores
186
+ word = self
187
+ while word.index('__') do
188
+ word.gsub!('__','_')
189
+ end
190
+ word
191
+ end
192
+
193
+ def replace_umlauts
194
+ word = self
195
+ word.gsub!('ä','ae')
196
+ word.gsub!('Ä','Ae')
197
+ word.gsub!('ö','oe')
198
+ word.gsub!('Ö','Oe')
199
+ word.gsub!('ü','ue')
200
+ word.gsub!('Ü','Ue')
201
+ #word.gsub!(/\x84/,'ae')
202
+ #word.gsub!(/\x8E/,'Ae')
203
+ #word.gsub!(/\x94/,'oe')
204
+ #word.gsub!(/\x99/,'Oe')
205
+ #word.gsub!(/\x81/,'ue')
206
+ #word.gsub!(/\x9A/,'Ue')
207
+ word
208
+ end
209
+
227
210
  # taken from http://apidock.com/rails/ActiveSupport/Inflector/constantize
228
211
  # File activesupport/lib/active_support/inflector/methods.rb, line 226
229
212
  def constantize # (camel_cased_word)
@@ -14,6 +14,8 @@ module RobustExcelOle
14
14
 
15
15
  attr_reader :ole_table
16
16
 
17
+ alias ole_object ole_table
18
+
17
19
  # constructs a list object (or table).
18
20
  # @param [Variable] worksheet_or_ole_listobject a worksheet or a Win32Ole list object
19
21
  # @param [Variable] table_name_or_number a table name or table number
@@ -115,31 +117,42 @@ module RobustExcelOle
115
117
  raise TableError, "could not delete values"
116
118
  end
117
119
  end
118
-
120
+
119
121
  def method_missing(name, *args)
120
- name_before_last_equal = name.to_s.split('=').first
122
+ name_str = name.to_s
123
+ core_name = name_str[-1]!='=' ? name_str : name_str[0..-2]
121
124
  column_names = @@ole_table.HeaderRowRange.Value.first
122
- method_names = column_names.map{|c| c.underscore.gsub(/[^[\w\d]]/, '_')}
123
- column_name = column_names[method_names.index(name_before_last_equal)]
125
+ column_name = column_names.find do |c|
126
+ c == core_name ||
127
+ c.gsub(/\W/,'') == core_name ||
128
+ c.replace_umlauts == core_name ||
129
+ c.gsub(/\W/,'').replace_umlauts == core_name ||
130
+ c.gsub(/\W/,'').replace_umlauts.underscore.gsub(/[^[\w\d]]/, '_').delete_multiple_underscores == core_name
131
+ end
124
132
  if column_name
125
- ole_cell = @@ole_table.Application.Intersect(
126
- @ole_listrow.Range, @@ole_table.ListColumns.Item(column_name).Range)
127
- define_getting_setting_method(ole_cell,name.to_s)
128
- self.send(name, *args)
133
+ method_name = core_name.gsub(/\W/,'') + (name_str[-1]!='=' ? "" : "=")
134
+ define_and_call_method(column_name,method_name,*args)
129
135
  else
130
- super
136
+ super(name, *args)
131
137
  end
132
138
  end
133
139
 
134
140
  private
135
141
 
136
- def define_getting_setting_method(ole_cell,name_str)
137
- if name_str[-1] != '='
138
- self.class.define_method(name_str) do
142
+ def define_and_call_method(column_name,method_name,*args)
143
+ ole_cell = @@ole_table.Application.Intersect(
144
+ @ole_listrow.Range, @@ole_table.ListColumns.Item(column_name).Range)
145
+ define_getting_setting_method(ole_cell,method_name)
146
+ self.send(method_name, *args)
147
+ end
148
+
149
+ def define_getting_setting_method(ole_cell,name)
150
+ if name[-1] != '='
151
+ self.class.define_method(name) do
139
152
  ole_cell.Value
140
153
  end
141
154
  else
142
- self.class.define_method(name_str) do |value|
155
+ self.class.define_method(name) do |value|
143
156
  ole_cell.Value = value
144
157
  end
145
158
  end
@@ -349,6 +362,16 @@ module RobustExcelOle
349
362
  @ole_table.Sort.Apply
350
363
  end
351
364
 
365
+ # @private
366
+ # returns true, if the list object responds to VBA methods, false otherwise
367
+ def alive?
368
+ @ole_table.ListRows
369
+ true
370
+ rescue
371
+ # trace $!.message
372
+ false
373
+ end
374
+
352
375
  # @private
353
376
  def to_s
354
377
  @ole_table.Name.to_s
@@ -361,6 +384,8 @@ module RobustExcelOle
361
384
  " #{@ole_table.Parent.Name}" + " #{@ole_table.Parent.Parent.Name}" + ">"
362
385
  end
363
386
 
387
+ include MethodHelpers
388
+
364
389
  private
365
390
 
366
391
  def method_missing(name, *args)
@@ -8,14 +8,20 @@ module RobustExcelOle
8
8
  # See https://docs.microsoft.com/en-us/office/vba/api/excel.worksheet#methods
9
9
 
10
10
  class Range < VbaObjects
11
+
11
12
  include Enumerable
13
+
12
14
  attr_reader :ole_range
13
15
  attr_reader :worksheet
14
16
 
17
+ alias ole_object ole_range
18
+
19
+
15
20
  def initialize(win32_range, worksheet = nil)
16
21
  @ole_range = win32_range
17
- @worksheet = worksheet ? worksheet : worksheet_class.new(self.Parent)
18
- #@worksheet = worksheet_class.new(self.Parent)
22
+ @worksheet = worksheet ? worksheet.to_reo : worksheet_class.new(self.Parent)
23
+ address_r1c1 = @ole_range.AddressLocal(true,true,XlR1C1)
24
+ @rows, @columns = address_tool.as_integer_ranges(address_r1c1)
19
25
  end
20
26
 
21
27
  def each
@@ -64,12 +70,10 @@ module RobustExcelOle
64
70
  if !::RANGES_JRUBY_BUG
65
71
  self.Value
66
72
  else
67
- address_r1c1 = self.AddressLocal(true,true,XlR1C1)
68
- row, col = address_tool.as_integer_ranges(address_r1c1)
69
73
  values = []
70
- row.each do |r|
74
+ @rows.each do |r|
71
75
  values_col = []
72
- col.each{ |c| values_col << worksheet.Cells(r,c).Value}
76
+ @columns.each{ |c| values_col << worksheet.Cells(r,c).Value}
73
77
  values << values_col
74
78
  end
75
79
  values
@@ -85,10 +89,8 @@ module RobustExcelOle
85
89
  if !::RANGES_JRUBY_BUG
86
90
  ole_range.Value = value
87
91
  else
88
- address_r1c1 = ole_range.AddressLocal(true,true,XlR1C1)
89
- row, col = address_tool.as_integer_ranges(address_r1c1)
90
- row.each_with_index do |r,i|
91
- col.each_with_index do |c,j|
92
+ @rows.each_with_index do |r,i|
93
+ @columns.each_with_index do |c,j|
92
94
  ole_range.Cells(i+1,j+1).Value = (value.respond_to?(:first) ? value[i][j] : value)
93
95
  end
94
96
  end
@@ -107,55 +109,52 @@ module RobustExcelOle
107
109
  # @options [Worksheet] the destination worksheet
108
110
  # @options [Hash] options: :transpose, :values_only
109
111
  def copy(dest_address1, sheet_or_dest_address2 = :__not_provided, options_or_sheet = :__not_provided, not_provided_or_options = :__not_provided)
110
- dest_address = if sheet_or_dest_address2.is_a?(Object::Range) or sheet_or_dest_address2.is_a?(Integer)
111
- [dest_address1,sheet_or_dest_address2]
112
- else
113
- dest_address1
114
- end
115
- dest_sheet = if sheet_or_dest_address2.is_a?(Worksheet)
116
- sheet_or_dest_address2
117
- else
118
- if options_or_sheet.is_a?(Worksheet)
119
- options_or_sheet
112
+ begin
113
+ dest_address = if sheet_or_dest_address2.is_a?(Object::Range) or sheet_or_dest_address2.is_a?(Integer)
114
+ [dest_address1,sheet_or_dest_address2]
120
115
  else
121
- @worksheet
116
+ dest_address1
122
117
  end
123
- end
124
- options = if options_or_sheet.is_a?(Hash)
125
- options_or_sheet
126
- else
127
- if not_provided_or_options.is_a?(Hash)
128
- not_provided_or_options
118
+ dest_sheet = if sheet_or_dest_address2.is_a?(Worksheet) or sheet_or_dest_address2.is_a?(WIN32OLE)
119
+ sheet_or_dest_address2.to_reo
129
120
  else
130
- { }
121
+ if options_or_sheet.is_a?(Worksheet) or options_or_sheet.is_a?(WIN32OLE)
122
+ options_or_sheet.to_reo
123
+ else
124
+ @worksheet
125
+ end
131
126
  end
132
- end
133
- rows, columns = address_tool.as_integer_ranges(dest_address)
134
- dest_address_is_position = (rows.min == rows.max && columns.min == columns.max)
135
- dest_range_address = if (not dest_address_is_position)
136
- [rows.min..rows.max,columns.min..columns.max]
127
+ options = if options_or_sheet.is_a?(Hash)
128
+ options_or_sheet
137
129
  else
138
- if (not options[:transpose])
139
- [rows.min..rows.min+self.Rows.Count-1,
140
- columns.min..columns.min+self.Columns.Count-1]
130
+ if not_provided_or_options.is_a?(Hash)
131
+ not_provided_or_options
141
132
  else
142
- [rows.min..rows.min+self.Columns.Count-1,
143
- columns.min..columns.min+self.Rows.Count-1]
133
+ { }
144
134
  end
145
135
  end
146
- dest_range = dest_sheet.range(dest_range_address)
147
- begin
136
+ rows, columns = address_tool.as_integer_ranges(dest_address)
137
+ dest_address_is_position = (rows.min == rows.max && columns.min == columns.max)
138
+ dest_range_address = if (not dest_address_is_position)
139
+ [rows.min..rows.max,columns.min..columns.max]
140
+ else
141
+ if (not options[:transpose])
142
+ [rows.min..rows.min+self.Rows.Count-1,
143
+ columns.min..columns.min+self.Columns.Count-1]
144
+ else
145
+ [rows.min..rows.min+self.Columns.Count-1,
146
+ columns.min..columns.min+self.Rows.Count-1]
147
+ end
148
+ end
149
+ dest_range = dest_sheet.range(dest_range_address)
148
150
  if options[:values_only]
149
- # dest_range.Value = options[:transpose] ? self.Value.transpose : self.Value
150
151
  dest_range.v = options[:transpose] ? self.v.transpose : self.v
151
152
  else
152
153
  if dest_range.worksheet.workbook.excel == @worksheet.workbook.excel
153
154
  if options[:transpose]
154
155
  self.Copy
155
- #dest_range.PasteSpecial('transpose' => true)
156
156
  dest_range.PasteSpecial(XlPasteAll,XlPasteSpecialOperationNone,false,true)
157
157
  else
158
- #self.Copy('destination' => dest_range.ole_range)
159
158
  self.Copy(dest_range.ole_range)
160
159
  end
161
160
  else
@@ -166,7 +165,6 @@ module RobustExcelOle
166
165
  @worksheet.workbook.excel.with_displayalerts(false) {added_sheet.Delete}
167
166
  else
168
167
  self.Copy
169
- #dest_sheet.Paste('destination' => dest_range.ole_range)
170
168
  dest_sheet.Paste(dest_range.ole_range)
171
169
  end
172
170
  end
@@ -184,7 +182,7 @@ module RobustExcelOle
184
182
  def copy_special(dest_address, dest_sheet = :__not_provided, options = { })
185
183
  rows, columns = address_tool.as_integer_ranges(dest_address)
186
184
  dest_sheet = @worksheet if dest_sheet == :__not_provided
187
- dest_address_is_position = (rows.min == rows.max && columns.min == columns.max)
185
+ dest_address_is_position = (rows.min == rows.max && @columns.min == @columns.max)
188
186
  dest_range_address = if (not dest_address_is_position)
189
187
  [rows.min..rows.max,columns.min..columns.max]
190
188
  else
@@ -239,6 +237,26 @@ module RobustExcelOle
239
237
  @worksheet.workbook.excel
240
238
  end
241
239
 
240
+ # @private
241
+ # returns true, if the Range object responds to VBA methods, false otherwise
242
+ def alive?
243
+ @ole_range.Row
244
+ true
245
+ rescue
246
+ # trace $!.message
247
+ false
248
+ end
249
+
250
+ # @private
251
+ def to_s
252
+ "#<REO::Range: " + "[#{@rows},#{@columns}] " + "#{worksheet.Name} " + ">"
253
+ end
254
+
255
+ # @private
256
+ def inspect
257
+ self.to_s
258
+ end
259
+
242
260
  # @private
243
261
  def self.worksheet_class
244
262
  @worksheet_class ||= begin
@@ -254,6 +272,8 @@ module RobustExcelOle
254
272
  self.class.worksheet_class
255
273
  end
256
274
 
275
+ include MethodHelpers
276
+
257
277
  private
258
278
 
259
279
  def method_missing(name, *args)
@@ -1,3 +1,3 @@
1
1
  module RobustExcelOle
2
- VERSION = "1.20"
2
+ VERSION = "1.21"
3
3
  end
@@ -1004,7 +1004,7 @@ module RobustExcelOle
1004
1004
 
1005
1005
  # @private
1006
1006
  def inspect
1007
- '#<Workbook: ' + ('not alive ' unless alive?).to_s + (File.basename(self.filename) if alive?).to_s + " #{@ole_workbook} #{@excel}" + '>'
1007
+ '#<Workbook: ' + ('not alive ' unless alive?).to_s + (File.basename(self.filename) if alive?).to_s + " #{@excel}" + '>'
1008
1008
  end
1009
1009
 
1010
1010
  # @private
@@ -14,6 +14,8 @@ module RobustExcelOle
14
14
  attr_reader :ole_worksheet
15
15
  attr_reader :workbook
16
16
 
17
+ alias ole_object ole_worksheet
18
+
17
19
  def initialize(win32_worksheet)
18
20
  @ole_worksheet = win32_worksheet
19
21
  if @ole_worksheet.ProtectContents
@@ -224,6 +226,16 @@ module RobustExcelOle
224
226
  self.Name == other_worksheet.Name
225
227
  end
226
228
 
229
+ # @private
230
+ # returns true, if the worksheet object responds to VBA methods, false otherwise
231
+ def alive?
232
+ @ole_worksheet.UsedRange
233
+ true
234
+ rescue
235
+ # trace $!.message
236
+ false
237
+ end
238
+
227
239
  # @private
228
240
  def self.workbook_class
229
241
  @workbook_class ||= begin
@@ -249,6 +261,8 @@ module RobustExcelOle
249
261
  self.to_s
250
262
  end
251
263
 
264
+ include MethodHelpers
265
+
252
266
  private
253
267
 
254
268
  def method_missing(name, *args)
@@ -103,19 +103,25 @@ describe ListObject do
103
103
  context "with new table" do
104
104
 
105
105
  before do
106
- @table = Table.new(@sheet, "table_name", [1,1], 3, ["Person","Amount"])
106
+ @table = Table.new(@sheet, "table_name", [1,1], 3, ["Person","Amo%untSales"])
107
107
  @table_row1 = @table[1]
108
108
  end
109
109
 
110
- it "should set and read values" do
110
+ it "should read and set values via alternative column names" do
111
111
  @table_row1.person.should be nil
112
112
  @table_row1.person = "John"
113
113
  @table_row1.person.should == "John"
114
114
  @sheet[2,1].Value.should == "John"
115
- @table_row1.amount.should be nil
116
- @table_row1.amount = 42
117
- @table_row1.amount.should == 42
115
+ @table_row1.amount_sales.should be nil
116
+ @table_row1.amount_sales = 42
117
+ @table_row1.amount_sales.should == 42
118
118
  @sheet[2,2].Value.should == 42
119
+ @table_row1.Person = "Herbert"
120
+ @table_row1.Person.should == "Herbert"
121
+ @sheet[2,1].Value.should == "Herbert"
122
+ @table_row1.AmountSales = 80
123
+ @table_row1.AmountSales.should == 80
124
+ @sheet[2,2].Value.should == 80
119
125
  end
120
126
 
121
127
  end
@@ -324,6 +330,8 @@ describe ListObject do
324
330
  cells[0].Column.should == 8
325
331
  cells[1].Row.should == 9
326
332
  cells[1].Column.should == 6
333
+ puts "cells[0]: #{[cells[0]]}"
334
+ p "cells[0]: #{[cells[0]]}"
327
335
  end
328
336
 
329
337
  end
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.20'
4
+ version: '1.21'
5
5
  platform: ruby
6
6
  authors:
7
7
  - traths
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-07-23 00:00:00.000000000 Z
11
+ date: 2020-08-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: pry