robust_excel_ole 1.18.2 → 1.18.7

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: 6e7e99b95395eacc6a02673421b2ff467afd173244990fc19a9834d1c9a2f6c0
4
- data.tar.gz: c58927fbaf2b4d7f301dba8a17a52e966e9b25041ae44f6c782e02785c5df522
3
+ metadata.gz: 4771313f6c9e4c85b4920e78e405fb003d80698be400454012138e9f650edd7b
4
+ data.tar.gz: 9f77bb0ed78567fb6f5e78587b05d4e96f1e6a741f48beb995c6d25ec1662c00
5
5
  SHA512:
6
- metadata.gz: d01c45a26903e3cfb9eb0a45c712a89b4e65dac4050982749df443199b4df19137d26dbb591a15b41ebede0db55877170774fb6f4095a1ec435aba78df7d064c
7
- data.tar.gz: 8e8b3bcfde250213591e7536fc182a5b058e98361b68dfb0e6a95eae96ca5a66568ddf47030eba649870c1b7186686ad55d52e36ce79c10eec857745ff3ddd89
6
+ metadata.gz: 106130a4e2c3e306eab4897ababcd7a26eef25dcdca1b4d41117699cb90326263b1a8263b5775c0123072aa51234d79984d74f30040a5589c5d0b94a2e71349d
7
+ data.tar.gz: a31ac0a959e571862f4fe7c99bd2d0588e5ccc5b838f090494eb6da085bb491f9d5e1eb41213b2e91967c79908dd99e20154405dc7b1ed1424c8c1b9a51bc170
data/Changelog CHANGED
@@ -1,14 +1,19 @@
1
1
  # Change Log
2
2
  All notable changes to this project will be documented in this file.
3
3
 
4
+
5
+ ## [1.19] 2020-30-5
6
+
7
+ ### Added
8
+ - Workheet#values, each_rowvalue
9
+
10
+
4
11
  ## [1.18] 2020-30-4
5
12
 
6
13
  ### Added
7
14
  - Workbook#worksheets, worksheets_count
8
15
  - Worksheet#each_value
9
16
  - Range#value, value=
10
-
11
- ### Changed
12
17
  - Range#initialize: optional paramter worksheet
13
18
 
14
19
  ## [1.17]
