robust_excel_ole 1.20 → 1.21

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 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