jruby-poi 0.9.0 → 1.0.0

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.
Files changed (45) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +15 -0
  3. data/.travis.yml +18 -4
  4. data/Gemfile +3 -6
  5. data/Gemfile.lock +20 -27
  6. data/README.markdown +49 -47
  7. data/Rakefile +20 -27
  8. data/jruby-poi.gemspec +7 -70
  9. data/lib/poi-jars/lib/commons-codec-1.10.jar +0 -0
  10. data/lib/poi-jars/lib/commons-collections4-4.1.jar +0 -0
  11. data/lib/poi-jars/lib/commons-logging-1.2.jar +0 -0
  12. data/lib/poi-jars/lib/junit-4.12.jar +0 -0
  13. data/lib/poi-jars/lib/log4j-1.2.17.jar +0 -0
  14. data/lib/poi-jars/ooxml-lib/curvesapi-1.04.jar +0 -0
  15. data/lib/{ooxml-lib/xmlbeans-2.3.0.jar → poi-jars/ooxml-lib/xmlbeans-2.6.0.jar} +0 -0
  16. data/lib/poi-jars/poi-3.15.jar +0 -0
  17. data/lib/poi-jars/poi-examples-3.15.jar +0 -0
  18. data/lib/poi-jars/poi-excelant-3.15.jar +0 -0
  19. data/lib/poi-jars/poi-ooxml-3.15.jar +0 -0
  20. data/lib/poi-jars/poi-ooxml-schemas-3.15.jar +0 -0
  21. data/lib/poi-jars/poi-scratchpad-3.15.jar +0 -0
  22. data/lib/poi.rb +13 -7
  23. data/lib/poi/version.rb +11 -0
  24. data/lib/poi/workbook/area.rb +20 -17
  25. data/lib/poi/workbook/cell.rb +28 -42
  26. data/lib/poi/workbook/row.rb +1 -1
  27. data/lib/poi/workbook/workbook.rb +3 -7
  28. data/lib/poi/workbook/worksheet.rb +2 -2
  29. data/spec/data/1904_window_dates.xls +0 -0
  30. data/spec/data/various_samples.xlsx +0 -0
  31. data/spec/facade_spec.rb +35 -35
  32. data/spec/spec_helper.rb +10 -0
  33. data/spec/support/matchers/cell_matcher.rb +3 -3
  34. data/spec/workbook_spec.rb +368 -385
  35. data/spec/writing_spec.rb +144 -144
  36. metadata +111 -121
  37. data/VERSION +0 -1
  38. data/lib/ooxml-lib/dom4j-1.6.1.jar +0 -0
  39. data/lib/ooxml-lib/stax-api-1.0.1.jar +0 -0
  40. data/lib/poi-3.8-20120326.jar +0 -0
  41. data/lib/poi-examples-3.8-20120326.jar +0 -0
  42. data/lib/poi-excelant-3.8-20120326.jar +0 -0
  43. data/lib/poi-ooxml-3.8-20120326.jar +0 -0
  44. data/lib/poi-ooxml-schemas-3.8-20120326.jar +0 -0
  45. data/lib/poi-scratchpad-3.8-20120326.jar +0 -0
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 50df8568c0c364eb968db03083b01b77777ae6be
4
+ data.tar.gz: 644e0ace7c040171ee7fcca280a9565bb7f99a6f
5
+ SHA512:
6
+ metadata.gz: 0cf0d99304082a784879209fb01bb223580a259fe9410ebbf6f9ca8bf178e633dc50a198b76ac64b9fab5d4cc77232b9f0c95ebdb97b990e912eafa40c316ad6
7
+ data.tar.gz: 3251d3d8f7f0a31c8dadd5b6dc309d0e0234ad6453f73868604fdde357c312ba241da7d34d93e220ca488d49858dfe68325ce375fb89bc60112e1f5ef170c226
@@ -0,0 +1,15 @@
1
+ .DS_Store
2
+ .project
3
+ .idea
4
+ nbproject
5
+ .*~
6
+ tmp
7
+ *.swp
8
+ TAGS
9
+ tags
10
+ pkg
11
+ .yardoc
12
+ documentation
13
+ coverage
14
+ .bundle
15
+ .tddium*
@@ -1,4 +1,18 @@
1
- language: ruby
2
- rvm:
3
- - jruby-18mode
4
- - jruby-19mode
1
+ language: ruby
2
+
3
+ os:
4
+ - linux
5
+ - osx
6
+
7
+ rvm:
8
+ - jruby-1.7.23
9
+ - jruby-9.1.5.0
10
+
11
+ script:
12
+ bundle exec rake spec
13
+
14
+ before_install:
15
+ - gem install bundler
16
+
17
+ cache:
18
+ - bundler
data/Gemfile CHANGED
@@ -1,9 +1,6 @@
1
1
  source "http://rubygems.org"