@@ -0,0 +1,7 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gem 'rubyXL'
4
+ gem 'roo'
5
+ gem 'creek'
6
+ gem 'spreadsheet'
7
+ gem 'simple_xlsx_reader'
@@ -0,0 +1,131 @@
1
+ # ruby-excel-library-examples
2
+ This project contains sample code for reading Excel files with different Ruby libraries.
3
+
4
+ ## `.xlsx` File Examples
5
+ Below are code samples for reading current OOXML Excel files using [**rubyXL**](https://github.com/weshatheleopard/rubyXL), [**roo**](https://github.com/roo-rb/roo), [**creek**](https://github.com/pythonicrubyist/creek), and [**simple_xlsx_reader**](https://github.com/woahdae/simple_xlsx_reader).
6
+
7
+ ### [rubyXL](https://github.com/weshatheleopard/rubyXL)
8
+ ```ruby
9
+ require 'rubyXL'
10
+
11
+ workbook = RubyXL::Parser.parse './sample_excel_files/xlsx_500_rows.xlsx'
12
+ worksheets = workbook.worksheets
13
+ puts "Found #{worksheets.count} worksheets"
14
+
15
+ worksheets.each do |worksheet|
16
+ puts "Reading: #{worksheet.sheet_name}"
17
+ num_rows = 0
18
+
19
+ worksheet.each do |row|
20
+ row_cells = row.cells.map{ |cell| cell.value }
21
+ num_rows += 1
22
+
23
+ # uncomment to print out row values
24
+ # puts row_cells.join " "
25
+ end
26
+ puts "Read #{num_rows} rows"
27
+ end
28
+
29
+ puts 'Done'
30
+ ```
31
+ ### [roo](https://github.com/roo-rb/roo)
32
+ ```ruby
33
+ require 'roo'
34
+
35
+ workbook = Roo::Spreadsheet.open './sample_excel_files/xlsx_500_rows.xlsx'
36
+ worksheets = workbook.sheets
37
+ puts "Found #{worksheets.count} worksheets"
38
+
39
+ worksheets.each do |worksheet|
40
+ puts "Reading: #{worksheet}"
41
+ num_rows = 0
42
+
43
+ workbook.sheet(worksheet).each_row_streaming do |row|
44
+ row_cells = row.map { |cell| cell.value }
45
+ num_rows += 1
46
+
47
+ # uncomment to print out row values
48
+ # puts row_cells.join ' '
49
+ end
50
+ puts "Read #{num_rows} rows"
51
+ end
52
+
53
+ puts 'Done'
54
+ ```
55
+ ### [creek](https://github.com/pythonicrubyist/creek)
56
+ ```ruby
57
+ require 'creek'
58
+
59
+ workbook = Creek::Book.new './sample_excel_files/xlsx_500_rows.xlsx'
60
+ worksheets = workbook.sheets
61
+ puts "Found #{worksheets.count} worksheets"
62
+
63
+ worksheets.each do |worksheet|
64
+ puts "Reading: #{worksheet.name}"
65
+ num_rows = 0
66
+
67
+ worksheet.rows.each do |row|
68
+ row_cells = row.values
69
+ num_rows += 1
70
+
71
+ # uncomment to print out row values
72
+ # puts row_cells.join " "
73
+ end
74
+ puts "Read #{num_rows} rows"
75
+ end
76
+
77
+ puts 'Done'
78
+ ```
79
+ ### [simple_xlsx_reader](https://github.com/woahdae/simple_xlsx_reader)
80
+ ```ruby
81
+ require 'simple_xlsx_reader'
82
+
83
+ workbook = SimpleXlsxReader.open './sample_excel_files/xlsx_500000_rows.xlsx'
84
+ worksheets = workbook.sheets
85
+ puts "Found #{worksheets.count} worksheets"
86
+
87
+ worksheets.each do |worksheet|
88
+ puts "Reading: #{worksheet.name}"
89
+ num_rows = 0
90
+
91
+ worksheet.rows.each do |row|
92
+ row_cells = row
93
+ num_rows += 1
94
+
95
+ # uncomment to print out row values
96
+ # puts row_cells.join ' '
97
+ end
98
+ puts "Read #{num_rows} rows"
99
+ end
100
+
101
+ puts 'Done'
102
+ ```
103
+
104
+ ## Legacy `.xls` Files
105
+ Below are code samples for reading legacy Excel files using [**spreadsheet**](https://github.com/zdavatz/spreadsheet)
106
+
107
+ ### [spreadsheet](https://github.com/zdavatz/spreadsheet)
108
+ ```ruby
109
+ require 'spreadsheet'
110
+
111
+ # Note: spreadsheet only supports .xls files (not .xlsx)
112
+ workbook = Spreadsheet.open './sample_excel_files/xls_500_rows.xls'
113
+ worksheets = workbook.worksheets
114
+ puts "Found #{worksheets.count} worksheets"
115
+
116
+ worksheets.each do |worksheet|
117
+ puts "Reading: #{worksheet.name}"
118
+ num_rows = 0
119
+
120
+ worksheet.rows.each do |row|
121
+ row_cells = row.to_a.map{ |v| v.methods.include?(:value) ? v.value : v }
122
+ num_rows += 1
123
+
124
+ # uncomment to print out row values
125
+ # puts row_cells.join " "
126
+ end
127
+ puts "Read #{num_rows} rows"
128
+ end
129
+
130
+ puts 'Done'
131
+ ```
@@ -0,0 +1,33 @@
1
+
2
+ require 'creek'
3
+
4
+ start_time = Time.now
5
+
6
+ # ============================================
7
+ # =========== Read Example ===============
8
+ # ============================================
9
+
10
+ workbook = Creek::Book.new './sample_excel_files/xlsx_500_rows.xlsx'
11
+
12
+ worksheets = workbook.sheets
13
+ puts "Found #{worksheets.count} worksheets"
14
+
15
+ worksheets.each do |worksheet|
16
+ puts "Reading: #{worksheet.name}"
17
+ num_rows = 0
18
+
19
+ worksheet.rows.each do |row|
20
+ row_cells = row.values
21
+ num_rows += 1
22
+
23
+ # uncomment to print out row values
24
+ # puts row_cells.join " "
25
+ end
26
+ puts "Read #{num_rows} rows"
27
+ end
28
+
29
+ end_time = Time.now
30
+ running_time = end_time - start_time
31
+ puts "time: #{running_time} sec."
32
+
33
+ puts 'Done'
@@ -0,0 +1,28 @@
1
+ require_relative '../lib/robust_excel_ole'
2
+
3
+ include RobustExcelOle
4
+
5
+ begin
6
+
7
+ filename = './large_excel_files/xlsx_10_rows.xlsx'
8
+ Excel.kill_all
9
+
10
+ Workbook.open(filename, :if_absent => :create) do |workbook|
11
+ # default: 3 worksheets
12
+ num_worksheets = 1
13
+ workbook.each do |worksheet|
14
+ puts "worksheet-number #{num_worksheets}"
15
+ num_rows = 1
16
+ (1..10).each do |row|
17
+ puts "row-number: #{num_rows}"
18
+ (1..10).each do |column|
19
+ worksheet[num_rows,column].value = (num_rows-1)*10+column
20
+ end
21
+ num_rows += 1
22
+ end
23
+ num_worksheets += 1
24
+ end
25
+ workbook.save
26
+ end
27
+
28
+ end
@@ -0,0 +1,26 @@
1
+ require File.join(File.dirname(__FILE__), '../lib/robust_excel_ole')
2
+
3
+ start_time = Time.now
4
+
5
+ workbook = RobustExcelOle::Workbook.open './sample_excel_files/xlsx_500_rows.xlsx'
6
+
7
+ puts "Found #{workbook.worksheets_count} worksheets"
8
+
9
+ workbook.each do |worksheet|
10
+ puts "Reading: #{worksheet.name}"
11
+ num_rows = 0
12
+
13
+ worksheet.values.each do |row_vals|
14
+ row_cells = row_vals
15
+ num_rows += 1
16
+ end
17
+
18
+ puts "Read #{num_rows} rows"
19
+
20
+ end
21
+
22
+ end_time = Time.now
23
+ running_time = end_time - start_time
24
+ puts "time: #{running_time} sec."
25
+
26
+ puts 'Done'
@@ -0,0 +1,31 @@
1
+ #require 'robust_excel_ole'
2
+ require File.join(File.dirname(__FILE__), '../lib/robust_excel_ole')
3
+
4
+ start_time = Time.now
5
+
6
+ workbook = RobustExcelOle::Workbook.open './sample_excel_files/xlsx_500_rows.xlsx'
7
+
8
+ puts "Found #{workbook.Worksheets.Count} worksheets"
9
+
10
+ workbook.each do |worksheet|
11
+ puts "Reading: #{worksheet.name}"
12
+ num_rows = 0
13
+
14
+ worksheet.each_row do |row|
15
+ row_cells = row.map{ |cell| cell.value }
16
+ num_rows += 1
17
+
18
+ # uncomment to print out row values
19
+ # puts row_cells.join " "
20
+ end
21
+ puts "Read #{num_rows} rows"
22
+
23
+ end
24
+
25
+
26
+
27
+ end_time = Time.now
28
+ running_time = end_time - start_time
29
+ puts "time: #{running_time} sec."
30
+
31
+ puts 'Done'
@@ -0,0 +1,26 @@
1
+ require File.join(File.dirname(__FILE__), '../lib/robust_excel_ole')
2
+
3
+ start_time = Time.now
4
+
5
+ workbook = RobustExcelOle::Workbook.open './sample_excel_files/xlsx_500_rows.xlsx'
6
+
7
+ puts "Found #{workbook.worksheets_count} worksheets"
8
+
9
+ workbook.each do |worksheet|
10
+ puts "Reading: #{worksheet.name}"
11
+ num_rows = 0
12
+
13
+ worksheet.each_rowvalue do |row_vals|
14
+ row_cells = row_vals
15
+ num_rows += 1
16
+ end
17
+
18
+ puts "Read #{num_rows} rows"
19
+
20
+ end
21
+
22
+ end_time = Time.now
23
+ running_time = end_time - start_time
24
+ puts "time: #{running_time} sec."
25
+
26
+ puts 'Done'
@@ -0,0 +1,33 @@
1
+ require 'roo'
2
+
3
+ # ============================================
4
+ # =========== Read Example ===============
5
+ # ============================================
6
+
7
+ start_time = Time.now
8
+
9
+ workbook = Roo::Spreadsheet.open './sample_excel_files/xlsx_500_rows.xlsx'
10
+
11
+ worksheets = workbook.sheets
12
+ puts "Found #{worksheets.count} worksheets"
13
+
14
+ worksheets.each do |worksheet|
15
+ puts "Reading: #{worksheet}"
16
+ num_rows = 0
17
+
18
+ workbook.sheet(worksheet).each_row_streaming do |row|
19
+ row_cells = row.map { |cell| cell.value }
20
+ #puts row_cells.inspect
21
+ num_rows += 1
22
+
23
+ # uncomment to print out row values
24
+ # puts row_cells.join ' '
25
+ end
26
+ puts "Read #{num_rows} rows"
27
+ end
28
+
29
+ end_time = Time.now
30
+ running_time = end_time - start_time
31
+ puts "time: #{running_time} sec."
32
+
33
+ puts 'Done'
@@ -0,0 +1,36 @@
1
+
2
+ require 'rubyXL'
3
+
4
+ start_time = Time.now
5
+
6
+ # ============================================
7
+ # =========== Read Example ===============
8
+ # ============================================
9
+
10
+ workbook = RubyXL::Parser.parse './sample_excel_files/xlsx_500_rows.xlsx'
11
+
12
+ worksheets = workbook.worksheets
13
+ puts "Found #{worksheets.count} worksheets"
14
+
15
+ worksheets.each do |worksheet|
16
+ puts "Reading: #{worksheet.sheet_name}"
17
+ num_rows = 0
18
+
19
+ worksheet.each do |row|
20
+ row_cells = row.cells.map{ |cell| cell.value }
21
+ num_rows += 1
22
+
23
+ # uncomment to print out row values
24
+ # puts row_cells.join " "
25
+ end
26
+ puts "Read #{num_rows} rows"
27
+ end
28
+
29
+ end_time = Time.now
30
+ running_time = end_time - start_time
31
+ puts "time: #{running_time} sec."
32
+
33
+ puts 'Done'
34
+
35
+
36
+ puts 'Done'
@@ -0,0 +1,33 @@
1
+
2
+ require 'simple_xlsx_reader'
3
+
4
+ start_time = Time.now
5
+
6
+ # ============================================
7
+ # =========== Read Example ==============
8
+ # ============================================
9
+
10
+ workbook = SimpleXlsxReader.open './sample_excel_files/xlsx_500_rows.xlsx'
11
+
12
+ worksheets = workbook.sheets
13
+ puts "Found #{worksheets.count} worksheets"
14
+
15
+ worksheets.each do |worksheet|
16
+ puts "Reading: #{worksheet.name}"
17
+ num_rows = 0
18
+
19
+ worksheet.rows.each do |row|
20
+ row_cells = row
21
+ num_rows += 1
22
+
23
+ # uncomment to print out row values
24
+ # puts row_cells.join ' '
25
+ end
26
+ puts "Read #{num_rows} rows"
27
+ end
28
+
29
+ end_time = Time.now
30
+ running_time = end_time - start_time
31
+ puts "time: #{running_time} sec."
32
+
33
+ puts 'Done'
@@ -0,0 +1,36 @@
1
+
2
+ require 'spreadsheet'
3
+
4
+ start_time = Time.now
5
+
6
+ # ============================================
7
+ # =========== Read Example ===============
8
+ # ============================================
9
+
10
+ # Note: spreadsheet only supports .xls files (not .xlsx)
11
+ workbook = Spreadsheet.open './sample_excel_files/xls_25000_rows.xls'
12
+
13
+ worksheets = workbook.worksheets
14
+ puts "Found #{worksheets.count} worksheets"
15
+
16
+
17
+ worksheets.each do |worksheet|
18
+ puts "Reading: #{worksheet.name}"
19
+ num_rows = 0
20
+
21
+ worksheet.rows.each do |row|
22
+ row_cells = row.to_a.map{ |v| v.methods.include?(:value) ? v.value : v }
23
+ num_rows += 1
24
+
25
+ # uncomment to print out row values
26
+ # puts row_cells.join " "
27
+ end
28
+ puts "Read #{num_rows} rows"
29
+ end
30
+
31
+ end_time = Time.now
32
+ running_time = end_time - start_time
33
+ puts "time: #{running_time} sec."
34
+
35
+
36
+ puts 'Done'
@@ -0,0 +1,73 @@
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
+ IRB.start
data/bin/reo ADDED
@@ -0,0 +1,61 @@
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
@@ -377,43 +377,7 @@ or
377
377
 
378
378
  worksheet.set_cellval(1,1,"new_value")
379
379
 
380
- === Accessing rows and columns
381
380
 
382
- The methods Worksheet#each, Worksheet#each_row and Worksheet#each_column enable to access each cell, row and column, respectively.
383
-
384
- worksheet.each do |cell|
385
- # do something with cell
386
- # read every row, every column
387
- end
388
-
389
- worksheet.each_row do |row|
390
- # do something with row
391
- end
392
-
393
- worksheet.each_column do |column|
394
- # do something with column
395
- end
396
-
397
- The method Worksheet#each_value accesses the values of each row.
398
-
399
- worksheet.each_value do |row_values|
400
- # do something with the row_values
401
- end
402
-
403
- You access a range of a row by giving the number of the row, and optionally, the range of the cell numbers.
404
-
405
- worksheet.row_range(1) # => first row
406
- worksheet.row_range(1, 1..3 ) # => first three cells of the first row
407
-
408
- Simarly you can access a range of a column.
409
-
410
- worksheet.col_range(3) # => third column
411
- worksheet.col_range(3, 1..2) # => first two cells of the third column
412
-
413
- Within a row or column range you can access a certain cell.
414
-
415
- row_range[1] # => first cell in row_range
416
- column_range[2] # => second cell in column_range
417
381
 
418
382
  == Code
419
383
 
@@ -75,6 +75,78 @@ If you want to copy a worksheet, if a worksheet +sheet+ is given, and add an emp
75
75
 
76
76
  Note, that running in jruby, due to some restrictions of jruby, there is a workaround when adding or copy a worksheet at the end (appending): the last worksheet is being copied and deleted afterwards, in order to serve as a dummy worksheet. This may cause a different behaviour.
77
77
 
78
+ === Accessing rows and columns
79
+
80
+ The methods Worksheet#each, Worksheet#each_row and Worksheet#each_column enable to access each cell, row and column, respectively.
81
+
82
+ worksheet.each do |cell|
83
+ # do something with cell
84
+ # read every row, every column
85
+ end
86
+
87
+ worksheet.each_row do |row|
88
+ # do something with row
89
+ end
90
+
91
+ worksheet.each_column do |column|
92
+ # do something with column
93
+ end
94
+
95
+ The method Worksheet#values yields all cell values of the used range of the worksheet into a 2-dimensional array. For example:
96
+
97
+ worksheet.values
98
+ => [["foo", "workbook", "sheet1"], ["foo", nil, "foobaaa"], ["matz", "is", "nice"]]
99
+
100
+ The method Worksheet#each_rowvalue provides enable to access the values of each row.
101
+
102
+ worksheet.each_rowvalue do |row_values|
103
+ # do something with the row_values
104
+ end
105
+
106
+ You access a range of a row by giving the number of the row, and optionally, the range of the cell numbers.
107
+
108
+ worksheet.row_range(1) # => first row
109
+ worksheet.row_range(1, 1..3 ) # => first three cells of the first row
110
+
111
+ Reading the values is enabled with help of #values:
112
+
113
+ worksheet.row_range(1).values
114
+
115
+ Simarly you can access a range of a column.
116
+
117
+ worksheet.col_range(3) # => third column
118
+ worksheet.col_range(3, 1..2) # => first two cells of the third column
119
+
120
+ Within a row or column range you can access a certain cell.
121
+
122
+ row_range[1] # => first cell in row_range
123
+ column_range[2] # => second cell in column_range
124
+
125
+ === Deleting and inserting rows and columns
126
+
127
+ As mentioned above, VBA methods can be applied to the RobustExcelOle objects, e.g. when deleting or inserting rows and columns.
128
+
129
+ row1 = worksheet.row_range(1)
130
+ row1.Delete
131
+
132
+ row1.Insert(XlShiftDown,XlFormatFromLeftOrAbove)
133
+
134
+ col1 = worksheet.col_range(1)
135
+ col1.Insert
136
+
137
+ === Getting and setting row height and column width
138
+
139
+ row_hight = row1.RowHight
140
+ row1.RowHeight = row_hight * 2
141
+
142
+ col_width = col1.ColumnWidth
143
+ col1.ColumnWidth = col_width * 2
144
+
145
+ === Vertical and horizontal alignment of contents of rows
146
+
147
+ row1.VerticalAlignment = XlVAlignCenter
148
+ row1.HorizontalAlignment = XlHAlignLeft
149
+
78
150
  == Code
79
151
 
80
152
  worksheet.rb[https://github.com/Thomas008/robust_excel_ole/blob/master/lib/robust_excel_ole/worksheet.rb]
@@ -1,8 +1,9 @@
1
- # require '../robust_excel_ole/lib/robust_excel_ole'
1
+ require '../robust_excel_ole/lib/robust_excel_ole'
2
2
  include REO
3
3
  # include RobustExcelOle
4
4
  include General
5
5
 
6
+ require 'irb'
6
7
  require 'irb/completion'
7
8
  require 'irb/ext/save-history'
8
9
 
@@ -17,6 +18,10 @@ IRB.conf[:SAVE_HISTORY] = 250
17
18
  # IRB.conf[:HISTORY_FILE] = "#{ENV['HOME']}/.irb-history"
18
19
  IRB.conf[:HISTORY_FILE] = "#{ENV['HOME']}/.reo-history"
19
20
 
21
+ IRB.conf[:PROMPT_MODE] = 'ert' #:SIMPLE
22
+ #IRB.conf[:USE_READLINE] = true
23
+ #IRB.conf[:AUTO_INDENT] = true
24
+
20
25
  # @private
21
26
  module Readline
22
27
  module Hist
@@ -54,3 +59,5 @@ end
54
59
 
55
60
  Readline::Hist.start_session_log
56
61
  puts 'REO console started'
62
+ IRB.start
63
+
@@ -1,3 +1,3 @@
1
1
  module RobustExcelOle
2
- VERSION = "1.18.2"
2
+ VERSION = "1.18.7"
3
3
  end
@@ -109,11 +109,10 @@ module RobustExcelOle
109
109
  # @params row and column
110
110
  # @returns value of the cell
111
111
  def cellval(x,y)
112
- xy = "#{x}_#{y}"
113
112
  begin
114
113
  @ole_worksheet.Cells.Item(x, y).Value
115
114
  rescue
116
- raise RangeNotEvaluatable, "cannot read cell (#{p1.inspect},#{p2.inspect})"
115
+ raise RangeNotEvaluatable, "cannot read cell (#{x.inspect},#{y.inspect})"
117
116
  end
118
117
  end
119
118
 
@@ -122,7 +121,7 @@ module RobustExcelOle
122
121
  xy = "#{x}_#{y}"
123
122
  @cells = { }
124
123
  begin
125
- @cells[xy] = RobustExcelOle::Cell.new(@ole_worksheet.Cells.Item(x, y), @worksheet)
124
+ @cells[xy] ||= RobustExcelOle::Cell.new(@ole_worksheet.Cells.Item(x, y), @worksheet)
126
125
  @cells[xy].Value
127
126
  rescue
128
127
  raise RangeNotEvaluatable, "cannot read cell (#{p1.inspect},#{p2.inspect})"
@@ -141,6 +140,10 @@ module RobustExcelOle
141
140
  raise RangeNotEvaluatable, "cannot assign value #{value.inspect} to cell (#{y.inspect},#{x.inspect})"
142
141
  end
143
142
 
143
+ def values
144
+ @ole_worksheet.UsedRange.Value
145
+ end
146
+
144
147
  def each
145
148
  each_row do |row_range|
146
149
  row_range.each do |cell|
@@ -159,13 +162,17 @@ module RobustExcelOle
159
162
  end
160
163
  end
161
164
 
162
- def each_value
165
+ def each_rowvalue
163
166
  @ole_worksheet.UsedRange.Value.each do |row_values|
164
167
  yield row_values
165
168
  end
166
169
  end
167
170
 
168
- def each_value_with_index(offset = 0)
171
+ def each_value # :deprecated: #
172
+ each_rowvalue
173
+ end
174
+
175
+ def each_rowvalue_with_index(offset = 0)
169
176
  i = offset
170
177
  @ole_worksheet.UsedRange.Value.each do |row_values|
171
178
  yield row_values, i
data/reo.bat CHANGED
@@ -1,3 +1,5 @@
1
1
  @echo off
2
2
 
3
- irb -f -r ./lib/robust_excel_ole -r ./lib/reo_console.rb
3
+ irb -f -r ./lib/reo_console.rb
4
+
5
+ #irb -f -r ./lib/robust_excel_ole -r ./lib/reo_console.rb
@@ -34,6 +34,5 @@ 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_development_dependency "rspec", '>= 2.6.0'
37
- s.required_ruby_version = '>= 1.8.6'
38
- #s.extensions << 'extconf.rb'
37
+ s.required_ruby_version = '>= 2.1'
39
38
  end
@@ -295,17 +295,25 @@ describe Worksheet do
295
295
 
296
296
  end
297
297
 
298
- describe "#each_value" do
298
+ describe "#values" do
299
+
300
+ it "should yield cell values of the used range" do
301
+ @sheet.values.should == [["foo", "workbook", "sheet1"], ["foo", nil, "foobaaa"], ["matz", "is", "nice"]]
302
+ end
303
+
304
+ end
305
+
306
+ describe "#each_rowvalue" do
299
307
 
300
308
  it "should yield arrays" do
301
- @sheet.each_value do |row_value|
309
+ @sheet.each_rowvalue do |row_value|
302
310
  row_value.should be_kind_of Array
303
311
  end
304
312
  end
305
313
 
306
314
  it "should read the rows" do
307
315
  i = 0
308
- @sheet.each_value do |row_values|
316
+ @sheet.each_rowvalue do |row_values|
309
317
  case i
310
318
  when 0
311
319
  row_values.should == ['foo', 'workbook', 'sheet1']
@@ -317,7 +325,7 @@ describe Worksheet do
317
325
  end
318
326
 
319
327
  it "should read the rows with index" do
320
- @sheet.each_value_with_index do |row_values, i|
328
+ @sheet.each_rowvalue_with_index do |row_values, i|
321
329
  case i
322
330
  when 0
323
331
  row_values.should == ['foo', 'workbook', 'sheet1']
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.18.2
4
+ version: 1.18.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - traths
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-05-26 00:00:00.000000000 Z
11
+ date: 2020-06-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec
@@ -33,7 +33,9 @@ description: "RobustExcelOle helps controlling Excel. \n This
33
33
  are supported.\n It runs on Windows and uses the win32ole library."
34
34
  email:
35
35
  - Thomas.Raths@gmx.net
36
- executables: []
36
+ executables:
37
+ - jreo
38
+ - reo
37
39
  extensions: []
38
40
  extra_rdoc_files:
39
41
  - README.rdoc
@@ -50,6 +52,20 @@ files:
50
52
  - Rakefile
51
53
  - TodoList.md
52
54
  - ___dummy_workbook.xls
55
+ - benchmarking/Gemfile
56
+ - benchmarking/README.md
57
+ - benchmarking/creek_example.rb
58
+ - benchmarking/generating_excel_files.rb
59
+ - benchmarking/reo_example.rb
60
+ - benchmarking/reo_example1.rb
61
+ - benchmarking/reo_example2.rb
62
+ - benchmarking/roo_example.rb
63
+ - benchmarking/ruby_xl_example.rb
64
+ - benchmarking/sample_excel_files/xlsx_500_rows.xlsx
65
+ - benchmarking/simple_xlsx_reader_example.rb
66
+ - benchmarking/spreadsheet_example.rb
67
+ - bin/jreo
68
+ - bin/reo
53
69
  - docs/README_excel.rdoc
54
70
  - docs/README_open.rdoc
55
71
  - docs/README_ranges.rdoc
@@ -82,7 +98,6 @@ files:
82
98
  - examples/open_save_close/example_reuse.rb
83
99
  - examples/open_save_close/example_simple.rb
84
100
  - examples/open_save_close/example_unobtrusively.rb
85
- - extconf.rb
86
101
  - jreo.bat
87
102
  - lib/jreo_console.rb
88
103
  - lib/reo_console.rb
@@ -159,7 +174,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
159
174
  requirements:
160
175
  - - ">="
161
176
  - !ruby/object:Gem::Version
162
- version: 1.8.6
177
+ version: '2.1'
163
178
  required_rubygems_version: !ruby/object:Gem::Requirement
164
179
  requirements:
165
180
  - - ">="
data/extconf.rb DELETED
@@ -1,13 +0,0 @@
1
- dummy_make_content = "make:\n" \
2
- "\t:\n" \
3
- "install:\n" \
4
- "\t:\n" \
5
- "clean:\n" \
6
- "\t:\n"
7
- File.write('Makefile', dummy_make_content)
8
-
9
- puts "hello"
10
-
11
- a = 2
12
-
13
- puts a