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.
- 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
|