2
2
 
3
- # Add dependencies to develop your gem here.
4
- # Include everything needed to run rake, tests, features, etc.
5
- group :development do
6
- gem "rspec", ">= 2.11.0"
7
- gem "jeweler", ">= 1.8.4"
8
- gem "jruby-openssl"
3
+ group :test do
4
+ gem "rake", "> 10.0"
5
+ gem "rspec", "~> 3.0"
9
6
  end
@@ -1,35 +1,28 @@
1
1
  GEM
2
2
  remote: http://rubygems.org/
3
3
  specs:
4
- bouncy-castle-java (1.5.0146.1)
5
- diff-lcs (1.1.3)
6
- git (1.2.5)
7
- jeweler (1.8.4)
8
- bundler (~> 1.0)
9
- git (>= 1.2.5)
10
- rake
11
- rdoc
12
- jruby-openssl (0.7.7)
13
- bouncy-castle-java (>= 1.5.0146.1)
14
- json (1.7.3)
15
- json (1.7.3-java)
16
- rake (0.9.2.2)
17
- rdoc (3.12)
18
- json (~> 1.4)
19
- rspec (2.11.0)
20
- rspec-core (~> 2.11.0)
21
- rspec-expectations (~> 2.11.0)
22
- rspec-mocks (~> 2.11.0)
23
- rspec-core (2.11.1)
24
- rspec-expectations (2.11.1)
25
- diff-lcs (~> 1.1.3)
26
- rspec-mocks (2.11.1)
4
+ diff-lcs (1.2.5)
5
+ rake (10.1.0)
6
+ rspec (3.5.0)
7
+ rspec-core (~> 3.5.0)
8
+ rspec-expectations (~> 3.5.0)
9
+ rspec-mocks (~> 3.5.0)
10
+ rspec-core (3.5.4)
11
+ rspec-support (~> 3.5.0)
12
+ rspec-expectations (3.5.0)
13
+ diff-lcs (>= 1.2.0, < 2.0)
14
+ rspec-support (~> 3.5.0)
15
+ rspec-mocks (3.5.0)
16
+ diff-lcs (>= 1.2.0, < 2.0)
17
+ rspec-support (~> 3.5.0)
18
+ rspec-support (3.5.0)
27
19
 
28
20
  PLATFORMS
29
21
  java
30
- ruby
31
22
 
32
23
  DEPENDENCIES
33
- jeweler (>= 1.8.4)
34
- jruby-openssl
35
- rspec (>= 2.11.0)
24
+ rake (> 10.0)
25
+ rspec (~> 3.0)
26
+
27
+ BUNDLED WITH
28
+ 1.13.6
@@ -8,56 +8,58 @@ This little gem provides an alternative interface to the Apache POI java library
8
8
  INSTALL
9
9
  =======
10
10
 
11
- * gem install jruby-poi
11
+ ```
12
+ $ gem install jruby-poi
13
+ ```
12
14
 
13
15
  USAGE
14
16
  =====
