robust_excel_ole 1.18.2 → 1.18.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Changelog +7 -2
- data/benchmarking/Gemfile +7 -0
- data/benchmarking/README.md +131 -0
- data/benchmarking/creek_example.rb +33 -0
- data/benchmarking/generating_excel_files.rb +28 -0
- data/benchmarking/reo_example.rb +26 -0
- data/benchmarking/reo_example1.rb +31 -0
- data/benchmarking/reo_example2.rb +26 -0
- data/benchmarking/roo_example.rb +33 -0
- data/benchmarking/ruby_xl_example.rb +36 -0
- data/benchmarking/sample_excel_files/xlsx_500_rows.xlsx +0 -0
- data/benchmarking/simple_xlsx_reader_example.rb +33 -0
- data/benchmarking/spreadsheet_example.rb +36 -0
- data/bin/jreo.bat +3 -0
- data/bin/reo.bat +3 -0
- data/docs/README_ranges.rdoc +11 -2
- data/lib/robust_excel_ole/version.rb +1 -1
- data/lib/robust_excel_ole/worksheet.rb +12 -5
- data/robust_excel_ole.gemspec +1 -2
- data/spec/worksheet_spec.rb +12 -4
- metadata +20 -5
- data/extconf.rb +0 -13
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e27445ccdfcf45a843bf7d4271a36f9ced4b8ab8a0e78212ee4d6f10b5fe4aca
|
4
|
+
data.tar.gz: 9aaf9daad0c04d97161dad9bfd3836504812b9581e78ce94eceb1c24ba43705a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9748c186da786a3af11bb47215891f2082dee540b1ef2870512393db02d8f5f685b14e58668e9047f2dcc4793d128c750bf26ae18f9f19e19bc68a5577d9ef2e
|
7
|
+
data.tar.gz: 9e1d163cc6e6c035cb6621aaafbc6701785e553cf8a19f7b0fe7936a0253b1f298864a6905319b4501fb9cece53d512083dd0148abc3571eae9326b9966d8329
|
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,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'
|
Binary file
|
@@ -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_500_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'
|
data/bin/jreo.bat
ADDED
data/bin/reo.bat
ADDED
data/docs/README_ranges.rdoc
CHANGED
@@ -394,9 +394,14 @@ The methods Worksheet#each, Worksheet#each_row and Worksheet#each_column enable
|
|
394
394
|
# do something with column
|
395
395
|
end
|
396
396
|
|
397
|
-
The method Worksheet#
|
397
|
+
The method Worksheet#values yields all cell values of the used range of the worksheet into a 2-dimensional array. For example:
|
398
398
|
|
399
|
-
worksheet.
|
399
|
+
worksheet.values
|
400
|
+
=> [["foo", "workbook", "sheet1"], ["foo", nil, "foobaaa"], ["matz", "is", "nice"]]
|
401
|
+
|
402
|
+
The method Worksheet#each_rowvalue provides enable to access the values of each row.
|
403
|
+
|
404
|
+
worksheet.each_rowvalue do |row_values|
|
400
405
|
# do something with the row_values
|
401
406
|
end
|
402
407
|
|
@@ -405,6 +410,10 @@ You access a range of a row by giving the number of the row, and optionally, the
|
|
405
410
|
worksheet.row_range(1) # => first row
|
406
411
|
worksheet.row_range(1, 1..3 ) # => first three cells of the first row
|
407
412
|
|
413
|
+
Reading the values is enabled with help of #values:
|
414
|
+
|
415
|
+
worksheet.row_range(1).values
|
416
|
+
|
408
417
|
Simarly you can access a range of a column.
|
409
418
|
|
410
419
|
worksheet.col_range(3) # => third column
|
@@ -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 (#{
|
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]
|
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
|
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
|
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/robust_excel_ole.gemspec
CHANGED
@@ -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
|
38
|
-
#s.extensions << 'extconf.rb'
|
37
|
+
s.required_ruby_version = '>= 2.1'
|
39
38
|
end
|
data/spec/worksheet_spec.rb
CHANGED
@@ -295,17 +295,25 @@ describe Worksheet do
|
|
295
295
|
|
296
296
|
end
|
297
297
|
|
298
|
-
describe "#
|
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.
|
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.
|
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.
|
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.
|
4
|
+
version: 1.18.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- traths
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-06-03 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.bat
|
38
|
+
- reo.bat
|
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.bat
|
68
|
+
- bin/reo.bat
|
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
|
177
|
+
version: '2.1'
|
163
178
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
164
179
|
requirements:
|
165
180
|
- - ">="
|