roo 1.1.0 → 1.2.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.
@@ -104,14 +104,11 @@ class GenericSpreadsheet
104
104
 
105
105
  # returns the number of the last non-empty column
106
106
  def last_column(sheet=nil)
107
- # $log.debug("#{self.class.to_s}#last_column(#{sheet})")
108
107
  sheet = @default_sheet unless sheet
109
108
  read_cells(sheet) unless @cells_read[sheet]
110
109
  if @last_column[sheet]
111
- # $log.debug("last_column of sheet #{sheet} already set")
112
110
  return @last_column[sheet]
113
111
  end
114
- # $log.debug("last_column of sheet #{sheet} not yet set")
115
112
  impossible_value = 0
116
113
  result = impossible_value
117
114
  @cell[sheet].each_pair {|key,value|
@@ -325,16 +322,12 @@ class GenericSpreadsheet
325
322
  # Returns information of the spreadsheet document and all sheets within
326
323
  # this document.
327
324
  def info
328
- # $log.debug(self.class.to_s+"#info started")
329
325
  result = "File: #{File.basename(@filename)}\n"+
330
326
  "Number of sheets: #{sheets.size}\n"+
331
327
  "Sheets: #{sheets.map{|sheet| sheet+", "}.to_s[0..-3]}\n"
332
328
  n = 1
333
- # $log.debug(sheets.inspect)
334
329
  sheets.each {|sheet|
335
- # $log.debug("Info fuer Sheet=#{sheet}")
336
330
  self.default_sheet = sheet
337
- # $log.debug("nach default_sheet=")
338
331
  result << "Sheet " + n.to_s + ":\n"
339
332
  unless first_row
340
333
  result << " - empty -"
@@ -347,7 +340,6 @@ class GenericSpreadsheet
347
340
  result << "\n" if sheet != sheets.last
348
341
  n += 1
349
342
  }
350
- # $log.debug(self.class.to_s+"#info ended")
351
343
  result
352
344
  end
353
345
 
@@ -443,8 +435,8 @@ class GenericSpreadsheet
443
435
  File.join(@tmpdir, File.basename(uri))
444
436
  end
445
437
 
446
- # convert a number to something like this: 'AB'
447
- def GenericSpreadsheet.number_to_letter(n)
438
+ # convert a number to something like 'AB' (1 => 'A', 2 => 'B', ...)
439
+ def self.number_to_letter(n)
448
440
  letters=""
449
441
  while n > 0
450
442
  num = n%26
@@ -454,7 +446,7 @@ class GenericSpreadsheet
454
446
  letters
455
447
  end
456
448
 
457
- # convert letters like 'AB' to a number
449
+ # convert letters like 'AB' to a number ('A' => 1, 'B' => 2, ...)
458
450
  def self.letter_to_number(letters)
459
451
  result = 0
460
452
  while letters && letters.length > 0
@@ -515,7 +507,8 @@ class GenericSpreadsheet
515
507
  def write_csv_content(file=nil,sheet=nil)
516
508
  file = STDOUT unless file
517
509
  if first_row(sheet) # sheet is not empty
518
- first_row(sheet).upto(last_row(sheet)) do |row|
510
+ # first_row(sheet).upto(last_row(sheet)) do |row|
511
+ 1.upto(last_row(sheet)) do |row|
519
512
  1.upto(last_column(sheet)) do |col|
520
513
  file.print(",") if col > 1
521
514
  onecell = cell(row,col,sheet)
@@ -574,7 +567,8 @@ class GenericSpreadsheet
574
567
  str
575
568
  end
576
569
 
577
- def GenericSpreadsheet.integer_to_timestring(content)
570
+ # converts an integer value to a time string like '02:05:06'
571
+ def self.integer_to_timestring(content)
578
572
  h = (content/3600.0).floor
579
573
  content = content - h*3600
580
574
  m = (content/60.0).floor
@@ -1,6 +1,4 @@
1
- #require 'rubygems' #TODO:
2
1
  require 'gdata/spreadsheet'
3
- #require 'log4r'
4
2
 
5
3
  # overwrite some methods from the gdata-gem:
6
4
  module GData
@@ -76,15 +74,10 @@ XML
76
74
  end # module
77
75
 
78
76
  class Google < GenericSpreadsheet
79
- #include Log4r
80
77
 
81
78
  # Creates a new Google spreadsheet object.
82
79
  def initialize(spreadsheetkey,user=nil,password=nil)
83
80
  @filename = spreadsheetkey
84
- # $log = Logger.new("my_log")
85
- # $log.outputters = FileOutputter.new("f1", :filename => "roo.log")
86
-
87
- # $log.debug("created a new Google-object")
88
81
  @spreadsheetkey = spreadsheetkey
89
82
  @user = user
90
83
  @password = password
@@ -109,7 +102,7 @@ class Google < GenericSpreadsheet
109
102
  @gs.authenticate(user, password)
110
103
 
111
104
  #-- ----------------------------------------------------------------------
112
- #-- Behandlung von Berechtigungen hier noch einbauen ???
105
+ #-- TODO: Behandlung von Berechtigungen hier noch einbauen ???
113
106
  #-- ----------------------------------------------------------------------
114
107
 
115
108
  if self.sheets.size == 1
@@ -152,15 +145,7 @@ class Google < GenericSpreadsheet
152
145
  row,col = normalize(row,col)
153
146
 
154
147
  if celltype(row,col,sheet) == :date
155
- # $log.debug("splitte Datumsfeld auf (#{row},#{col}): #{ @cell[sheet]["#{row},#{col}"]}")
156
148
  yyyy,mm,dd = @cell[sheet]["#{row},#{col}"].split('-')
157
- # $log.debug(yyyy)
158
- # $log.debug(mm)
159
- # $log.debug(dd)
160
- #TODO:
161
- #if dd.to_i < 1 or dd.to_i >31 or mm.to_i < 1 or mm.to_i > 12 or yyyy.to_i < 1900 or yyyy.to_i > 3000
162
- # raise "Invalid date parameter: #{yyyy}, #{mm}, #{dd}"
163
- #end
164
149
  begin
165
150
  return Date.new(yyyy.to_i,mm.to_i,dd.to_i)
166
151
  rescue ArgumentError
@@ -198,7 +183,7 @@ class Google < GenericSpreadsheet
198
183
  if @formula[sheet]["#{row},#{col}"] == nil
199
184
  return nil
200
185
  else
201
- return @formula[sheet]["#{row},#{col}"] #TODO: ["oooc:".length..-1]
186
+ return @formula[sheet]["#{row},#{col}"]
202
187
  end
203
188
  end
204
189
 
@@ -287,6 +272,7 @@ class Google < GenericSpreadsheet
287
272
  rescue
288
273
  raise RangeError, "invalid sheet '"+sheet.to_s+"'"
289
274
  end
275
+ row,col = normalize(row,col)
290
276
  @gs.add_to_cell_roo(row,col,value,sheet_no)
291
277
  end
292
278
 
@@ -344,7 +330,6 @@ class Google < GenericSpreadsheet
344
330
  numericvalue = item['numericvalue']
345
331
  if value[0,1] == '='
346
332
  formula = value
347
- # $log.debug("formula: <#{formula}>")
348
333
  else
349
334
  formula = nil
350
335
  end
@@ -377,12 +362,7 @@ class Google < GenericSpreadsheet
377
362
  end
378
363
  @cell_type[sheet][key] = ty # Openoffice.oo_type_2_roo_type(vt)
379
364
  @formula[sheet] = {} unless @formula[sheet]
380
- # $log.debug("formula vor belegen @formula: <#{formula}>") if formula
381
365
  @formula[sheet][key] = formula if formula
382
- # $log.debug("@formula[#{sheet}][#{key}] = #{formula}") if formula
383
- # $log.debug("#{@formula[sheet][key]}") if formula
384
-
385
-
386
366
  }
