roo 1.1.0 → 1.2.0
Sign up to get free protection for your applications and to get access to all the features.
- data/History.txt +11 -2
- data/README.txt +25 -11
- data/lib/roo/excel.rb +69 -22
- data/lib/roo/excelx.rb +181 -107
- data/lib/roo/generic_spreadsheet.rb +7 -13
- data/lib/roo/google.rb +3 -23
- data/lib/roo/openoffice.rb +9 -20
- data/lib/roo/version.rb +1 -1
- data/test/test_helper.rb +14 -8
- data/test/test_roo.rb +355 -227
- data/website/index.html +224 -437
- data/website/index.txt +28 -3
- metadata +2 -2
@@ -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
|
447
|
-
def
|
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
|
-
|
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
|
data/lib/roo/google.rb
CHANGED
@@ -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}"]
|
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
|
data/lib/roo/openoffice.rb
CHANGED
@@ -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']
|
data/lib/roo/version.rb
CHANGED
data/test/test_helper.rb
CHANGED
@@ -1,13 +1,19 @@
|
|
1
1
|
require 'test/unit'
|
2
2
|
require File.dirname(__FILE__) + '/../lib/roo'
|
3
3
|
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
4
|
+
# helper method
|
5
|
+
def after(d)
|
6
|
+
yield if DateTime.now > d
|
7
|
+
end
|
8
8
|
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
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
|
data/test/test_roo.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
|
-
#damit keine falschen Vermutungen aufkommen: Ich habe
|
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
|
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
|
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 =
|
111
|
-
GLOBAL_TIMEOUT = 24
|
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
|
-
|
1221
|
-
|
1222
|
-
|
1223
|
-
|
1224
|
-
|
1225
|
-
|
1226
|
-
|
1227
|
-
|
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(
|
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
|
-
|
2132
|
-
if
|
2133
|
-
|
2134
|
-
Timeout::
|
2135
|
-
|
2136
|
-
|
2137
|
-
|
2138
|
-
|
2139
|
-
|
2140
|
-
|
2141
|
-
|
2142
|
-
|
2143
|
-
|
2144
|
-
|
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
|
-
|
3086
|
-
if
|
3087
|
-
|
3088
|
-
|
3089
|
-
|
3090
|
-
|
3091
|
-
|
3092
|
-
|
3093
|
-
|
3094
|
-
|
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
|
-
|
3150
|
-
|
3151
|
-
|
3152
|
-
|
3153
|
-
|
3154
|
-
|
3155
|
-
|
3156
|
-
|
3157
|
-
|
3158
|
-
|
3159
|
-
|
3160
|
-
|
3161
|
-
|
3162
|
-
|
3163
|
-
|
3164
|
-
|
3165
|
-
|
3166
|
-
|
3167
|
-
|
3168
|
-
|
3169
|
-
|
3170
|
-
|
3171
|
-
|
3172
|
-
|
3173
|
-
|
3174
|
-
|
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
|
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
|
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
|
-
|
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
|
-
|
3690
|
-
|
3691
|
-
|
3692
|
-
|
3693
|
-
|
3694
|
-
|
3695
|
-
|
3696
|
-
|
3697
|
-
|
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
|
-
|
3706
|
-
|
3707
|
-
|
3708
|
-
|
3709
|
-
|
3710
|
-
|
3711
|
-
|
3712
|
-
|
3713
|
-
|
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
|
-
|
3722
|
-
|
3723
|
-
|
3724
|
-
|
3725
|
-
|
3726
|
-
|
3727
|
-
|
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
|
-
|
3732
|
-
|
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
|
-
|
3842
|
-
|
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
|
-
|
3866
|
-
|
3867
|
-
|
3868
|
-
|
3869
|
-
|
3870
|
-
|
3871
|
-
|
3872
|
-
|
3873
|
-
|
3874
|
-
|
3875
|
-
if
|
3876
|
-
|
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
|
-
|
3879
|
-
|
3880
|
-
|
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,
|
3942
|
-
|
3943
|
-
|
3944
|
-
|
3945
|
-
|
3946
|
-
|
3947
|
-
|
3948
|
-
|
3949
|
-
|
3950
|
-
|
3951
|
-
|
3952
|
-
|
3953
|
-
|
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
|
-
|
3990
|
-
|
3991
|
-
|
3992
|
-
|
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
|
-
|
3997
|
-
|
3998
|
-
|
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
|
-
|
4002
|
-
|
4003
|
-
|
4004
|
-
|
4005
|
-
|
4006
|
-
|
4007
|
-
}
|
4008
|
-
|
4009
|
-
|
4010
|
-
|
4011
|
-
}
|
4012
|
-
|
4013
|
-
|
4014
|
-
|
4015
|
-
|
4016
|
-
|
4017
|
-
|
4018
|
-
|
4019
|
-
|
4020
|
-
|
4021
|
-
|
4022
|
-
|
4023
|
-
|
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
|
-
|
4152
|
-
|
4153
|
-
|
4154
|
-
|
4155
|
-
|
4156
|
-
|
4157
|
-
|
4158
|
-
|
4159
|
-
|
4160
|
-
|
4161
|
-
|
4162
|
-
|
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
|
-
|
4171
|
-
|
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
|
-
|
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
|
-
|
4192
|
-
|
4193
|
-
|
4194
|
-
|
4195
|
-
|
4196
|
-
|
4197
|
-
|
4198
|
-
|
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
|