15
- It's pretty simple really, create a POI::Workbook and access its sheets, rows, and cells. You can read from the spreadsheet, save it (as the filename with which you created or as a new spreadsheet via Workbook#save_as).
16
-
17
- require 'poi'
18
-
19
- # given an Excel spreadsheet whose first sheet (Sheet 1) has this data:
20
- # A B C D E
21
- # 1 4 A 2010-01-04
22
- # 2 3 B =DATE(YEAR($E$1), MONTH($E$1), A2)
23
- # 3 2 C =DATE(YEAR($E$1), MONTH($E$1), A3)
24
- # 4 1 D =DATE(YEAR($E$1), MONTH($E$1), A4)
25
-
26
- workbook = POI::Workbook.open('spreadsheet.xlsx')
27
- sheet = workbook.worksheets["Sheet 1"]
28
- rows = sheet.rows
29
-
30
- # get a cell's value -- returns the value as its proper type, evaluating formulas if need be
31
- rows[0][0].value # => 4.0
32
- rows[0][1].value # => nil
33
- rows[0][2].value # => 'A'
34
- rows[0][3].value # => nil
35
- rows[0][4].value # => 2010-01-04 as a Date instance
36
- rows[1][4].value # => 2010-01-03 as a Date instance
37
- rows[2][4].value # => 2010-01-02 as a Date instance
38
- rows[3][4].value # => 2010-01-01 as a Date instance
39
-
40
- # you can access a cell in array style as well... these snippets are all equivalent
41
- workbook.sheets[0][2][2] # => 'C'
42
- workbook[0][2][2] # => 'C'
43
- workbook.sheets['Sheet 1'][2][2] # => 'C'
44
- workbook['Sheet 1'][2][2] # => 'C'
45
-
46
- # you can access a cell in 3D cell format too
47
- workbook['Sheet 1!A1'] # => 4.0
48
-
49
- # you can even refer to ranges of cells
50
- workbook['Sheet 1!A1:A3'] # => [4.0, 3.0, 2.0]
51
-
52
- # if cells E1 - E4 were a named range, you could refer to those cells by its name
53
- # eg. if the cells were named "dates"...
54
- workbook['dates'] # => dates from E1 - E4
55
-
56
- # to get the Cell instance, instead of its value, just use the Workbook#cell method
57
- workbook.cell('dates') # => cells that contain dates from E1 to E4
58
- workbook['Sheet 1!A1:A3'] # => cells that contain 4.0, 3.0, and 2.0
59
-
60
- There's a formatted version of this code [here](http://gist.github.com/557607), but Github doesn't allow embedding script tags in Markdown. Go figure!
17
+ It's pretty simple really, create an instance of `POI::Workbook` and access its sheets, rows, and cells. You can read from the spreadsheet, save it (as the filename with which you created or as a new spreadsheet via `Workbook#save_as`).
18
+
19
+ ```ruby
20
+ require 'poi'
21
+
22
+ # given an Excel spreadsheet whose first sheet (Sheet 1) has this data:
23
+ # A B C D E
24
+ # 1 4 A 2010-01-04
25
+ # 2 3 B =DATE(YEAR($E$1), MONTH($E$1), A2)
26
+ # 3 2 C =DATE(YEAR($E$1), MONTH($E$1), A3)
27
+ # 4 1 D =DATE(YEAR($E$1), MONTH($E$1), A4)
28
+
29
+ workbook = POI::Workbook.open('spreadsheet.xlsx')
30
+ sheet = workbook.worksheets["Sheet 1"]
31
+ rows = sheet.rows
32
+
33
+ # get a cell's value -- returns the value as its proper type, evaluating formulas if need be
34
+ rows[0][0].value # => 4.0
35
+ rows[0][1].value # => nil
36
+ rows[0][2].value # => 'A'
37
+ rows[0][3].value # => nil
38
+ rows[0][4].value # => 2010-01-04 as a Date instance
39
+ rows[1][4].value # => 2010-01-03 as a Date instance
40
+ rows[2][4].value # => 2010-01-02 as a Date instance
41
+ rows[3][4].value # => 2010-01-01 as a Date instance
42
+
43
+ # you can access a cell in array style as well... these snippets are all equivalent
44
+ workbook.sheets[0][2][2] # => 'C'
45
+ workbook[0][2][2] # => 'C'
46
+ workbook.sheets['Sheet 1'][2][2] # => 'C'
47
+ workbook['Sheet 1'][2][2] # => 'C'
48
+
49
+ # you can access a cell in 3D cell format too
50
+ workbook['Sheet 1!A1'] # => 4.0
51
+
52
+ # you can even refer to ranges of cells
53
+ workbook['Sheet 1!A1:A3'] # => [4.0, 3.0, 2.0]
54
+
55
+ # if cells E1 - E4 were a named range, you could refer to those cells by its name
56
+ # eg. if the cells were named "dates"...
57
+ workbook['dates'] # => dates from E1 - E4
58
+
59
+ # to get the Cell instance, instead of its value, just use the Workbook#cell method
60
+ workbook.cell('dates') # => cells that contain dates from E1 to E4
61
+ workbook['Sheet 1!A1:A3'] # => cells that contain 4.0, 3.0, and 2.0
62
+ ```
61
63
 
62
64
  TODO
63
65
  ====