387
367
  @cells_read[sheet] = true
388
368
  end
@@ -16,31 +16,20 @@ class Openoffice < GenericSpreadsheet
16
16
  @file_warning = file_warning
17
17
  super()
18
18
  @tmpdir = "oo_"+$$.to_s
19
+ @tmpdir = File.join(ENV['ROO_TMP'], @tmpdir) if ENV['ROO_TMP']
19
20
  unless File.exists?(@tmpdir)
20
21
  FileUtils::mkdir(@tmpdir)
21
22
  end
22
23
  filename = open_from_uri(filename) if filename[0,7] == "http://"
23
24
  filename = unzip(filename) if packed and packed == :zip
24
- file_type_check(filename,'.ods','an openoffice')
25
- # if File.extname(filename).downcase != ".ods"
26
- # case @file_warning
27
- # when :error
28
- # raise TypeError, "#{filename} is not an openoffice file"
29
- # when :warning
30
- # warn "are you sure, this is an openoffice file?"
31
- # when :ignore
32
- # # ignore
33
- # else
34
- # raise "#{@file_warning} illegal state of file_warning"
35
- # end
36
- # end
37
- #if create and ! File.exists?(filename)
38
- # self.create_openoffice(filename)
39
- #end
40
- @cells_read = Hash.new
41
- #TODO: @cells_read[:default] = false
42
- @filename = filename
43
25
  begin
26
+ file_type_check(filename,'.ods','an openoffice')
27
+ #if create and ! File.exists?(filename)
28
+ # self.create_openoffice(filename)
29
+ #end
30
+ @cells_read = Hash.new
31
+ #TODO: @cells_read[:default] = false
32
+ @filename = filename
44
33
  unless File.file?(@filename)
45
34
  raise IOError, "file #{@filename} does not exist"
46
35
  end
@@ -262,7 +251,7 @@ class Openoffice < GenericSpreadsheet
262
251
  sheet = @default_sheet unless sheet
263
252
  sheet_found = false
264
253
  raise ArgumentError, "Error: sheet '#{sheet||'nil'}' not valid" if @default_sheet == nil and sheet==nil
265
- raise RangeError unless self.sheets.include? sheet
254
+ raise RangeError unless self.sheets.include? sheet
266
255
  oo_document_count = 0
267
256
  @doc.each_element do |oo_document|
268
257
  # @officeversion = oo_document.attributes['version']
@@ -1,7 +1,7 @@
1
1
  module Roo #:nodoc:
2
2
  module VERSION #:nodoc:
3
3
  MAJOR = 1
4
- MINOR = 1
4
+ MINOR = 2
5
5
  TINY = 0
6
6
 
7
7
  STRING = [MAJOR, MINOR, TINY].join('.')
@@ -1,13 +1,19 @@
1
1
  require 'test/unit'
2
2
  require File.dirname(__FILE__) + '/../lib/roo'
3
3
 
4
- # helper method
5
- def after(d)
6
- yield if DateTime.now > d
7
- end
4
+ # helper method
5
+ def after(d)
6
+ yield if DateTime.now > d
7
+ end
8
8
 
9
- # helper method
10
- def before(d)
11
- yield if DateTime.now <= d
12
- end
9
+ # helper method
10
+ def before(d)
11
+ yield if DateTime.now <= d
12
+ end
13
13
 
14
+ # helper method
15
+ def local_only
16
+ if ENV["roo_local"] == "thomas-p" or true #TODO:
17
+ yield
18
+ end
19
+ end
@@ -1,6 +1,7 @@
1
- #damit keine falschen Vermutungen aufkommen: Ich habe religoes rein gar nichts
1
+ #damit keine falschen Vermutungen aufkommen: Ich habe religioes rein gar nichts
2
2
  # mit diesem Bibelbund zu tun, aber die hatten eine ziemlich grosse
3
- # Spreadsheet-Datei oeffentlich im Netz, die sich ganz gut zum Testen eignete.
3
+ # Spreadsheet-Datei mit ca. 3500 Zeilen oeffentlich im Netz, die sich ganz gut
4
+ # zum Testen eignete.
4
5
  #
5
6
  #--
6
7
  # these test cases were developed to run under Linux OS, some commands
@@ -11,13 +12,12 @@ require File.dirname(__FILE__) + '/test_helper.rb'
11
12
  #require 'soap/rpc/driver'
12
13
  require 'fileutils'
13
14
  require 'timeout'
15
+ require 'logger'
16
+
17
+ $log = Logger.new(File.join(ENV['HOME'],"roo.log"))
18
+ $log.level = Logger::WARN
19
+
14
20
 
15
- # helper method
16
- def local_only
17
- if ENV["roo_local"] == "thomas-p"
18
- yield
19
- end
20
- end
21
21
 
22
22
  DISPLAY_LOG = false
23
23
  DB_LOG = false
@@ -97,18 +97,25 @@ class File
97
97
  end
98
98
  end
99
99
 
100
+ # :nodoc
101
+ class Fixnum
102
+ def minutes
103
+ self * 60
104
+ end
105
+ end
106
+
100
107
  class TestRoo < Test::Unit::TestCase
101
108
 
102
109
  OPENOFFICE = true # do Openoffice-Spreadsheet Tests?
103
- EXCEL = true # do Excel Tests?
110
+ EXCEL = true # do Excel Tests?
104
111
  GOOGLE = false # do Google-Spreadsheet Tests?
105
112
  GNUMERIC_ODS = false # do gnumeric with ods files Tests?
106
113
  EXCELX = true # do Excel-X Tests? (.xlsx-files)
