rxls 0.0.1 → 0.0.2

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.
data/lib/rxls/base.rb ADDED
@@ -0,0 +1,76 @@
1
+ require 'win32ole'
2
+ module Rxls
3
+ class Base
4
+
5
+ def initialize file
6
+ @obj = begin
7
+ WIN32OLE.connect('excel.application')
8
+ rescue
9
+ WIN32OLE.new('excel.application')
10
+ end
11
+ file = File.expand_path "../../../spec/fixtures/#{file}.xls", __FILE__ if file.kind_of? Symbol
12
+ @obj.workbooks.open file
13
+ end
14
+
15
+ def quit
16
+ @obj.quit
17
+ end
18
+
19
+ def worksheet(n,mapping=nil)
20
+ Worksheet.new(@obj,n,mapping)
21
+ end
22
+
23
+ end
24
+
25
+ class Worksheet
26
+ include Enumerable
27
+
28
+ # 'a' => [0]
29
+ # 'a b' => [0,1]
30
+ def to_row_numbers(s)
31
+ s.split(' ').map do |r|
32
+ r = 96.chr + r if r.length == 1
33
+ s = nil
34
+ r.each_byte do |b|
35
+ s = s ? s + (b-97) : (b-96) * 26
36
+ end
37
+ s
38
+ end
39
+ end
40
+
41
+ def initialize(o,n,mapping)
42
+ @columns = to_row_numbers mapping
43
+ @values = o.Worksheets(n).UsedRange.Value
44
+ headers = @values.shift # skip 1st row
45
+ @headers = @columns.map{|c| headers[c]}
46
+ end
47
+
48
+ def each
49
+ @values.each_with_index do |row,column|
50
+ values = @columns ? @columns.map{|r| row[r]} : row
51
+ yield values.unshift(column)
52
+ end
53
+ end
54
+
55
+ def dump
56
+ vcs = @columns.map{|column| ValueCounter.new}
57
+ each do |row_with_number|
58
+ row_with_number[1..-1].each_with_index do |value,index|
59
+ vcs[index] << dump_value(value)
60
+ end
61
+ end
62
+ vcs.each_with_index{|vc,index| puts "#{@headers[index]}:#{vc}"}
63
+ end
64
+
65
+ def dump_value(v)
66
+ case v
67
+ when String
68
+ v == '' ? "String(empty)" : "String"
69
+ else
70
+ v.class
71
+ end
72
+ end
73
+
74
+ end
75
+
76
+ end
data/lib/rxls/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Rxls
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
Binary file
data/spec/rxls_spec.rb ADDED
@@ -0,0 +1,26 @@
1
+ require 'spec_helper'
2
+ module Rxls
3
+ describe Base do
4
+
5
+ before(:all) do
6
+ @b = Base.new(:x)
7
+ @w = @b.worksheet 1,'a c'
8
+ end
9
+
10
+ it 'converts exel colum names to array indexes' do
11
+ @w.to_row_numbers('a').should == [0]
12
+ @w.to_row_numbers('a b').should == [0,1]
13
+ @w.to_row_numbers('aa').should == [26]
14
+ end
15
+
16
+ it 'iterates over worksheet' do
17
+ @w.map{ |row,number,nachname| nachname}.should == ["Behresn", "Schnell"]
18
+ end
19
+
20
+ after(:all) do
21
+ @b.quit
22
+ end
23
+
24
+ end
25
+
26
+ end
@@ -0,0 +1 @@
1
+ require 'rxls'
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 0
8
- - 1
9
- version: 0.0.1
8
+ - 2
9
+ version: 0.0.2
10
10
  platform: ruby
11
11
  authors:
12
12
  - Frank Behrens
@@ -32,8 +32,12 @@ files:
32
32
  - Gemfile
33
33
  - Rakefile
34
34
  - lib/rxls.rb
35
+ - lib/rxls/base.rb
35
36
  - lib/rxls/version.rb
36
37
  - rxls.gemspec
38
+ - spec/fixtures/x.xls
39
+ - spec/rxls_spec.rb
40
+ - spec/spec_helper.rb
37
41
  has_rdoc: true
38
42
  homepage: ""
39
43
  licenses: []