data/Rakefile CHANGED
@@ -1,35 +1,28 @@
1
- require 'rubygems'
2
-
3
- require 'bundler'
4
- begin
5
- Bundler.setup(:default, :development)
6
- rescue Bundler::BundlerError => e
7
- $stderr.puts e.message
8
- $stderr.puts "Run `bundle install` to install missing gems"
9
- exit e.status_code
10
- end
11
-
1
+ require 'bundler/setup'
12
2
  require 'rake'
13
- require 'jeweler'
14
- require 'rspec/core'
3
+ require 'rake/clean'
15
4
  require 'rspec/core/rake_task'
5
+ require_relative './lib/poi/version'
6
+
7
+ NAME = 'jruby-poi'
8
+ VERSION = POI.version
16
9
 
17
- # gemify
18
- Jeweler::Tasks.new do |gemspec|
19
- gemspec.name = "jruby-poi"
20
- gemspec.summary = "Apache POI class library for jruby"
21
- gemspec.description = "A rubyesque library for manipulating spreadsheets and other document types for jruby, using Apache POI."
22
- gemspec.license = "Apache"
23
- gemspec.email = ["sdeming@makefile.com", "jacaetevha@gmail.com"]
24
- gemspec.homepage = "http://github.com/kameeoze/jruby-poi"
25
- gemspec.authors = ["Scott Deming", "Jason Rogers"]
10
+ desc "Build gem"
11
+ task :package=>[:clean] do |p|
12
+ sh %{#{FileUtils::RUBY} -S gem build jruby-poi.gemspec}
26
13
  end
27
- Jeweler::RubygemsDotOrgTasks.new
28
14
 
29
- # test
30
- RSpec::Core::RakeTask.new(:spec)
31
- RSpec::Core::RakeTask.new(:rcov) do |spec|
32
- spec.rcov = true
15
+ desc "Publish gem"
16
+ task :release=>[:package] do
17
+ sh %{#{FileUtils::RUBY} -S gem push ./#{NAME}-#{VERSION}.gem}
18
+ end
19
+
20
+ desc "Run all tests"
21
+ RSpec::Core::RakeTask.new('spec')
22
+
23
+ desc "Print version"
24
+ task :version do
25
+ puts VERSION
33
26
  end
34
27
 
35
28
  task :default => :spec
@@ -1,85 +1,22 @@
1
- # Generated by jeweler
2
- # DO NOT EDIT THIS FILE DIRECTLY
3
- # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
1
  # -*- encoding: utf-8 -*-
2
+ require File.expand_path('../lib/poi/version', __FILE__)
5
3
 
6
4
  Gem::Specification.new do |s|
7
5
  s.name = "jruby-poi"
8
- s.version = "0.9.0"
9
-
10
- s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
6
+ s.version = POI.version
11
7
  s.authors = ["Scott Deming", "Jason Rogers"]
12
- s.date = "2012-10-15"
8
+ s.date = "2016-11-04"
13
9
  s.description = "A rubyesque library for manipulating spreadsheets and other document types for jruby, using Apache POI."
14
10
  s.email = ["sdeming@makefile.com", "jacaetevha@gmail.com"]
15
- s.extra_rdoc_files = [
16
- "LICENSE",
17
- "README.markdown"
18
- ]
19
- s.files = [
20
- ".travis.yml",
21
- "Gemfile",
22
- "Gemfile.lock",
23
- "LICENSE",
24
- "NOTICE",
25
- "README.markdown",
26
- "Rakefile",
27
- "VERSION",
28
- "jruby-poi.gemspec",
29
- "lib/ooxml-lib/dom4j-1.6.1.jar",
30
- "lib/ooxml-lib/stax-api-1.0.1.jar",
31
- "lib/ooxml-lib/xmlbeans-2.3.0.jar",
32
- "lib/poi-3.8-20120326.jar",
33
- "lib/poi-examples-3.8-20120326.jar",
34
- "lib/poi-excelant-3.8-20120326.jar",
35
- "lib/poi-ooxml-3.8-20120326.jar",
36
- "lib/poi-ooxml-schemas-3.8-20120326.jar",
37
- "lib/poi-scratchpad-3.8-20120326.jar",
38
- "lib/poi.rb",
39
- "lib/poi/workbook.rb",
40
- "lib/poi/workbook/area.rb",
41
- "lib/poi/workbook/cell.rb",
42
- "lib/poi/workbook/named_range.rb",
43
- "lib/poi/workbook/row.rb",
44
- "lib/poi/workbook/workbook.rb",
45
- "lib/poi/workbook/worksheet.rb",
46
- "spec/data/simple_with_picture.ods",
47
- "spec/data/simple_with_picture.xls",
48
- "spec/data/spreadsheet.ods",
49
- "spec/data/timesheet.xlsx",
50
- "spec/data/various_samples.xlsx",
51
- "spec/facade_spec.rb",
52
- "spec/io_spec.rb",
53
- "spec/spec_helper.rb",
54
- "spec/support/java/jrubypoi/MockOutputStream.java",
55
- "spec/support/java/support.jar",
56
- "spec/support/matchers/cell_matcher.rb",
57
- "spec/workbook_spec.rb",
58
- "spec/writing_spec.rb",
59
- "spec_debug.sh"
60
- ]
11
+ s.extra_rdoc_files = [ "LICENSE", "README.markdown" ]
12
+ s.files = `git ls-files -z`.split("\0")
13
+ s.test_files = `git ls-files -z spec/`.split("\0")
61
14
  s.homepage = "http://github.com/kameeoze/jruby-poi"
62
15
  s.licenses = ["Apache"]
63
16
  s.require_paths = ["lib"]
64
17
  s.rubygems_version = "1.8.24"
65
18
  s.summary = "Apache POI class library for jruby"
66
19
 
67
- if s.respond_to? :specification_version then
68
- s.specification_version = 3
69
-
70
- if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
71
- s.add_development_dependency(%q<rspec>, [">= 2.11.0"])
72
- s.add_development_dependency(%q<jeweler>, [">= 1.8.4"])
73
- s.add_development_dependency(%q<jruby-openssl>, [">= 0"])
74
- else
75
- s.add_dependency(%q<rspec>, [">= 2.11.0"])
76
- s.add_dependency(%q<jeweler>, [">= 1.8.4"])
77
- s.add_dependency(%q<jruby-openssl>, [">= 0"])
78
- end
79
- else
80
- s.add_dependency(%q<rspec>, [">= 2.11.0"])
81
- s.add_dependency(%q<jeweler>, [">= 1.8.4"])
82
- s.add_dependency(%q<jruby-openssl>, [">= 0"])
83
- end
20
+ s.add_development_dependency('rspec', '~> 3.0')
84
21
  end
85
22
 
Binary file
data/lib/poi.rb CHANGED
@@ -1,14 +1,20 @@
1
1
  JRUBY_POI_LIB_PATH=File.expand_path(File.dirname(__FILE__))
2
2
 
3
+ require File.join(JRUBY_POI_LIB_PATH, 'poi', 'version')
4
+
3
5
  # Java
4
6
  require 'java'
5
- require File.join(JRUBY_POI_LIB_PATH, 'poi-3.8-20120326.jar')
6
- require File.join(JRUBY_POI_LIB_PATH, 'poi-ooxml-3.8-20120326.jar')
7
- require File.join(JRUBY_POI_LIB_PATH, 'poi-ooxml-schemas-3.8-20120326.jar')
8
- require File.join(JRUBY_POI_LIB_PATH, 'poi-scratchpad-3.8-20120326.jar')
9
- require File.join(JRUBY_POI_LIB_PATH, 'ooxml-lib', 'xmlbeans-2.3.0.jar')
10
- require File.join(JRUBY_POI_LIB_PATH, 'ooxml-lib', 'dom4j-1.6.1.jar')
11
- require File.join(JRUBY_POI_LIB_PATH, 'ooxml-lib', 'stax-api-1.0.1.jar')
7
+ require File.join(JRUBY_POI_LIB_PATH, 'poi-jars', 'lib', 'commons-collections4-4.1.jar')
8
+ require File.join(JRUBY_POI_LIB_PATH, 'poi-jars', 'poi-3.15.jar')
9
+ require File.join(JRUBY_POI_LIB_PATH, 'poi-jars', 'poi-ooxml-3.15.jar')
10
+ require File.join(JRUBY_POI_LIB_PATH, 'poi-jars', 'poi-ooxml-schemas-3.15.jar')
11
+ require File.join(JRUBY_POI_LIB_PATH, 'poi-jars', 'poi-scratchpad-3.15.jar')
12
+ require File.join(JRUBY_POI_LIB_PATH, 'poi-jars', 'ooxml-lib', 'xmlbeans-2.6.0.jar')
13
+ require File.join(JRUBY_POI_LIB_PATH, 'poi-jars', 'ooxml-lib', 'curvesapi-1.04.jar')
14
+
15
+ #commons-codec-1.10.jar commons-collections4-4.1.jar commons-logging-1.2.jar junit-4.12.jar log4j-1.2.17.jar
12
16
 
13
17
  # Ruby
18
+ require File.join(JRUBY_POI_LIB_PATH, 'poi', 'version')
14
19
  require File.join(JRUBY_POI_LIB_PATH, 'poi', 'workbook')
20
+ require 'date' # required for Date.parse
@@ -0,0 +1,11 @@
1
+ module POI
2
+ MAJOR = 1
3
+ MINOR = 0
4
+ PATCH_LEVEL = 0
5
+
6
+ VERSION = [MAJOR, MINOR, PATCH_LEVEL].join('.').freeze
7
+
8
+ def self.version
9
+ VERSION
10
+ end
11
+ end
@@ -1,15 +1,16 @@
1
1
  module POI
2
2
  class Area
3
- def initialize reference
3
+ def initialize reference, version
4
4
  @ref = reference
5
+ @version = version
5
6
  end
6
-
7
+
7
8
  def in workbook
8
9
  if single_cell_reference?
9
10
  ref = area.all_referenced_cells.first
10
11
  return [workbook.single_cell(ref)]
11
12
  end
12
-
13
+
13
14
  begin
14
15
  by_column = {}
15
16
  # refs = area.all_referenced_cells
@@ -20,7 +21,7 @@ module POI
20
21
  # first = workbook.worksheets[cell_ref.sheet_name].first_row
21
22
  # last = workbook.worksheets[cell_ref.sheet_name].last_row
22
23
  # next unless cell_ref.row >= first && cell_ref.row <= last
23
- #
24
+ #
24
25
  # # ref = POI::CELL_REF.new(c.format_as_string)
25
26
  # cell = workbook.single_cell cell_ref
26
27
  # (by_column[cell_ref.cell_ref_parts.collect.last] ||= []) << cell
@@ -32,16 +33,16 @@ module POI
32
33
  first = workbook.worksheets[cell_ref.sheet_name].first_row
33
34
  last = workbook.worksheets[cell_ref.sheet_name].last_row
34
35
  next unless cell_ref.row >= first && cell_ref.row <= last
35
-
36
+
36
37
  # ref = POI::CELL_REF.new(c.format_as_string)
37
38
  cell = workbook.single_cell cell_ref
38
39
  (by_column[cell_ref.cell_ref_parts.to_a.last] ||= []) << cell
39
40
  end
40
-
41
+
41
42
  by_column.each do |key, cells|
42
43
  by_column[key] = cells.compact
43
44
  end
44
-
45
+
45
46
  if by_column.length == 1
46
47
  by_column.values.flatten
47
48
  else
@@ -51,31 +52,33 @@ module POI
51
52
  []
52
53
  end
53
54
  end
54
-
55
+
55
56
  def single_cell_reference?
56
57
  area.single_cell? #@ref == getFirstCell.formatAsString rescue false
57
58
  end
58
-
59
+
59
60
  private
60
61
  def area
61
62
  @area ||= new_area_reference
62
63
  end
63
-
64
+
64
65
  def new_area_reference
65
66
  begin
66
- return POI::AREA_REF.new(@ref)
67
+ return column_reference
68
+ rescue => x
69
+ return POI::AREA_REF.new(@ref, @version)
67
70
  rescue
68
- # not a valid reference, so proceed through to see if it's a column-based reference
71
+ raise "could not determine area reference for #{@ref}: #{$!.message}"
69
72
  end
73
+ end
74
+
75
+ def column_reference
70
76
  sheet_parts = @ref.split('!')
71
77
  area_parts = sheet_parts.last.split(':')
72
78
  area_start = "#{sheet_parts.first}!#{area_parts.first}"
73
79
  area_end = area_parts.last
74
- begin
75
- POI::AREA_REF.getWholeColumn(area_start, area_end)
76
- rescue
77
- raise "could not determine area reference for #{@ref}: #{$!.message}"
78
- end
80
+
81
+ POI::AREA_REF.getWholeColumn(@version, area_start, area_end)
79
82
  end
80
83
  end
81
84
  end