107
114
 
108
115
  OPENOFFICEWRITE = false # experimental: write access with OO-Documents
109
116
  ONLINE = false
110
- LONG_RUN = false
111
- GLOBAL_TIMEOUT = 24*60 # 2*12*60 # seconds
117
+ LONG_RUN = true
118
+ GLOBAL_TIMEOUT = 24.minutes #*60 # 2*12*60 # seconds
112
119
 
113
120
  def setup
114
121
  if DISPLAY_LOG
@@ -116,6 +123,10 @@ class TestRoo < Test::Unit::TestCase
116
123
  end
117
124
  end
118
125
 
126
+ def test_internal_minutes
127
+ assert_equal 42*60, 42.minutes
128
+ end
129
+
119
130
  def test_date
120
131
  assert Google.date?("21/11/1962")
121
132
  assert_equal Date.new(1962,11,21), Google.to_date("21/11/1962")
@@ -1217,29 +1228,14 @@ class TestRoo < Test::Unit::TestCase
1217
1228
  assert_equal 10, oo.cell('d',1)
1218
1229
  assert_equal 10, oo.cell('e',1)
1219
1230
  end
1220
- #if EXCEL
1221
- # # dieser Test ist fuer Excel sheets eigentlich nicht noetig,
1222
- # # da der Bug nur bei OO-Dokumenten auftrat
1223
- # oo = Excel.new(File.join("test","numbers1.xls"))
1224
- # oo.default_sheet = 4
1225
- # assert_equal Date.new(2007,06,16), oo.cell('a',1)
1226
- # assert_equal 10, oo.cell('b',1)
1227
- # assert_equal 10, oo.cell('c',1)
1228
- # assert_equal 10, oo.cell('d',1)
1229
- # assert_equal 10, oo.cell('e',1)
1230
- #end
1231
- #if GOOGLE
1232
- # # dieser Test ist fuer Google sheets eigentlich nicht noetig,
1233
- # # da der Bug nur bei OO-Dokumenten auftrat
1234
- # oo = Google.new(key_of("numbers1"))
1235
- # #oo.sheetlist # TODO: refactor me!
1236
- # oo.default_sheet = "Sheet4"
1237
- # assert_equal Date.new(2007,06,16), oo.cell('a',1)
1238
- # assert_equal 10, oo.cell('b',1)
1239
- # assert_equal 10, oo.cell('c',1)
1240
- # assert_equal 10, oo.cell('d',1)
1241
- # assert_equal 10, oo.cell('e',1)
1242
- #end
1231
+ if EXCEL
1232
+ # dieser Test ist fuer Excel sheets nicht noetig,
1233
+ # da der Bug nur bei OO-Dokumenten auftrat
1234
+ end
1235
+ if GOOGLE
1236
+ # dieser Test ist fuer Google sheets nicht noetig,
1237
+ # da der Bug nur bei OO-Dokumenten auftrat
1238
+ end
1243
1239
  end
1244
1240
 
1245
1241
  def test_bug_italo_ve
@@ -1549,7 +1545,7 @@ class TestRoo < Test::Unit::TestCase
1549
1545
  assert_equal 6, oo.cell('A',6)
1550
1546
  assert_equal 21, oo.cell('A',7)
1551
1547
  assert_equal :formula, oo.celltype('A',7)
1552
- after Date.new(2999,7,30) do
1548
+ after Date.new(9999,12,31) do
1553
1549
  #steht nicht in Datei, oder?
1554
1550
  #nein, diesen Bezug habe ich nur in der Openoffice-Datei
1555
1551
  assert_equal "=[Sheet2.A1]", oo.formula('C',7)
@@ -2128,20 +2124,22 @@ class TestRoo < Test::Unit::TestCase
2128
2124
  end # def to_csv
2129
2125
 
2130
2126
  def test_huge_document_to_csv_excelx
2131
- if LONG_RUN
2132
- if EXCELX
2133
- assert_nothing_raised(Timeout::Error) {
2134
- Timeout::timeout(GLOBAL_TIMEOUT) do |timeout_length|
2135
- File.delete_if_exist("/tmp/Bibelbund.csv")
2136
- oo = Excelx.new(File.join("test","Bibelbund.xlsx"))
2137
- oo.default_sheet = oo.sheets.first
2138
- assert oo.to_csv("/tmp/Bibelbund.csv")
2139
- assert File.exists?("/tmp/Bibelbund.csv")
2140
- assert_equal "", `diff test/Bibelbund.csv /tmp/Bibelbund.csv`
2141
- end
2142
- }
2143
- end
2144
- end # LONG_RUN
2127
+ after Date.new(2008,8,27) do
2128
+ if LONG_RUN
2129
+ if EXCELX
2130
+ assert_nothing_raised(Timeout::Error) {
2131
+ Timeout::timeout(GLOBAL_TIMEOUT) do |timeout_length|
2132
+ File.delete_if_exist("/tmp/Bibelbund.csv")
2133
+ oo = Excelx.new(File.join("test","Bibelbund.xlsx"))
2134
+ oo.default_sheet = oo.sheets.first
2135
+ assert oo.to_csv("/tmp/Bibelbund.csv")
2136
+ assert File.exists?("/tmp/Bibelbund.csv")
2137
+ assert_equal "", `diff test/Bibelbund.csv /tmp/Bibelbund.csv`
2138
+ end
2139
+ }
2140
+ end
2141
+ end # LONG_RUN
2142
+ end
2145
2143
  end
2146
2144
 
2147
2145
  def test_huge_document_to_csv_google
@@ -2595,11 +2593,11 @@ class TestRoo < Test::Unit::TestCase
2595
2593
  oo.default_sheet = oo.sheets.first
2596
2594
  rec = oo.find 20
2597
2595
  assert rec
2598
- assert_equal "Brief aus dem Sekretariat", rec[0]
2596
+ assert_equal "Brief aus dem Sekretariat", rec[0]['TITEL']
2599
2597
 
2600
2598
  rec = oo.find 22
2601
2599
  assert rec
2602
- assert_equal "Brief aus dem Skretariat. Tagung in Amberg/Opf.",rec[0]
2600
+ assert_equal "Brief aus dem Skretariat. Tagung in Amberg/Opf.",rec[0]['TITEL']
2603
2601
  end
2604
2602
  end
2605
2603
  end
@@ -2846,6 +2844,17 @@ class TestRoo < Test::Unit::TestCase
2846
2844
  end
2847
2845
  end
2848
2846
 
