robust_excel_ole 1.19 → 1.19.6

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: c5ff7771ae8a35d2cf47dce37e92a9d4d720148faa91eb37dc2342b1239f7d0a
4
- data.tar.gz: 4d50eb99f297d38a60845eca2550a36ae2734694b538c52eb23052a9e9db0077
3
+ metadata.gz: 7b949aa2fed26a88132ccdca420cc2f313944e5229859baf28868dd9b4ff877d
4
+ data.tar.gz: 7af761e4080a48e9191b0f430c32abc5af63ec9415fb345253e9aa28b68c8a72
5
5
  SHA512:
6
- metadata.gz: 2ccd9358b7d0ca576c8120e249c7af4122c4040f51357efc339536f93cde6d8a6b9a2bb32071382f5c5d8ddc3f084920831eda36df0c1a8ed9698972cea9d516
7
- data.tar.gz: f1b813c71610b01d3bfd7e70245a52b02522910b2d0cbd6a9742825c06a131f47bc7f9310c59749b0caf881fef6d8a8bc64336f709ba2104a4f78bff844a44b6
6
+ metadata.gz: 1a79bf3958fbd615cdb97e7310e6ef9d9b64f37e1e130eea5f1a1c21b9444e49444ebfcf794d492b6f99b019716150d2c2d4b59db4b681c92ea71ed129a044cf
7
+ data.tar.gz: 482eaaaaa91608e0da49a241e34489e0717226f9ef123bd81785f2e1187fd67f5cea5aff9ff0e885a2fe7b28c0abb55aeaaed2879f67403d5f4c4b01e109203d
data/.gitignore CHANGED
@@ -10,3 +10,4 @@ doc/*
10
10
  .yardoc
11
11
  TodoList.md
12
12
  spec/data/*.xls*
13
+ spec/data/workbook_listobjects.xlsx
data/Changelog CHANGED
@@ -2,7 +2,15 @@
2
2
  All notable changes to this project will be documented in this file.
3
3
 
4
4
 
5
- ## [1.19] 2020-30-5
5
+ ## [1.20] 2020-12-07
6
+
7
+ ### Changed
8
+ - using pry in console
9
+
10
+ ### Added
11
+ - ListObject
12
+
13
+ ## [1.19] 2020-10-6
6
14
 
7
15
  ### Added
8
16
  - Workheet#values, each_rowvalue
@@ -11,7 +11,7 @@ It supports handling workbooks across Excel instances by keeping track of workbo
11
11
 
12
12
  Library references are supported.
13
13
 
14
- RobustExcelOle works by sending VBA methods via Win32OLE.
14
+ RobustExcelOle works by sending VBA methods via Win32OlE.
15
15
  Therefore, it runs on Windows only.
16
16
 
17
17
  == Features
@@ -20,17 +20,18 @@ RobustExcelOle supports
20
20
 
21
21
  - opening and processing workbooks across various Excel instances
22
22
  - standard tasks like opening, reading, writing, saving, closing workbooks
23
+ - dealing with simultanously happening user interactions
23
24
  - dealing with various cases of Excel and user behaviour
24
25
  - managing conflicts when opening workbooks (e.g. blocking or unsaved workbooks)
25
- - dealing with simultanously happening user interactions
26
26
  - workarounds for Excel bugs and JRuby bugs
27
27
  - availability of all VBA methods
28
- - availability of Excel constants (in form if Ruby constants: Excel constant.capitalize)
29
- - standard Excel file formats (.xlsx, .xls, .xlsm)
28
+ - availability of the Excel constants (in form if Ruby constants: Excel constant.capitalize)
29
+ - all standard Excel file formats (.xlsx, .xls, .xlsm)
30
+ - list objects
30
31
  - reopening workbooks after closing them
31
32
  - unobtrusively opening workbooks, i.e. opening and processing workbooks
32
- while preserving their status, e.g. saved status
33
- - reading and writing workbooks, worksheets, cells, ranges, rows, columns
33
+ while preserving their status, e.g. saved, readonly
34
+ - reading and writing workbooks, worksheets, list objects, ranges, rows, columns, cells
34
35
  - naming, adding, and copying ranges and worksheets
35
36
  - references to other Excel libraries
36
37
  - console for interactive mode
@@ -60,7 +61,11 @@ or as a console. You can start the console via the command
60
61
 
61
62
  reo
62
63
 
63
- You can use the command +jreo+ if you want to start the console under jruby and if you don't want to use a version manager to switch between ruby and jruby. The call of the console will include RobustExcelOle for you.
64
+ If you want to start the console under jruby, and if you don't want to use a version manager to switch between ruby and jruby, then use the command
65
+
66
+ jreo
67
+
68
+ The call of the console will include RobustExcelOle for you.
64
69
 
65
70
  The following examples can be used for both scripts and console. If you have started the console in the gem path, you can just put these examples.
66
71
 
@@ -313,10 +318,37 @@ and set another value to that range.
313
318
 
314
319
  For more details about reading and writing contents of cells and ranges see {README_ranges}[https://github.com/Thomas008/robust_excel_ole/blob/master/docs/README_ranges.rdoc]
315
320
 
321
+ === Reading and writing list objects
322
+
323
+ We can define a list object (or table) from scratch.
324
+
325
+ table = ListObject.new(worksheet, "table 1", [1,1], 3,["Person","Amount"])
326
+
327
+ 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".
328
+
329
+ A row in this table can be accessed with help of [], e.g.
330
+
331
+ table[1]
332
+
333
+ Now we can set and get the value of a cell of the table, e.g.
334
+
335
+ table[1].person = "John"
336
+ table[1].person
337
+ # => "John"
338
+
339
+ Likewise we can get a table with help of an existing Win32OlE table.
340
+
341
+ ole_listobject = worksheet.ListObjects.Item("Table 1")
342
+ table = ListObject.new(ole_listobject)
343
+
344
+ r4 = t4[1]
345
+ r4.person
346
+ # =>
347
+ r.person = "John"
316
348
 
317
349
  === More things
318
350
 
319
- You can convert some win32ole objects into a RobustExcelOle object.
351
+ You can convert some Win32Ole objects into a RobustExcelOle object.
320
352
 
321
353
  range = sheet.Names.Item("firstcell").to_reo
322
354
 
@@ -1,63 +1,21 @@
1
- require '../robust_excel_ole/lib/robust_excel_ole'
1
+ require 'pry'
2
+ require 'robust_excel_ole'
2
3
  include REO
3
4
  # include RobustExcelOle
4
5
  include General
5
6
 
6
- require 'irb'
7
- require 'irb/completion'
8
- require 'irb/ext/save-history'
9
-
10
- ARGV.concat ['--readline',
11
- '--prompt-mode',
12
- 'simple']
13
-
14
- # 250 entries in the list
15
- IRB.conf[:SAVE_HISTORY] = 250
16
-
17
- # Store results in home directory with specified file name
18
- # IRB.conf[:HISTORY_FILE] = "#{ENV['HOME']}/.irb-history"
19
- IRB.conf[:HISTORY_FILE] = "#{ENV['HOME']}/.reo-history"
20
-
21
- IRB.conf[:PROMPT_MODE] = 'ert' #:SIMPLE
22
- #IRB.conf[:USE_READLINE] = true
23
- #IRB.conf[:AUTO_INDENT] = true
24
-
25
- # @private
26
- module Readline
27
- module Hist
28
- LOG = IRB.conf[:HISTORY_FILE]
29
- # LOG = "#{ENV['HOME']}/.irb-history"
30
-
31
- def self.write_log(line)
32
- File.open(LOG, 'ab') do |f|
33
- f << "#{line}
34
- "
35
- end
36
- end
37
-
38
- def self.start_session_log
39
- timestamp = proc { Time.now.strftime('%Y-%m-%d, %H:%M:%S') }
40
- # @private
41
- class <<timestamp
42
- alias_method :to_s, :call
43
- end
44
- write_log("###### session start: #{timestamp}")
45
- at_exit { write_log("###### session stop: #{timestamp}") }
46
- end
47
- end
7
+ puts 'REO console started'
8
+ puts
48
9
 
49
- alias old_readline readline
50
- def readline(*args)
51
- ln = old_readline(*args)
52
- begin
53
- Hist.write_log(ln)
54
- rescue StandardError
55
- end
56
- ln
57
- end
58
- end
59
10
 
60
- Readline::Hist.start_session_log
61
- puts 'REO console started'
62
- IRB.start
11
+ # some pry configuration
12
+ Pry.config.windows_console_warning = false
13
+ Pry.config.history.should_save = true
14
+ #Pry.editor = 'notepad' # 'subl', 'vi'
15
+ #Pry.config.prompt =
16
+ # [
17
+ # ->(_obj, _nest_level, _) { ">> " },
18
+ # ->(*) { " " }
19
+ # ]
63
20
 
21
+ pry
@@ -14,6 +14,7 @@ require File.join(File.dirname(__FILE__), 'robust_excel_ole/workbook')
14
14
  require File.join(File.dirname(__FILE__), 'robust_excel_ole/worksheet')
15
15
  require File.join(File.dirname(__FILE__), 'robust_excel_ole/cell')
16
16
  require File.join(File.dirname(__FILE__), 'robust_excel_ole/range')
17
+ require File.join(File.dirname(__FILE__), 'robust_excel_ole/list_object')
17
18
  require File.join(File.dirname(__FILE__), 'robust_excel_ole/cygwin') if RUBY_PLATFORM =~ /cygwin/
18
19
  require File.join(File.dirname(__FILE__), 'robust_excel_ole/version')
19
20
 
@@ -793,8 +793,3 @@ public
793
793
  Application = Excel
794
794
 
795
795
  end
796
-
797
- class WIN32OLE
798
- include Enumerable
799
- end
800
-
@@ -95,10 +95,18 @@ end
95
95
 
96
96
  # @private
97
97
  class WIN32OLE
98
+
99
+ include Enumerable
98
100
 
99
101
  # type-lifting WIN32OLE objects to RobustExcelOle objects
100
102
  def to_reo
101
- class2method = [{Excel => :Hwnd}, {Workbook => :FullName}, {Worksheet => :Copy}, {RobustExcelOle::Range => :Row}]
103
+ class2method = [
104
+ {Excel => :Hwnd},
105
+ {Workbook => :FullName},
106
+ {Worksheet => :Copy},
107
+ {RobustExcelOle::Range => :Row},
108
+ {ListObject => :ListRows}
109
+ ]
102
110
  class2method.each do |element|
103
111
  classname = element.first.first
104
112
  method = element.first.last
@@ -115,6 +123,17 @@ class WIN32OLE
115
123
  end
116
124
  raise TypeREOError, "given object cannot be type-lifted to a RobustExcelOle object"
117
125
  end
126
+
127
+ alias method_missing_before_implicit_typelift method_missing
128
+ def xx_method_missing(name, *args, &blk)
129
+ begin
130
+ reo_obj = self.to_reo
131
+ rescue
132
+ puts "$!.message: #{$!.message}"
133
+ method_missing_before_implicit_typelift(name, *args, &blk)
134
+ end
135
+ reo_obj.send(name, *args, &blk)
136
+ end
118
137
  end
119
138
 
120
139
  # @private
@@ -0,0 +1,129 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+ module RobustExcelOle
4
+
5
+ class ListRow
6
+ end
7
+
8
+ # This class essentially wraps a Win32Ole ListObject.
9
+ # You can apply all VBA methods (starting with a capital letter)
10
+ # that you would apply for a ListObject.
11
+ # See https://docs.microsoft.com/en-us/office/vba/api/excel.listobject#methods
12
+
13
+ class ListObject < VbaObjects
14
+
15
+ attr_reader :ole_table
16
+
17
+ # constructs a list object (or table).
18
+ # @param [Variable] worksheet_or_ole_listobject a worksheet or a Win32Ole list object
19
+ # @param [Variable] table_name_or_number a table name or table number
20
+ # @param [Array] position a position of the upper left corner
21
+ # @param [Integer] rows_count number of rows
22
+ # @param [Variable] columns_count_or_names number of columns or array of column names
23
+ # @return [ListObject] a ListObject object
24
+ def initialize(worksheet_or_ole_listobject,
25
+ table_name_or_number = "",
26
+ position = [1,1],
27
+ rows_count = 1,
28
+ columns_count_or_names = 1)
29
+
30
+ if (worksheet_or_ole_listobject.ListRows rescue nil)
31
+ @ole_table = worksheet_or_ole_listobject
32
+ else
33
+ @worksheet = worksheet_or_ole_listobject.to_reo
34
+ @ole_table = @worksheet.ListObjects.Item(table_name_or_number) rescue nil
35
+ end
36
+ unless @ole_table
37
+ columns_count =
38
+ columns_count_or_names.is_a?(Integer) ? columns_count_or_names : columns_count_or_names.length
39
+ column_names = columns_count_or_names.respond_to?(:first) ? columns_count_or_names : []
40
+ begin
41
+ listobjects = @worksheet.ListObjects
42
+ @ole_table = listobjects.Add(XlSrcRange,
43
+ @worksheet.range([position[0]..position[0]+rows_count-1,
44
+ position[1]..position[1]+columns_count-1]).ole_range,
45
+ XlYes)
46
+ @ole_table.Name = table_name_or_number
47
+ @ole_table.HeaderRowRange.Value = [column_names] unless column_names.empty?
48
+ rescue WIN32OLERuntimeError => msg # , Java::OrgRacobCom::ComFailException => msg
49
+ raise TableError, "error #{$!.message}"
50
+ end
51
+ end
52
+
53
+ ole_table = @ole_table
54
+ @row_class = Class.new(ListRow) do
55
+
56
+ @@ole_table = ole_table
57
+
58
+ def initialize(row_number)
59
+ @ole_listrow = @@ole_table.ListRows.Item(row_number)
60
+ end
61
+
62
+ def method_missing(name, *args)
63
+ name_before_last_equal = name.to_s.split('=').first
64
+ column_names = @@ole_table.HeaderRowRange.Value.first
65
+ method_names = column_names.map{|c| c.underscore.gsub(/[^[\w\d]]/, '_')}
66
+ column_name = column_names[method_names.index(name_before_last_equal)]
67
+ if column_name
68
+ ole_cell = @@ole_table.Application.Intersect(
69
+ @ole_listrow.Range, @@ole_table.ListColumns(column_name).Range)
70
+ define_getting_setting_method(ole_cell,name.to_s)
71
+ self.send(name, *args)
72
+ else
73
+ super
74
+ end
75
+ end
76
+
77
+ def define_getting_setting_method(ole_cell,name_str)
78
+ if name_str[-1] != '='
79
+ self.class.define_method(name_str) do
80
+ ole_cell.Value
81
+ end
82
+ else
83
+ self.class.define_method(name_str) do |value|
84
+ ole_cell.Value = value
85
+ end
86
+ end
87
+ end
88
+ end
89
+
90
+ # accesses a table row object
91
+ # @param [Integer] a row number (>= 1)
92
+ # @return [ListRow] a object of dynamically constructed class with superclass ListRow
93
+ def [] row_number
94
+ @row_class.new(row_number)
95
+ end
96
+
97
+ end
98
+
99
+ private
100
+
101
+ def method_missing(name, *args)
102
+ if name.to_s[0,1] =~ /[A-Z]/
103
+ if ::ERRORMESSAGE_JRUBY_BUG
104
+ begin
105
+ @ole_table.send(name, *args)
106
+ rescue Java::OrgRacobCom::ComFailException
107
+ raise VBAMethodMissingError, "unknown VBA property or method #{name.inspect}"
108
+ end
109
+ else
110
+ begin
111
+ @ole_table.send(name, *args)
112
+ rescue NoMethodError
113
+ raise VBAMethodMissingError, "unknown VBA property or method #{name.inspect}"
114
+ end
115
+ end
116
+ else
117
+ super
118
+ end
119
+ end
120
+ end
121
+
122
+ # @private
123
+ class TableError < WorksheetREOError
124
+ end
125
+
126
+ Table = ListObject
127
+ TableRow = ListRow
128
+
129
+ end
@@ -1,3 +1,3 @@
1
1
  module RobustExcelOle
2
- VERSION = "1.19"
2
+ VERSION = "1.19.6"
3
3
  end
@@ -33,6 +33,7 @@ Gem::Specification.new do |s|
33
33
  s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
34
34
  s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
35
35
  s.require_paths = ["lib"]
36
+ s.add_runtime_dependency "pry", '>= 0.12.1'
36
37
  s.add_development_dependency "rspec", '>= 2.6.0'
37
38
  s.required_ruby_version = '>= 2.1'
38
39
  end
@@ -20,6 +20,7 @@ module RobustExcelOle
20
20
 
21
21
  before do
22
22
  @dir = create_tmpdir
23
+ @listobject_file = @dir + '/workbook_listobjects.xlsx'
23
24
  @simple_file = @dir + '/workbook.xls'
24
25
  @simple_save_file = @dir + '/workbook_save.xls'
25
26
  @different_file = @dir + '/different_workbook.xls'
@@ -39,6 +40,17 @@ module RobustExcelOle
39
40
 
40
41
  before do
41
42
  @book1 = Workbook.open(@simple_file)
43
+ @book2 = Workbook.open(@listobject_file)
44
+ end
45
+
46
+ it "should type-lift an ListObject" do
47
+ worksheet = @book2.sheet(3)
48
+ ole_table = worksheet.ListObjects.Item(1)
49
+ table = Table.new(ole_table)
50
+ table.Name.should == "table3"
51
+ table.HeaderRowRange.Value.first.should == ["Number","Person","Amount","Time","Date"]
52
+ table.ListRows.Count.should == 6
53
+ worksheet[3,4].Value.should == "Number"
42
54
  end
43
55
 
44
56
  it "should type-lift an Excel" do
@@ -0,0 +1,143 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+ require File.join(File.dirname(__FILE__), './spec_helper')
4
+
5
+ $VERBOSE = nil
6
+
7
+ include RobustExcelOle
8
+ include General
9
+
10
+ describe ListObject do
11
+
12
+ before(:all) do
13
+ excel = Excel.new(:reuse => true)
14
+ open_books = excel == nil ? 0 : excel.Workbooks.Count
15
+ puts "*** open books *** : #{open_books}" if open_books > 0
16
+ Excel.kill_all
17
+ end
18
+
19
+ before do
20
+ @dir = create_tmpdir
21
+ @listobject_file = @dir + '/workbook_listobjects.xlsx'
22
+ @book = Workbook.open(@listobject_file, :visible => true)
23
+ @sheet = @book.sheet(3)
24
+ end
25
+
26
+ after do
27
+ @book.close(:if_unsaved => :forget)
28
+ Excel.kill_all
29
+ rm_tmp(@dir)
30
+ end
31
+
32
+ describe "creating" do
33
+
34
+ context "with standard" do
35
+
36
+ it "should simply create a new table" do
37
+ table = Table.new(@sheet, "table_name", [1,1], 3, ["Person","Amount"])
38
+ table.Name.should == "table_name"
39
+ table.HeaderRowRange.Value.first.should == ["Person","Amount"]
40
+ table.ListRows.Count.should == 3
41
+ @sheet[1,1].Value.should == "Person"
42
+ end
43
+
44
+ it "should type-lift a Win32ole list object into a RobustExcelOle list object" do
45
+ ole_table = @sheet.ListObjects.Item(1)
46
+ table = Table.new(ole_table)
47
+ table.Name.should == "table3"
48
+ table.HeaderRowRange.Value.first.should == ["Number","Person","Amount","Time","Date"]
49
+ table.ListRows.Count.should == 6
50
+ @sheet[3,4].Value.should == "Number"
51
+ end
52
+
53
+ it "should type-lift a Win32ole list object into a RobustExcelOle list object with table name" do
54
+ ole_table = @sheet.ListObjects.Item(1)
55
+ table = Table.new(@sheet, "table3")
56
+ table.Name.should == "table3"
57
+ table.HeaderRowRange.Value.first.should == ["Number","Person","Amount","Time","Date"]
58
+ table.ListRows.Count.should == 6
59
+ @sheet[3,4].Value.should == "Number"
60
+ end
61
+
62
+ it "should type-lift a Win32ole list object into a RobustExcelOle list object with item number" do
63
+ ole_table = @sheet.ListObjects.Item(1)
64
+ table = Table.new(@sheet, 1)
65
+ table.Name.should == "table3"
66
+ table.HeaderRowRange.Value.first.should == ["Number","Person","Amount","Time","Date"]
67
+ table.ListRows.Count.should == 6
68
+ @sheet[3,4].Value.should == "Number"
69
+ end
70
+
71
+ it "should simply create a new table from a ole-worksheet" do
72
+ table = Table.new(@sheet.ole_worksheet, "table_name", [1,1], 3, ["Person","Amount"])
73
+ table.Name.should == "table_name"
74
+ table.HeaderRowRange.Value.first.should == ["Person","Amount"]
75
+ table.ListRows.Count.should == 3
76
+ @sheet[1,1].Value.should == "Person"
77
+ end
78
+
79
+ it "should type-lift a Win32ole list object into a RobustExcelOle list object with table name" do
80
+ ole_table = @sheet.ListObjects.Item(1)
81
+ table = Table.new(@sheet.ole_worksheet, "table3")
82
+ table.Name.should == "table3"
83
+ table.HeaderRowRange.Value.first.should == ["Number","Person","Amount","Time","Date"]
84
+ table.ListRows.Count.should == 6
85
+ @sheet[3,4].Value.should == "Number"
86
+ end
87
+
88
+ it "should type-lift a Win32ole list object into a RobustExcelOle list object with item number" do
89
+ ole_table = @sheet.ListObjects.Item(1)
90
+ table = Table.new(@sheet.ole_worksheet, 1)
91
+ table.Name.should == "table3"
92
+ table.HeaderRowRange.Value.first.should == ["Number","Person","Amount","Time","Date"]
93
+ table.ListRows.Count.should == 6
94
+ @sheet[3,4].Value.should == "Number"
95
+ end
96
+
97
+ end
98
+
99
+ end
100
+
101
+ describe "getting and setting values" do
102
+
103
+ context "with new table" do
104
+
105
+ before do
106
+ @table = Table.new(@sheet, "table_name", [1,1], 3, ["Person","Amount"])
107
+ @table_row1 = @table[1]
108
+ end
109
+
110
+ it "should set and read values" do
111
+ @table_row1.person.should be nil
112
+ @table_row1.person = "John"
113
+ @table_row1.person.should == "John"
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
118
+ @sheet[2,2].Value.should == 42
119
+ end
120
+ end
121
+
122
+ context "with type-lifted ole list object" do
123
+
124
+ before do
125
+ ole_table = @sheet.ListObjects.Item(1)
126
+ @table = Table.new(ole_table)
127
+ @table_row1 = @table[1]
128
+ end
129
+
130
+ it "should set and read values" do
131
+ @table_row1.number.should == 3
132
+ @table_row1.number = 1
133
+ @table_row1.number.should == 1
134
+ @sheet[4,4].Value.should == 1
135
+ @table_row1.person.should == "Herbert"
136
+ @table_row1.person = "John"
137
+ @table_row1.person.should == "John"
138
+ @sheet[4,5].Value.should == "John"
139
+ end
140
+ end
141
+
142
+ end
143
+ end
metadata CHANGED
@@ -1,15 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: robust_excel_ole
3
3
  version: !ruby/object:Gem::Version
4
- version: '1.19'
4
+ version: 1.19.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - traths
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-06-10 00:00:00.000000000 Z
11
+ date: 2020-07-12 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: pry
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: 0.12.1
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: 0.12.1
13
27
  - !ruby/object:Gem::Dependency
14
28
  name: rspec
15
29
  requirement: !ruby/object:Gem::Requirement
@@ -33,9 +47,7 @@ description: "RobustExcelOle helps controlling Excel. \n This
33
47
  are supported.\n It runs on Windows and uses the win32ole library."
34
48
  email:
35
49
  - Thomas.Raths@gmx.net
36
- executables:
37
- - jreo
38
- - reo
50
+ executables: []
39
51
  extensions: []
40
52
  extra_rdoc_files:
41
53
  - README.rdoc
@@ -64,8 +76,6 @@ files:
64
76
  - benchmarking/sample_excel_files/xlsx_500_rows.xlsx
65
77
  - benchmarking/simple_xlsx_reader_example.rb
66
78
  - benchmarking/spreadsheet_example.rb
67
- - bin/jreo
68
- - bin/reo
69
79
  - docs/README_excel.rdoc
70
80
  - docs/README_open.rdoc
71
81
  - docs/README_ranges.rdoc
@@ -99,7 +109,6 @@ files:
99
109
  - examples/open_save_close/example_simple.rb
100
110
  - examples/open_save_close/example_unobtrusively.rb
101
111
  - jreo.bat
102
- - lib/jreo_console.rb
103
112
  - lib/reo_console.rb
104
113
  - lib/robust_excel_ole.rb
105
114
  - lib/robust_excel_ole/address_tool.rb
@@ -109,6 +118,7 @@ files:
109
118
  - lib/robust_excel_ole/cygwin.rb
110
119
  - lib/robust_excel_ole/excel.rb
111
120
  - lib/robust_excel_ole/general.rb
121
+ - lib/robust_excel_ole/list_object.rb
112
122
  - lib/robust_excel_ole/range.rb
113
123
  - lib/robust_excel_ole/range_owners.rb
114
124
  - lib/robust_excel_ole/robustexcelole.sublime-project
@@ -117,7 +127,6 @@ files:
117
127
  - lib/robust_excel_ole/version.rb
118
128
  - lib/robust_excel_ole/workbook.rb
119
129
  - lib/robust_excel_ole/worksheet.rb
120
- - lib/rubygems_plugin.rb
121
130
  - lib/spec_helper.rb
122
131
  - reo.bat
123
132
  - robust_excel_ole.gemspec
@@ -141,10 +150,12 @@ files:
141
150
  - spec/data/workbook_connected.xlsm
142
151
  - spec/data/workbook_linked.xlsm
143
152
  - spec/data/workbook_linked_sub.xlsm
153
+ - spec/data/workbook_listobjects.xlsx
144
154
  - spec/excel_spec.rb
145
155
  - spec/general_spec.rb
146
156
  - spec/helpers/create_temporary_dir.rb
147
157
  - spec/helpers/key_sender.rb
158
+ - spec/list_object_spec.rb
148
159
  - spec/range_spec.rb
149
160
  - spec/spec_helper.rb
150
161
  - spec/workbook_spec.rb
data/bin/jreo DELETED
@@ -1,74 +0,0 @@
1
- #!/usr/bin/env jruby
2
- # -*- mode: jruby -*-
3
-
4
- require 'robust_excel_ole'
5
- include REO
6
- # include RobustExcelOle
7
- include General
8
-
9
- require 'irb'
10
- require 'irb/completion'
11
- require 'irb/ext/save-history'
12
- #gem 'jruby-readline'
13
-
14
- ARGV.concat ['--readline',
15
- '--prompt-mode',
16
- 'simple']
17
- # '-rjruby-readline']
18
-
19
- #IRB.conf[:PROMPT_MODE] = :SIMPLE
20
- #IRB.conf[:USE_READLINE] = true
21
- #IRB.conf[:AUTO_INDENT] = true
22
-
23
-
24
-
25
-
26
- # 250 entries in the list
27
- IRB.conf[:SAVE_HISTORY] = 250
28
-
29
- # Store results in home directory with specified file name
30
- # IRB.conf[:HISTORY_FILE] = "#{ENV['HOME']}/.irb-history"
31
- #IRB.conf[:HISTORY_FILE] = "#{ENV['HOME']}/.irb-save-history"
32
-
33
- IRB.conf[:HISTORY_FILE] = "#{ENV['HOME']}/.reo-history"
34
-
35
- # @private
36
- module Readline
37
- module Hist
38
- LOG = IRB.conf[:HISTORY_FILE]
39
- # LOG = "#{ENV['HOME']}/.irb-history"
40
-
41
- def self.write_log(line)
42
- File.open(LOG, 'ab') do |f|
43
- f << "#{line}
44
- "
45
- end
46
- end
47
-
48
- def self.start_session_log
49
- timestamp = proc { Time.now.strftime('%Y-%m-%d, %H:%M:%S') }
50
- # @private
51
- class <<timestamp
52
- alias_method :to_s, :call
53
- end
54
- write_log("###### session start: #{timestamp}")
55
- at_exit { write_log("###### session stop: #{timestamp}") }
56
- end
57
- end
58
-
59
- alias old_readline readline
60
- def readline(*args)
61
- ln = old_readline(*args)
62
- begin
63
- Hist.write_log(ln)
64
- rescue StandardError
65
- end
66
- ln
67
- end
68
- end
69
-
70
- Readline::Hist.start_session_log
71
- puts 'JREO console started'
72
-
73
-
74
- IRB.start
data/bin/reo DELETED
@@ -1,61 +0,0 @@
1
- #!/usr/bin/env jruby
2
- # -*- mode: jruby -*-
3
-
4
- require 'robust_excel_ole'
5
- include REO
6
- # include RobustExcelOle
7
- include General
8
-
9
- require 'irb'
10
- require 'irb/completion'
11
- require 'irb/ext/save-history'
12
-
13
- ARGV.concat ['--readline',
14
- '--prompt-mode',
15
- 'simple']
16
-
17
- # 250 entries in the list
18
- IRB.conf[:SAVE_HISTORY] = 250
19
-
20
- # Store results in home directory with specified file name
21
- # IRB.conf[:HISTORY_FILE] = "#{ENV['HOME']}/.irb-history"
22
- IRB.conf[:HISTORY_FILE] = "#{ENV['HOME']}/.reo-history"
23
-
24
- # @private
25
- module Readline
26
- module Hist
27
- LOG = IRB.conf[:HISTORY_FILE]
28
- # LOG = "#{ENV['HOME']}/.irb-history"
29
-
30
- def self.write_log(line)
31
- File.open(LOG, 'ab') do |f|
32
- f << "#{line}
33
- "
34
- end
35
- end
36
-
37
- def self.start_session_log
38
- timestamp = proc { Time.now.strftime('%Y-%m-%d, %H:%M:%S') }
39
- # @private
40
- class <<timestamp
41
- alias_method :to_s, :call
42
- end
43
- write_log("###### session start: #{timestamp}")
44
- at_exit { write_log("###### session stop: #{timestamp}") }
45
- end
46
- end
47
-
48
- alias old_readline readline
49
- def readline(*args)
50
- ln = old_readline(*args)
51
- begin
52
- Hist.write_log(ln)
53
- rescue StandardError
54
- end
55
- ln
56
- end
57
- end
58
-
59
- Readline::Hist.start_session_log
60
- puts 'REO console started'
61
- IRB.start
@@ -1,67 +0,0 @@
1
- # require '../robust_excel_ole/lib/robust_excel_ole'
2
- include REO
3
- # include RobustExcelOle
4
- include General
5
-
6
- require 'irb/completion'
7
- require 'irb/ext/save-history'
8
- gem 'jruby-readline'
9
-
10
- ARGV.concat ['--readline',
11
- '--prompt-mode',
12
- 'simple',
13
- '-rjruby-readline']
14
-
15
- #IRB.conf[:PROMPT_MODE] = :SIMPLE
16
- #IRB.conf[:USE_READLINE] = true
17
- #IRB.conf[:AUTO_INDENT] = true
18
-
19
-
20
-
21
-
22
- # 250 entries in the list
23
- IRB.conf[:SAVE_HISTORY] = 250
24
-
25
- # Store results in home directory with specified file name
26
- # IRB.conf[:HISTORY_FILE] = "#{ENV['HOME']}/.irb-history"
27
- #IRB.conf[:HISTORY_FILE] = "#{ENV['HOME']}/.irb-save-history"
28
-
29
- IRB.conf[:HISTORY_FILE] = "#{ENV['HOME']}/.reo-history"
30
-
31
- # @private
32
- module Readline
33
- module Hist
34
- LOG = IRB.conf[:HISTORY_FILE]
35
- # LOG = "#{ENV['HOME']}/.irb-history"
36
-
37
- def self.write_log(line)
38
- File.open(LOG, 'ab') do |f|
39
- f << "#{line}
40
- "
41
- end
42
- end
43
-
44
- def self.start_session_log
45
- timestamp = proc { Time.now.strftime('%Y-%m-%d, %H:%M:%S') }
46
- # @private
47
- class <<timestamp
48
- alias_method :to_s, :call
49
- end
50
- write_log("###### session start: #{timestamp}")
51
- at_exit { write_log("###### session stop: #{timestamp}") }
52
- end
53
- end
54
-
55
- alias old_readline readline
56
- def readline(*args)
57
- ln = old_readline(*args)
58
- begin
59
- Hist.write_log(ln)
60
- rescue StandardError
61
- end
62
- ln
63
- end
64
- end
65
-
66
- Readline::Hist.start_session_log
67
- puts 'JREO console started'
@@ -1,3 +0,0 @@
1
- Gem.post_install do
2
- puts "post_install called for gem"
3
- end