2847
+ #TODO: temporaerer Test
2848
+ def test_seiten_als_date
2849
+ oo = Excelx.new(File.join("test","Bibelbund.xlsx"))
2850
+ oo.default_sheet = oo.sheets.first
2851
+ assert_equal 'Bericht aus dem Sekretariat', oo.cell(13,1)
2852
+ assert_equal '1981-4', oo.cell(13,'D')
2853
+ assert_equal [:numeric_or_formula,"General"], oo.excelx_type(13,'E')
2854
+ assert_equal '428', oo.excelx_value(13,'E')
2855
+ assert_equal 428.0, oo.cell(13,'E')
2856
+ end
2857
+
2849
2858
  def test_find_by_conditions_excelx
2850
2859
  if LONG_RUN
2851
2860
  if EXCELX
@@ -3082,18 +3091,16 @@ class TestRoo < Test::Unit::TestCase
3082
3091
  end
3083
3092
 
3084
3093
  def test_column_huge_document_excelx
3085
- after Date.new(2008,7,29) do
3086
- if LONG_RUN
3087
- if EXCELX
3088
- assert_nothing_raised(Timeout::Error) {
3089
- Timeout::timeout(GLOBAL_TIMEOUT) do |timeout_length|
3090
- oo = Excelx.new(File.join('test','Bibelbund.xlsx'))
3091
- oo.default_sheet = oo.sheets.first
3092
- assert_equal 3735, oo.column('a').size
3093
- #assert_equal 499, oo.column('a').size
3094
- end
3095
- }
3096
- end
3094
+ if LONG_RUN
3095
+ if EXCELX
3096
+ assert_nothing_raised(Timeout::Error) {
3097
+ Timeout::timeout(GLOBAL_TIMEOUT) do |timeout_length|
3098
+ oo = Excelx.new(File.join('test','Bibelbund.xlsx'))
3099
+ oo.default_sheet = oo.sheets.first
3100
+ assert_equal 3735, oo.column('a').size
3101
+ #assert_equal 499, oo.column('a').size
3102
+ end
3103
+ }
3097
3104
  end
3098
3105
  end
3099
3106
  end
@@ -3146,32 +3153,35 @@ class TestRoo < Test::Unit::TestCase
3146
3153
 
3147
3154
  def test_simple_spreadsheet_find_by_condition_excelx
3148
3155
  if EXCELX
3149
- after Date.new(2008,7,28)+10 do
3150
- # die dezimalen Zeiten bekomme ich seltsamerweise als Date
3151
- oo = Excelx.new(File.join("test","simple_spreadsheet.xlsx"))
3152
- oo.default_sheet = oo.sheets.first
3153
- oo.header_line = 3
3154
- erg = oo.find(:all, :conditions => {'Comment' => 'Task 1'})
3155
- p erg
3156
- #
3157
- #
3158
-
3159
- expected = { "Start time"=>10.75,
3160
- "Pause"=>0.0,
3161
- "Sum" => 1.75,
3162
- "End time" => 12.5,
3163
- "Pause" => 0.0,
3164
- "Sum"=> 1.75,
3165
- "Comment" => "Task 1"}
3166
- assert_equal expected, erg[1]
3167
- # hier bekomme ich den celltype :time zurueck
3168
- assert_equal Date.new(2007,05,07), erg[1]['Date']
3169
- assert_equal 10.75 , erg[1]['Start time']
3170
- assert_equal 12.50 , erg[1]['End time']
3171
- assert_equal 0 , erg[1]['Pause']
3172
- assert_equal 1.75 , erg[1]['Sum']
3173
- assert_equal "Task 1" , erg[1]['Comment']
3174
- end
3156
+ # die dezimalen Seiten bekomme ich seltsamerweise als Date
3157
+ oo = Excelx.new(File.join("test","simple_spreadsheet.xlsx"))
3158
+ oo.default_sheet = oo.sheets.first
3159
+ oo.header_line = 3
3160
+ erg = oo.find(:all, :conditions => {'Comment' => 'Task 1'})
3161
+ #expected = { "Start time"=>10.75,
3162
+ # "Pause"=>0.0,
3163
+ # "Sum" => 1.75,
3164
+ # "End time" => 12.5,
3165
+ # "Pause" => 0.0,
3166
+ # "Sum"=> 1.75,
3167
+ # "Comment" => "Task 1",
3168
+ # "Date" => Date.new(2007,5,7)}
3169
+ assert_equal Date.new(2007,5,7), erg[1]['Date']
3170
+ assert_equal 10.75,erg[1]['Start time']
3171
+ assert_equal 12.5, erg[1]['End time']
3172
+ assert_equal 0.0, erg[1]['Pause']
3173
+ assert_equal 1.75, erg[1]['Sum']
3174
+ assert_equal 'Task 1', erg[1]['Comment']
3175
+
3176
+ #assert_equal expected, erg[1], erg[1]
3177
+ # hier bekomme ich den celltype :time zurueck
3178
+ # jetzt ist alles OK
3179
+ assert_equal Date.new(2007,05,07), erg[1]['Date']
3180
+ assert_equal 10.75 , erg[1]['Start time']
3181
+ assert_equal 12.50 , erg[1]['End time']
3182
+ assert_equal 0 , erg[1]['Pause']
3183
+ assert_equal 1.75 , erg[1]['Sum']
3184
+ assert_equal "Task 1" , erg[1]['Comment']
3175
3185
  end
3176
3186
  end
3177
3187
 
@@ -3533,13 +3543,6 @@ Sheet 3:
3533
3543
  end
3534
3544
  end # false
3535
3545
 
3536
- # def teardown
3537
- # puts "Options:"
3538
- # puts "OPENOFFICE = #{OPENOFFICE}"
3539
- # puts "EXCEL = #{EXCEL}"
3540
- # puts "GOOGLE = #{GOOGLE}"
3541
- # end
3542
-
3543
3546
  def test_bug_time_nil_openoffice
3544
3547
  if OPENOFFICE
3545
3548
  oo = Openoffice.new(File.join("test","time-test.ods"))
@@ -3572,13 +3575,16 @@ Sheet 3:
3572
3575
  if EXCELX
3573
3576
  oo = Excelx.new(File.join("test","time-test.xlsx"))
3574
3577
  oo.default_sheet = oo.sheets.first
3575
- assert_equal 12*3600+13*60+14, oo.cell('B',1) # 12:13:14 (secs since midnight)
3578
+ assert_equal [:numeric_or_formula, "hh:mm:ss"],oo.excelx_type('b',1)
3579
+ assert_in_delta 0.50918981481481485, oo.excelx_value('b', 1), 0.000001
3576
3580
  assert_equal :time, oo.celltype('B',1)
3577
- assert_equal 15*3600+16*60, oo.cell('C',1) # 15:16 (secs since midnight)
3581
+ assert_equal 12*3600+13*60+14, oo.cell('B',1) # 12:13:14 (secs since midnight)
3582
+
3578
3583
  assert_equal :time, oo.celltype('C',1)
3579
-
3580
- assert_equal 23*3600, oo.cell('D',1) # 23:00 (secs since midnight)
3584
+ assert_equal 15*3600+16*60, oo.cell('C',1) # 15:16 (secs since midnight)
3585
+
3581
3586
  assert_equal :time, oo.celltype('D',1)
3587
+ assert_equal 23*3600, oo.cell('D',1) # 23:00 (secs since midnight)
3582
3588
  end
3583
3589
  end
3584
3590
 
@@ -3686,51 +3692,45 @@ Sheet 3:
3686
3692
 
3687
3693
  def test_no_remaining_tmp_files_openoffice
3688
3694
  if OPENOFFICE
3689
- after Date.new(2008,7,3) do
3690
- assert_raise(Zip::ZipError) { #TODO: besseres Fehlerkriterium bei
3691
- # oo = Openoffice.new(File.join("test","no_spreadsheet_file.txt"))
3692
- # es soll absichtlich ein Abbruch provoziert werden, deshalb :ignore
3693
- oo = Openoffice.new(File.join("test","no_spreadsheet_file.txt"),
3694
- false,
3695
- :ignore)
3696
- }
3697
- a=Dir.glob("oo_*")
3698
- assert_equal [], a
3699
- end
3695
+ assert_raise(Zip::ZipError) { #TODO: besseres Fehlerkriterium bei
3696
+ # oo = Openoffice.new(File.join("test","no_spreadsheet_file.txt"))
3697
+ # es soll absichtlich ein Abbruch provoziert werden, deshalb :ignore
3698
+ oo = Openoffice.new(File.join("test","no_spreadsheet_file.txt"),
3699
+ false,
3700
+ :ignore)
3701
+ }
3702
+ a=Dir.glob("oo_*")
3703
+ assert_equal [], a
3700
3704
  end
3701
3705
  end
3702
3706
 
3703
3707
  def test_no_remaining_tmp_files_excel
3704
3708
  if EXCEL
3705
- after Date.new(2008,7,2) do
3706
- assert_raise(OLE::UnknownFormatError) {
3707
- # oo = Excel.new(File.join("test","no_spreadsheet_file.txt"))
3708
- # es soll absichtlich ein Abbruch provoziert werden, deshalb :ignore
3709
- oo = Excel.new(File.join("test","no_spreadsheet_file.txt"),
3710
- false,
3711
- :ignore)
3712
- }
3713
- a=Dir.glob("oo_*")
3714
- assert_equal [], a
3715
- end
3709
+ assert_raise(OLE::UnknownFormatError) {
3710
+ # oo = Excel.new(File.join("test","no_spreadsheet_file.txt"))
3711
+ # es soll absichtlich ein Abbruch provoziert werden, deshalb :ignore
3712
+ oo = Excel.new(File.join("test","no_spreadsheet_file.txt"),
3713
+ false,
3714
+ :ignore)
3715
+ }
3716
+ a=Dir.glob("oo_*")
3717
+ assert_equal [], a
3716
3718
  end
3717
3719
  end
3718
3720
 
3719
3721
  def test_no_remaining_tmp_files_excelx
3720
3722
  if EXCELX
3721
- after Date.new(2008,7,3) do
3722
- assert_raise(Zip::ZipError) { #TODO: besseres Fehlerkriterium bei
3723
-
3724
- # oo = Excelx.new(File.join("test","no_spreadsheet_file.txt"))
3725
- # es soll absichtlich ein Abbruch provoziert werden, deshalb :ignore
3726
- oo = Excelx.new(File.join("test","no_spreadsheet_file.txt"),
3727
- false,
3728
- :ignore)
3723
+ assert_raise(Zip::ZipError) { #TODO: besseres Fehlerkriterium bei
3724
+
3725
+ # oo = Excelx.new(File.join("test","no_spreadsheet_file.txt"))
3726
+ # es soll absichtlich ein Abbruch provoziert werden, deshalb :ignore
3727
+ oo = Excelx.new(File.join("test","no_spreadsheet_file.txt"),
3728
+ false,
3729
+ :ignore)
3729
3730
 
3730
- }
3731
- a=Dir.glob("oo_*")
3732
- assert_equal [], a
3733
- end
3731
+ }
3732
+ a=Dir.glob("oo_*")
3733
+ assert_equal [], a
3734
3734
  end
3735
3735
  end
3736
3736
 
@@ -3838,8 +3838,8 @@ Sheet 3:
3838
3838
  end
3839
3839
 
3840
3840
  def test_bug_c2
3841
- local_only do
3842
- after Date.new(2008,7,26)+10 do
3841
+ after Date.new(2008,8,25) do
3842
+ local_only do
3843
3843
  expected = ['Supermodel X','T6','Shaun White','Jeremy','Custom',
3844
3844
  'Warhol','Twin','Malolo','Supermodel','Air','Elite',
3845
3845
  'King','Dominant','Dominant Slick','Blunt','Clash',
@@ -3862,27 +3862,27 @@ Sheet 3:
3862
3862
  end
3863
3863
 
3864
3864
  def test_bug_c2_parseexcel
3865
- local_only do
3866
- #-- this is OK
3867
- @workbook = Spreadsheet::ParseExcel.parse(File.join('test',"problem.xls"))
3868
- worksheet = @workbook.worksheet(11)
3869
- skip = 0
3870
- line = 1
3871
- row = 2
3872
- col = 3
3873
- worksheet.each(skip) { |row_par|
3874
- if line == row
3875
- if row_par == nil
3876
- raise "nil"
3865
+ after Date.new(2008,9,4) do
3866
+ local_only do
3867
+ #-- this is OK
3868
+ @workbook = Spreadsheet::ParseExcel.parse(File.join('test',"problem.xls"))
3869
+ worksheet = @workbook.worksheet(11)
3870
+ skip = 0
3871
+ line = 1
3872
+ row = 2
3873
+ col = 3
3874
+ worksheet.each(skip) { |row_par|
3875
+ if line == row
3876
+ if row_par == nil
3877
+ raise "nil"
3878
+ end
3879
+ cell = row_par.at(col-1)
3880
+ assert cell, "cell should not be nil"
3881
+ assert_equal "Air", cell.to_s('utf-8')
3877
3882
  end
3878
- cell = row_par.at(col-1)
3879
- assert cell, "cell should not be nil"
3880
- assert_equal "Air", cell.to_s('utf-8')
3881
- end
3882
- line += 1
3883
- }
3884
- #-- worksheet 12 does not work
3885
- after Date.new(2008,7,23)+10 do
3883
+ line += 1
3884
+ }
3885
+ #-- worksheet 12 does not work
3886
3886
  @workbook = Spreadsheet::ParseExcel.parse(File.join('test',"problem.xls"))
3887
3887
  worksheet = @workbook.worksheet(12)
3888
3888
  skip = 0
@@ -3938,20 +3938,62 @@ Sheet 3:
3938
3938
  end
3939
3939
 
3940
3940
  def test_compare_csv_excelx_excel
3941
- after Date.new(2008,7,30)+10 do
3942
- s1 = Excel.new(File.join("test","problem.xls"))
3943
- s2 = Excelx.new(File.join("test","problem.xlsx"))
3944
- s1.sheets.each {|sh| #TODO:
3945
- s1.default_sheet = sh
3946
- s2.default_sheet = sh
3947
- File.delete_if_exist("/tmp/problem.csv")
3948
- File.delete_if_exist("/tmp/problemx.csv")
3949
- assert s1.to_csv("/tmp/problem.csv")
3950
- assert s2.to_csv("/tmp/problemx.csv")
3951
- assert File.exists?("/tmp/problem.csv")
3952
- assert File.exists?("/tmp/problemx.csv")
3953
- assert_equal "", `diff /tmp/problem.csv /tmp/problemx.csv`, "Unterschied in Sheet #{sh}"
3954
- }
3941
+ after Date.new(2008,9,5) do
3942
+ # parseexcel bug
3943
+ local_only do
3944
+ s1 = Excel.new(File.join("test","problem.xls"))
3945
+ s2 = Excelx.new(File.join("test","problem.xlsx"))
3946
+ s1.sheets.each {|sh| #TODO:
3947
+ s1.default_sheet = sh
3948
+ s2.default_sheet = sh
3949
+ File.delete_if_exist("/tmp/problem.csv")
3950
+ File.delete_if_exist("/tmp/problemx.csv")
3951
+ assert s1.to_csv("/tmp/problem.csv")
3952
+ assert s2.to_csv("/tmp/problemx.csv")
3953
+ assert File.exists?("/tmp/problem.csv")
3954
+ assert File.exists?("/tmp/problemx.csv")
3955
+ assert_equal "", `diff /tmp/problem.csv /tmp/problemx.csv`, "Unterschied in Sheet #{sh} #{s1.sheets.index(sh)}"
3956
+ }
3957
+ end
3958
+ end
3959
+ end
3960
+
3961
+ def test_problemx_csv_imported
3962
+ after Date.new(2008,8,26) do
3963
+ if EXCEL
3964
+ local_only do
3965
+ # wieder eingelesene CSV-Datei aus obigem Test
3966
+ # muss identisch mit problem.xls sein
3967
+ # Importieren aus csv-Datei muss manuell gemacht werden
3968
+ ex = Excel.new(File.join("test","problem.xls"))
3969
+ cs = Excel.new(File.join("test","problemx_csv_imported.xls"))
3970
+ # nur das erste sheet betrachten
3971
+ ex.default_sheet = ex.sheets.first
3972
+ cs.default_sheet = cs.sheets.first
3973
+ ex.first_row.upto(ex.last_row) do |row|
3974
+ ex.first_column.upto(ex.last_column) do |col|
3975
+ assert_equal ex.cell(row,col), cs.cell(row,col), "cell #{row}/#{col} does not match '#{ex.cell(row,col)}' '#{cs.cell(row,col)}'"
3976
+ assert_equal ex.celltype(row,col), cs.celltype(row,col), "celltype #{row}/#{col} does not match"
3977
+ assert_equal ex.empty?(row,col), cs.empty?(row,col), "empty? #{row}/#{col} does not match"
3978
+ if defined? excel_supports_formulas
3979
+ assert_equal ex.formula?(row,col), cs.formula?(row,col), "formula? #{row}/#{col} does not match"
3980
+ assert_equal ex.formula(row,col), cs.formula(row,col), "formula #{row}/#{col} does not match"
3981
+ end
3982
+ end
3983
+ end
3984
+ cs.first_row.upto(cs.last_row) do |row|
3985
+ cs.first_column.upto(cs.last_column) do |col|
3986
+ assert_equal ex.cell(row,col), cs.cell(row,col), "cell #{row}/#{col} does not match '#{ex.cell(row,col)}' '#{cs.cell(row,col)}'"
3987
+ assert_equal ex.celltype(row,col), cs.celltype(row,col), "celltype #{row}/#{col} does not match"
3988
+ assert_equal ex.empty?(row,col), cs.empty?(row,col), "empty? #{row}/#{col} does not match"
3989
+ if defined? excel_supports_formulas
3990
+ assert_equal ex.formula?(row,col), cs.formula?(row,col), "formula? #{row}/#{col} does not match"
3991
+ assert_equal ex.formula(row,col), cs.formula(row,col), "formula #{row}/#{col} does not match"
3992
+ end
3993
+ end
3994
+ end
3995
+ end
3996
+ end
3955
3997
  end
3956
3998
  end
3957
3999
 
@@ -3959,14 +4001,17 @@ Sheet 3:
3959
4001
  if OPENOFFICE
3960
4002
  assert_raises(TypeError) { oo = Openoffice.new(File.join("test","numbers1.xls")) }
3961
4003
  assert_raises(TypeError) { oo = Openoffice.new(File.join("test","numbers1.xlsx")) }
4004
+ assert_equal [], Dir.glob("oo_*")
3962
4005
  end
3963
4006
  if EXCEL
3964
4007
  assert_raises(TypeError) { oo = Excel.new(File.join("test","numbers1.ods")) }
3965
4008
  assert_raises(TypeError) { oo = Excel.new(File.join("test","numbers1.xlsx")) }
4009
+ assert_equal [], Dir.glob("oo_*")
3966
4010
  end
3967
4011
  if EXCELX
3968
4012
  assert_raises(TypeError) { oo = Excelx.new(File.join("test","numbers1.ods")) }
3969
4013
  assert_raises(TypeError) { oo = Excelx.new(File.join("test","numbers1.xls")) }
4014
+ assert_equal [], Dir.glob("oo_*")
3970
4015
  end
3971
4016
  end
3972
4017
 
@@ -3974,53 +4019,55 @@ Sheet 3:
3974
4019
  if OPENOFFICE
3975
4020
  assert_raises(TypeError) { oo = Openoffice.new(File.join("test","numbers1.xls"),false,:error) }
3976
4021
  assert_raises(TypeError) { oo = Openoffice.new(File.join("test","numbers1.xlsx"),false,:error) }
4022
+ assert_equal [], Dir.glob("oo_*")
3977
4023
  end
3978
4024
  if EXCEL
3979
4025
  assert_raises(TypeError) { oo = Excel.new(File.join("test","numbers1.ods"),false,:error) }
3980
4026
  assert_raises(TypeError) { oo = Excel.new(File.join("test","numbers1.xlsx"),false,:error) }
4027
+ assert_equal [], Dir.glob("oo_*")
3981
4028
  end
3982
4029
  if EXCELX
3983
4030
  assert_raises(TypeError) { oo = Excelx.new(File.join("test","numbers1.ods"),false,:error) }
3984
4031
  assert_raises(TypeError) { oo = Excelx.new(File.join("test","numbers1.xls"),false,:error) }
4032
+ assert_equal [], Dir.glob("oo_*")
3985
4033
  end
3986
4034
  end
3987
4035
 
3988
4036
  def test_file_warning_warning
3989
- after Date.new(2008,7,3) do
3990
- if OPENOFFICE
3991
- assert_nothing_raised(TypeError) {
3992
- assert_raises(Zip::ZipError) {
3993
- oo = Openoffice.new(File.join("test","numbers1.xls"),false, :warning)
3994
- }
4037
+ if OPENOFFICE
4038
+ assert_nothing_raised(TypeError) {
4039
+ assert_raises(Zip::ZipError) {
4040
+ oo = Openoffice.new(File.join("test","numbers1.xls"),false, :warning)
3995
4041
  }
3996
- assert_nothing_raised(TypeError) {
3997
- assert_raises(Errno::ENOENT) {
3998
- oo = Openoffice.new(File.join("test","numbers1.xlsx"),false, :warning)
3999
- }
4042
+ }
4043
+ assert_nothing_raised(TypeError) {
4044
+ assert_raises(Errno::ENOENT) {
4045
+ oo = Openoffice.new(File.join("test","numbers1.xlsx"),false, :warning)
4000
4046
  }
4001
- end
4002
- after Date.new(2008,7,13) do
4003
- if EXCEL
4004
- assert_nothing_raised(TypeError) {
4005
- assert_raises(OLE::UnknownFormatError) {
4006
- oo = Excel.new(File.join("test","numbers1.ods"),false, :warning) }
4007
- }
4008
- assert_nothing_raised(TypeError) {
4009
- assert_raises(OLE::UnknownFormatError) {
4010
- oo = Excel.new(File.join("test","numbers1.xlsx"),false, :warning) }
4011
- }
4012
- end
4013
- if EXCELX
4014
- assert_nothing_raised(TypeError) {
4015
- assert_raises(Errno::ENOENT) {
4016
- oo = Excelx.new(File.join("test","numbers1.ods"),false, :warning) }
4017
- }
4018
- assert_nothing_raised(TypeError) {
4019
- assert_raises(Zip::ZipError) {
4020
- oo = Excelx.new(File.join("test","numbers1.xls"),false, :warning) }
4021
- }
4022
- end
4023
- end
4047
+ }
4048
+ assert_equal [], Dir.glob("oo_*")
4049
+ end
4050
+ if EXCEL
4051
+ assert_nothing_raised(TypeError) {
4052
+ assert_raises(OLE::UnknownFormatError) {
4053
+ oo = Excel.new(File.join("test","numbers1.ods"),false, :warning) }
4054
+ }
4055
+ assert_nothing_raised(TypeError) {
4056
+ assert_raises(OLE::UnknownFormatError) {
4057
+ oo = Excel.new(File.join("test","numbers1.xlsx"),false, :warning) }
4058
+ }
4059
+ assert_equal [], Dir.glob("oo_*")
4060
+ end
4061
+ if EXCELX
4062
+ assert_nothing_raised(TypeError) {
4063
+ assert_raises(Errno::ENOENT) {
4064
+ oo = Excelx.new(File.join("test","numbers1.ods"),false, :warning) }
4065
+ }
4066
+ assert_nothing_raised(TypeError) {
4067
+ assert_raises(Zip::ZipError) {
4068
+ oo = Excelx.new(File.join("test","numbers1.xls"),false, :warning) }
4069
+ }
4070
+ assert_equal [], Dir.glob("oo_*")
4024
4071
  end
4025
4072
  end
4026
4073
 
@@ -4034,6 +4081,7 @@ Sheet 3:
4034
4081
  assert_raises(Errno::ENOENT) {
4035
4082
  oo = Openoffice.new(File.join("test","numbers1.xlsx"),false, :ignore) }
4036
4083
  }
4084
+ assert_equal [], Dir.glob("oo_*")
4037
4085
  end
4038
4086
  if EXCEL
4039
4087
  assert_nothing_raised(TypeError) {
@@ -4042,6 +4090,7 @@ Sheet 3:
4042
4090
  }
4043
4091
  assert_nothing_raised(TypeError) {
4044
4092
  assert_raises(OLE::UnknownFormatError) {oo = Excel.new(File.join("test","numbers1.xlsx"),false, :ignore) }}
4093
+ assert_equal [], Dir.glob("oo_*")
4045
4094
  end
4046
4095
  if EXCELX
4047
4096
  assert_nothing_raised(TypeError) {
@@ -4054,6 +4103,7 @@ Sheet 3:
4054
4103
  oo = Excelx.new(File.join("test","numbers1.xls"),false, :ignore)
4055
4104
  }
4056
4105
  }
4106
+ assert_equal [], Dir.glob("oo_*")
4057
4107
  end
4058
4108
  end
4059
4109
 
@@ -4147,28 +4197,28 @@ Sheet 3:
4147
4197
 
4148
4198
  def test_bug_simple_spreadsheet_time_bug
4149
4199
  # really a bug? are cells really of type time?
4200
+ # No! :float must be the correct type
4150
4201
  if EXCELX
4151
- after Date.new(2999,7,25)+10 do
4152
- oo = Excelx.new(File.join("test","simple_spreadsheet.xlsx"))
4153
- oo.default_sheet = oo.sheets.first
4154
- puts oo.cell('B',5).to_s
4155
- assert_equal :time, oo.celltype('B',5)
4156
- assert_equal 10.75, oo.cell('B',5)
4157
-
4158
- assert_equal 12.50, oo.cell('C',5)
4159
- assert_equal 0, oo.cell('D',5)
4160
- assert_equal 1.75, oo.cell('E',5)
4161
- assert_equal 'Task 1', oo.cell('F',5)
4162
- assert_equal Date.new(2007,5,7), oo.cell('A',5)
4163
- end
4202
+ oo = Excelx.new(File.join("test","simple_spreadsheet.xlsx"))
4203
+ oo.default_sheet = oo.sheets.first
4204
+ # puts oo.cell('B',5).to_s
4205
+ # assert_equal :time, oo.celltype('B',5)
4206
+ assert_equal :float, oo.celltype('B',5)
4207
+ assert_equal 10.75, oo.cell('B',5)
4208
+
4209
+ assert_equal 12.50, oo.cell('C',5)
4210
+ assert_equal 0, oo.cell('D',5)
4211
+ assert_equal 1.75, oo.cell('E',5)
4212
+ assert_equal 'Task 1', oo.cell('F',5)
4213
+ assert_equal Date.new(2007,5,7), oo.cell('A',5)
4164
4214
  end
4165
4215
  end
4166
4216
 
4167
4217
 
4168
4218
  def test_to_ascii_openoffice
4169
4219
  if OPENOFFICE
4170
- after Date.new(2999,1,1) do
4171
- oo = Openoffice.new(File.join("test","verysimple_spreadsheet.ods"))
4220
+ after Date.new(9999,12,31) do
4221
+ oo = Openoffice.new(File.join("test","verysimple_spreadsheet.ods"))
4172
4222
  oo.default_sheet = oo.sheets.first
4173
4223
  expected="
4174
4224
  A | B | C |
@@ -4186,17 +4236,95 @@ Sheet 3:
4186
4236
  end
4187
4237
 
4188
4238
  def test_simple2_excelx
4189
- after Date.new(2999,1,1) do
4239
+ if EXCELX
4240
+ after Date.new(2008,8,2) do
4241
+ oo = Excelx.new(File.join("test","simple_spreadsheet.xlsx"))
4242
+ oo.default_sheet = oo.sheets.first
4243
+ assert_equal [:numeric_or_formula, "yyyy\\-mm\\-dd"], oo.excelx_type('A',4)
4244
+ assert_equal [:numeric_or_formula, "#,##0.00"], oo.excelx_type('B',4)
4245
+ assert_equal [:numeric_or_formula, "#,##0.00"], oo.excelx_type('c',4)
4246
+ assert_equal [:numeric_or_formula, "General"], oo.excelx_type('d',4)
4247
+ assert_equal [:numeric_or_formula, "General"], oo.excelx_type('e',4)
4248
+ assert_equal :string, oo.excelx_type('f',4)
4249
+
4250
+ assert_equal "39209", oo.excelx_value('a',4)
4251
+ assert_equal "yyyy\\-mm\\-dd", oo.excelx_format('a',4)
4252
+ assert_equal "9.25", oo.excelx_value('b',4)
4253
+ assert_equal "10.25", oo.excelx_value('c',4)
4254
+ assert_equal "0", oo.excelx_value('d',4)
4255
+ #... Sum-Spalte
4256
+ # assert_equal "Task 1", oo.excelx_value('f',4)
4257
+ assert_equal "Task 1", oo.cell('f',4)
4258
+ assert_equal Date.new(2007,05,07), oo.cell('a',4)
4259
+ assert_equal "9.25", oo.excelx_value('b',4)
4260
+ assert_equal "#,##0.00", oo.excelx_format('b',4)
4261
+ assert_equal 9.25, oo.cell('b',4)
4262
+ assert_equal :float, oo.celltype('b',4)
4263
+ assert_equal :float, oo.celltype('d',4)
4264
+ assert_equal 0, oo.cell('d',4)
4265
+ assert_equal :formula, oo.celltype('e',4)
4266
+ assert_equal 1, oo.cell('e',4)
4267
+ assert_equal 'C4-B4-D4', oo.formula('e',4)
4268
+ assert_equal :string, oo.celltype('f',4)
4269
+ assert_equal "Task 1", oo.cell('f',4)
4270
+ end
4271
+ end
4272
+ end
4273
+
4274
+ def test_possible_bug_snowboard_borders
4275
+ local_only do
4276
+ if EXCEL
4277
+ ex = Excel.new(File.join('test','problem.xls'))
4278
+ ex.default_sheet = ex.sheets.first
4279
+ assert_equal 2, ex.first_row
4280
+ assert_equal 30, ex.last_row
4281
+ assert_equal 'A', ex.first_column_as_letter
4282
+ assert_equal 'J', ex.last_column_as_letter
4283
+ end
4190
4284
  if EXCELX
4191
- oo = Excelx.new(File.join("test","simple_spreadsheet.xlsx"))
4192
- oo.default_sheet = oo.sheets.first
4193
- assert_equal :numeric_or_formula, oo.excelx_type('A',4)
4194
- assert_equal :numeric_or_formula, oo.excelx_type('B',4)
4195
- assert_equal :numeric_or_formula, oo.excelx_type('c',4)
4196
- assert_equal :numeric_or_formula, oo.excelx_type('d',4)
4197
- assert_equal :numeric_or_formula, oo.excelx_type('e',4)
4198
- assert_equal :string, oo.excelx_type('f',4)
4285
+ ex = Excelx.new(File.join('test','problem.xlsx'))
4286
+ ex.default_sheet = ex.sheets.first
4287
+ assert_equal 2, ex.first_row
4288
+ assert_equal 30, ex.last_row
4289
+ assert_equal 'A', ex.first_column_as_letter
4290
+ assert_equal 'J', ex.last_column_as_letter
4291
+ end
4292
+ end
4293
+ end
4294
+
4295
+ def common_possible_bug_snowboard_cells(ss)
4296
+ assert_equal "A.", ss.cell(13,'A'), ss.class
4297
+ assert_equal 147, ss.cell(13,'f'), ss.class
4298
+ assert_equal 152, ss.cell(13,'g'), ss.class
4299
+ assert_equal 156, ss.cell(13,'h'), ss.class
4300
+ assert_equal 158, ss.cell(13,'i'), ss.class
4301
+ assert_equal 160, ss.cell(13,'j'), ss.class
4302
+ assert_equal 164, ss.cell(13,'k'), ss.class
4303
+ assert_equal 168, ss.cell(13,'l'), ss.class
4304
+ assert_equal :string, ss.celltype(13,'m'), ss.class
4305
+ assert_equal "159W", ss.cell(13,'m'), ss.class
4306
+ assert_equal "164W", ss.cell(13,'n'), ss.class
4307
+ assert_equal "168W", ss.cell(13,'o'), ss.class
4308
+ end
4309
+
4310
+ def test_possible_bug_snowboard_cells
4311
+ local_only do
4312
+ after Date.new(2008,8,26) do
4313
+ # warten auf Bugfix in parseexcel
4314
+ if EXCEL
4315
+ ex = Excel.new(File.join('test','problem.xls'))
4316
+ ex.default_sheet = 'Custom X'
4317
+ common_possible_bug_snowboard_cells(ex)
4318
+ end
4319
+ end
4320
+ if EXCELX
4321
+ ex = Excelx.new(File.join('test','problem.xlsx'))
4322
+ ex.default_sheet = 'Custom X'
4323
+ common_possible_bug_snowboard_cells(ex)
4199
4324
  end
4200
4325
  end
4201
4326
  end
4327
+
4328
+
4329
+
4202
4330
  end # class