roo 1.0.2 → 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/History.txt +7 -0
- data/Manifest.txt +3 -0
- data/Rakefile +15 -1
- data/lib/roo/excel.rb +113 -133
- data/lib/roo/excelx.rb +124 -53
- data/lib/roo/generic_spreadsheet.rb +266 -218
- data/lib/roo/google.rb +3 -2
- data/lib/roo/openoffice.rb +21 -57
- data/lib/roo/version.rb +2 -2
- data/test/Bibelbund.xlsx +0 -0
- data/test/emptysheets.ods +0 -0
- data/test/emptysheets.xls +0 -0
- data/test/test_helper.rb +11 -0
- data/test/test_roo.rb +741 -717
- data/website/index.html +87 -6
- data/website/index.txt +61 -3
- metadata +5 -2
data/lib/roo/google.rb
CHANGED
@@ -172,9 +172,10 @@ class Google < GenericSpreadsheet
|
|
172
172
|
|
173
173
|
# returns the type of a cell:
|
174
174
|
# * :float
|
175
|
-
# * :string
|
175
|
+
# * :string
|
176
176
|
# * :date
|
177
177
|
# * :percentage
|
178
|
+
# * :formula
|
178
179
|
# * :time
|
179
180
|
def celltype(row, col, sheet=nil)
|
180
181
|
sheet = @default_sheet unless sheet
|
@@ -204,7 +205,7 @@ class Google < GenericSpreadsheet
|
|
204
205
|
# true, if there is a formula
|
205
206
|
def formula?(row,col,sheet=nil)
|
206
207
|
sheet = @default_sheet unless sheet
|
207
|
-
read_cells unless @cells_read[sheet]
|
208
|
+
read_cells(sheet) unless @cells_read[sheet]
|
208
209
|
row,col = normalize(row,col)
|
209
210
|
formula(row,col) != nil
|
210
211
|
end
|
data/lib/roo/openoffice.rb
CHANGED
@@ -12,16 +12,28 @@ class Openoffice < GenericSpreadsheet
|
|
12
12
|
|
13
13
|
# initialization and opening of a spreadsheet file
|
14
14
|
# values for packed: :zip
|
15
|
-
def initialize(filename, packed=nil) #, create = false)
|
15
|
+
def initialize(filename, packed=nil, file_warning=:error) #, create = false)
|
16
|
+
@file_warning = file_warning
|
17
|
+
super()
|
16
18
|
@tmpdir = "oo_"+$$.to_s
|
17
19
|
unless File.exists?(@tmpdir)
|
18
20
|
FileUtils::mkdir(@tmpdir)
|
19
21
|
end
|
20
22
|
filename = open_from_uri(filename) if filename[0,7] == "http://"
|
21
23
|
filename = unzip(filename) if packed and packed == :zip
|
22
|
-
|
23
|
-
|
24
|
-
|
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
|
25
37
|
#if create and ! File.exists?(filename)
|
26
38
|
# self.create_openoffice(filename)
|
27
39
|
#end
|
@@ -102,7 +114,7 @@ class Openoffice < GenericSpreadsheet
|
|
102
114
|
# true, if there is a formula
|
103
115
|
def formula?(row,col,sheet=nil)
|
104
116
|
sheet = @default_sheet unless sheet
|
105
|
-
read_cells unless @cells_read[sheet]
|
117
|
+
read_cells(sheet) unless @cells_read[sheet]
|
106
118
|
row,col = normalize(row,col)
|
107
119
|
formula(row,col) != nil
|
108
120
|
end
|
@@ -127,9 +139,11 @@ class Openoffice < GenericSpreadsheet
|
|
127
139
|
|
128
140
|
# returns the type of a cell:
|
129
141
|
# * :float
|
130
|
-
# * :string
|
142
|
+
# * :string
|
131
143
|
# * :date
|
132
144
|
# * :percentage
|
145
|
+
# * :formula
|
146
|
+
# * :time
|
133
147
|
def celltype(row,col,sheet=nil)
|
134
148
|
sheet = @default_sheet unless sheet
|
135
149
|
read_cells(sheet) unless @cells_read[sheet]
|
@@ -182,62 +196,11 @@ class Openoffice < GenericSpreadsheet
|
|
182
196
|
@cell[sheet].inspect
|
183
197
|
end
|
184
198
|
|
185
|
-
# returns all values in this row as an array
|
186
|
-
# row numbers are 1,2,3,... like in the spreadsheet
|
187
|
-
def row(rownumber,sheet=nil)
|
188
|
-
sheet = @default_sheet unless sheet
|
189
|
-
read_cells(sheet) unless @cells_read[sheet]
|
190
|
-
result = []
|
191
|
-
tmp_arr = []
|
192
|
-
@cell[sheet].each_pair {|key,value|
|
193
|
-
y,x = key.split(',')
|
194
|
-
x = x.to_i
|
195
|
-
y = y.to_i
|
196
|
-
if y == rownumber
|
197
|
-
tmp_arr[x] = value
|
198
|
-
end
|
199
|
-
}
|
200
|
-
result = tmp_arr[1..-1]
|
201
|
-
while result[-1] == nil
|
202
|
-
result = result[0..-2]
|
203
|
-
end
|
204
|
-
result
|
205
|
-
end
|
206
|
-
|
207
|
-
# returns all values in this column as an array
|
208
|
-
# column numbers are 1,2,3,... like in the spreadsheet
|
209
|
-
def column(columnnumber,sheet=nil)
|
210
|
-
if columnnumber.class == String
|
211
|
-
columnnumber = Openoffice.letter_to_number(columnnumber)
|
212
|
-
end
|
213
|
-
sheet = @default_sheet unless sheet
|
214
|
-
read_cells(sheet) unless @cells_read[sheet]
|
215
|
-
result = []
|
216
|
-
first_row(sheet).upto(last_row(sheet)) do |row|
|
217
|
-
result << cell(row,columnnumber,sheet)
|
218
|
-
end
|
219
|
-
result
|
220
|
-
end
|
221
|
-
|
222
199
|
# save spreadsheet
|
223
200
|
def save #:nodoc:
|
224
201
|
42
|
225
202
|
end
|
226
203
|
|
227
|
-
# evaluate the formula at this cell
|
228
|
-
# experimental: DO NOT USE THIS!
|
229
|
-
def solve(row,col) #:nodoc:
|
230
|
-
parser = SpreadsheetParser.new
|
231
|
-
visitor = Visitor.new
|
232
|
-
#puts cell(row,col)
|
233
|
-
#puts formula(row,col)
|
234
|
-
formula = formula(row,col)[1..-1] # .downcase
|
235
|
-
# puts formula
|
236
|
-
#eval formula
|
237
|
-
#parser.parse(formula)
|
238
|
-
parser.parse(formula).accept(visitor)
|
239
|
-
end
|
240
|
-
|
241
204
|
# returns each formula in the selected sheet as an array of elements
|
242
205
|
# [row, col, formula]
|
243
206
|
def formulas(sheet=nil)
|
@@ -299,6 +262,7 @@ class Openoffice < GenericSpreadsheet
|
|
299
262
|
sheet = @default_sheet unless sheet
|
300
263
|
sheet_found = false
|
301
264
|
raise ArgumentError, "Error: sheet '#{sheet||'nil'}' not valid" if @default_sheet == nil and sheet==nil
|
265
|
+
raise RangeError unless self.sheets.include? sheet
|
302
266
|
oo_document_count = 0
|
303
267
|
@doc.each_element do |oo_document|
|
304
268
|
# @officeversion = oo_document.attributes['version']
|
data/lib/roo/version.rb
CHANGED
data/test/Bibelbund.xlsx
ADDED
Binary file
|
Binary file
|
Binary file
|
data/test/test_helper.rb
CHANGED
data/test/test_roo.rb
CHANGED
@@ -23,10 +23,6 @@ DISPLAY_LOG = false
|
|
23
23
|
DB_LOG = false
|
24
24
|
|
25
25
|
if DB_LOG
|
26
|
-
# gem 'activerecord', '< 2.0.0'
|
27
|
-
# require 'activerecord'
|
28
|
-
# require_gem 'activerecord', '< 2.0.0'
|
29
|
-
#gem 'activerecord', '< 2.0.0'
|
30
26
|
require 'activerecord'
|
31
27
|
end
|
32
28
|
|
@@ -82,17 +78,7 @@ class Test::Unit::TestCase
|
|
82
78
|
if DISPLAY_LOG
|
83
79
|
puts "\t#{t2-t1} seconds"
|
84
80
|
end
|
85
|
-
# record = {'class' => self.class.to_s,
|
86
|
-
# 'test' => @method_name,
|
87
|
-
# 'start' => t1,
|
88
|
-
# 'duration' => t2-t1}
|
89
|
-
# open('test_runs.yml','a') { |f| YAML.dump(record, f) }
|
90
|
-
# #--
|
91
81
|
if DB_LOG
|
92
|
-
# p self.class.to_s
|
93
|
-
#p @method_name
|
94
|
-
#p t1
|
95
|
-
#p t2-t1
|
96
82
|
domain = Testrun.create(
|
97
83
|
:class_name => self.class.to_s,
|
98
84
|
:test_name => @method_name,
|
@@ -104,13 +90,11 @@ class Test::Unit::TestCase
|
|
104
90
|
end
|
105
91
|
|
106
92
|
class File
|
107
|
-
|
108
93
|
def File.delete_if_exist(filename)
|
109
94
|
if File.exist?(filename)
|
110
95
|
File.delete(filename)
|
111
96
|
end
|
112
97
|
end
|
113
|
-
|
114
98
|
end
|
115
99
|
|
116
100
|
class TestRoo < Test::Unit::TestCase
|
@@ -124,22 +108,11 @@ class TestRoo < Test::Unit::TestCase
|
|
124
108
|
OPENOFFICEWRITE = false # experimental: write access with OO-Documents
|
125
109
|
ONLINE = false
|
126
110
|
LONG_RUN = false
|
127
|
-
GLOBAL_TIMEOUT = 2*12*60 # seconds
|
128
|
-
|
129
|
-
|
130
|
-
# helper method
|
131
|
-
def after(d)
|
132
|
-
yield if DateTime.now > d
|
133
|
-
end
|
134
|
-
|
135
|
-
# helper method
|
136
|
-
def before(d)
|
137
|
-
yield if DateTime.now <= d
|
138
|
-
end
|
111
|
+
GLOBAL_TIMEOUT = 24*60 # 2*12*60 # seconds
|
139
112
|
|
140
113
|
def setup
|
141
114
|
if DISPLAY_LOG
|
142
|
-
puts "GLOBAL_TIMEOUT = #{GLOBAL_TIMEOUT}"
|
115
|
+
puts " GLOBAL_TIMEOUT = #{GLOBAL_TIMEOUT}"
|
143
116
|
end
|
144
117
|
end
|
145
118
|
|
@@ -561,8 +534,8 @@ class TestRoo < Test::Unit::TestCase
|
|
561
534
|
if EXCEL
|
562
535
|
oo = Excel.new(File.join("test","numbers1.xls"))
|
563
536
|
oo.default_sheet = oo.sheets.first
|
564
|
-
assert_equal "tata", oo.cell(6,1)
|
565
537
|
assert_equal "tata", oo.cell(6,'A')
|
538
|
+
assert_equal "tata", oo.cell(6,1)
|
566
539
|
assert_equal "tata", oo.cell('A',6)
|
567
540
|
assert_equal "tata", oo.cell(6,'a')
|
568
541
|
assert_equal "tata", oo.cell('a',6)
|
@@ -696,7 +669,6 @@ class TestRoo < Test::Unit::TestCase
|
|
696
669
|
assert_equal ["einundvierzig", "zweiundvierzig", "dreiundvierzig", "vierundvierzig", "fuenfundvierzig"], oo.row(16)
|
697
670
|
end
|
698
671
|
if EXCEL
|
699
|
-
#-- Excel
|
700
672
|
oo = Excel.new(File.join("test","numbers1.xls"))
|
701
673
|
oo.default_sheet = oo.sheets.first
|
702
674
|
assert_equal 41, oo.cell('a',12)
|
@@ -947,26 +919,83 @@ class TestRoo < Test::Unit::TestCase
|
|
947
919
|
oo = Openoffice.new(File.join("test","numbers1.ods"))
|
948
920
|
oo.default_sheet = "Name of Sheet 2"
|
949
921
|
assert_equal 'I am sheet 2', oo.cell('C',5)
|
922
|
+
assert_raise(RangeError) { oo.default_sheet = "non existing sheet name" }
|
923
|
+
assert_raise(RangeError) { dummy = oo.cell('C',5,"non existing sheet name")}
|
924
|
+
assert_raise(RangeError) { dummy = oo.celltype('C',5,"non existing sheet name")}
|
925
|
+
assert_raise(RangeError) { dummy = oo.empty?('C',5,"non existing sheet name")}
|
926
|
+
assert_raise(RangeError) { dummy = oo.formula?('C',5,"non existing sheet name")}
|
927
|
+
assert_raise(RangeError) { dummy = oo.formula('C',5,"non existing sheet name")}
|
928
|
+
assert_raise(RangeError) { dummy = oo.set('C',5,42,"non existing sheet name")}
|
929
|
+
assert_raise(RangeError) { dummy = oo.formulas("non existing sheet name")}
|
930
|
+
assert_raise(RangeError) { dummy = oo.to_yaml({},1,1,1,1,"non existing sheet name")}
|
950
931
|
end
|
951
932
|
if GNUMERIC_ODS
|
952
933
|
oo = Openoffice.new(File.join("test","gnumeric_numbers1.ods"))
|
953
934
|
oo.default_sheet = "Name of Sheet 2"
|
954
935
|
assert_equal 'I am sheet 2', oo.cell('C',5)
|
936
|
+
assert_raise(RangeError) {
|
937
|
+
oo.default_sheet = "non existing sheet name"
|
938
|
+
}
|
939
|
+
assert_raise(RangeError) { oo.default_sheet = "non existing sheet name" }
|
940
|
+
assert_raise(RangeError) { dummy = oo.cell('C',5,"non existing sheet name")}
|
941
|
+
assert_raise(RangeError) { dummy = oo.celltype('C',5,"non existing sheet name")}
|
942
|
+
assert_raise(RangeError) { dummy = oo.empty?('C',5,"non existing sheet name")}
|
943
|
+
assert_raise(RangeError) { dummy = oo.formula?('C',5,"non existing sheet name")}
|
944
|
+
assert_raise(RangeError) { dummy = oo.formula('C',5,"non existing sheet name")}
|
945
|
+
assert_raise(RangeError) { dummy = oo.set('C',5,42,"non existing sheet name")}
|
946
|
+
assert_raise(RangeError) { dummy = oo.formulas("non existing sheet name")}
|
947
|
+
assert_raise(RangeError) { dummy = oo.to_yaml({},1,1,1,1,"non existing sheet name")}
|
955
948
|
end
|
956
949
|
if EXCEL
|
957
950
|
oo = Excel.new(File.join("test","numbers1.xls"))
|
958
951
|
oo.default_sheet = "Name of Sheet 2"
|
959
952
|
assert_equal 'I am sheet 2', oo.cell('C',5)
|
953
|
+
assert_raise(RangeError) {
|
954
|
+
oo.default_sheet = "non existing sheet name"
|
955
|
+
}
|
956
|
+
assert_raise(RangeError) { oo.default_sheet = "non existing sheet name" }
|
957
|
+
assert_raise(RangeError) { dummy = oo.cell('C',5,"non existing sheet name")}
|
958
|
+
assert_raise(RangeError) { dummy = oo.celltype('C',5,"non existing sheet name")}
|
959
|
+
assert_raise(RangeError) { dummy = oo.empty?('C',5,"non existing sheet name")}
|
960
|
+
assert_raise(RuntimeError) { dummy = oo.formula?('C',5,"non existing sheet name")}
|
961
|
+
assert_raise(RuntimeError) { dummy = oo.formula('C',5,"non existing sheet name")}
|
962
|
+
#assert_raise(RangeError) { dummy = oo.set('C',5,42,"non existing sheet name")}
|
963
|
+
#assert_raise(RangeError) { dummy = oo.formulas("non existing sheet name")}
|
964
|
+
assert_raise(RangeError) { dummy = oo.to_yaml({},1,1,1,1,"non existing sheet name")}
|
960
965
|
end
|
961
966
|
if EXCELX
|
962
967
|
oo = Excelx.new(File.join("test","numbers1.xlsx"))
|
963
968
|
oo.default_sheet = "Name of Sheet 2"
|
964
969
|
assert_equal 'I am sheet 2', oo.cell('C',5)
|
970
|
+
assert_raise(RangeError) {
|
971
|
+
oo.default_sheet = "non existing sheet name"
|
972
|
+
}
|
973
|
+
assert_raise(RangeError) { oo.default_sheet = "non existing sheet name" }
|
974
|
+
assert_raise(RangeError) { dummy = oo.cell('C',5,"non existing sheet name")}
|
975
|
+
assert_raise(RangeError) { dummy = oo.celltype('C',5,"non existing sheet name")}
|
976
|
+
assert_raise(RangeError) { dummy = oo.empty?('C',5,"non existing sheet name")}
|
977
|
+
assert_raise(RangeError) { dummy = oo.formula?('C',5,"non existing sheet name")}
|
978
|
+
assert_raise(RangeError) { dummy = oo.formula('C',5,"non existing sheet name")}
|
979
|
+
assert_raise(RangeError) { dummy = oo.set('C',5,42,"non existing sheet name")}
|
980
|
+
assert_raise(RangeError) { dummy = oo.formulas("non existing sheet name")}
|
981
|
+
assert_raise(RangeError) { dummy = oo.to_yaml({},1,1,1,1,"non existing sheet name")}
|
965
982
|
end
|
966
983
|
if GOOGLE
|
967
984
|
oo = Google.new(key_of("numbers1"))
|
968
985
|
oo.default_sheet = "Name of Sheet 2"
|
969
986
|
assert_equal 'I am sheet 2', oo.cell('C',5)
|
987
|
+
assert_raise(RangeError) {
|
988
|
+
oo.default_sheet = "non existing sheet name"
|
989
|
+
}
|
990
|
+
assert_raise(RangeError) { oo.default_sheet = "non existing sheet name" }
|
991
|
+
assert_raise(RangeError) { dummy = oo.cell('C',5,"non existing sheet name")}
|
992
|
+
assert_raise(RangeError) { dummy = oo.celltype('C',5,"non existing sheet name")}
|
993
|
+
assert_raise(RangeError) { dummy = oo.empty?('C',5,"non existing sheet name")}
|
994
|
+
assert_raise(RangeError) { dummy = oo.formula?('C',5,"non existing sheet name")}
|
995
|
+
assert_raise(RangeError) { dummy = oo.formula('C',5,"non existing sheet name")}
|
996
|
+
assert_raise(RangeError) { dummy = oo.set('C',5,42,"non existing sheet name")}
|
997
|
+
assert_raise(RangeError) { dummy = oo.formulas("non existing sheet name")}
|
998
|
+
assert_raise(RangeError) { dummy = oo.to_yaml({},1,1,1,1,"non existing sheet name")}
|
970
999
|
end
|
971
1000
|
end
|
972
1001
|
|
@@ -1272,144 +1301,142 @@ class TestRoo < Test::Unit::TestCase
|
|
1272
1301
|
|
1273
1302
|
#2008-01-30
|
1274
1303
|
def test_italo_table
|
1275
|
-
|
1276
|
-
|
1277
|
-
|
1278
|
-
oo.default_sheet = oo.sheets.first
|
1304
|
+
local_only do
|
1305
|
+
oo = Openoffice.new(File.join("test","simple_spreadsheet_from_italo.ods"))
|
1306
|
+
oo.default_sheet = oo.sheets.first
|
1279
1307
|
|
1280
|
-
|
1281
|
-
|
1282
|
-
|
1308
|
+
assert_equal '1', oo.cell('A',1)
|
1309
|
+
assert_equal '1', oo.cell('B',1)
|
1310
|
+
assert_equal '1', oo.cell('C',1)
|
1283
1311
|
|
1284
|
-
|
1285
|
-
|
1286
|
-
|
1287
|
-
|
1312
|
+
# assert_equal 1, oo.cell('A',2)
|
1313
|
+
# assert_equal 2, oo.cell('B',2)
|
1314
|
+
# assert_equal 1, oo.cell('C',2)
|
1315
|
+
# are stored as strings, not numbers
|
1288
1316
|
|
1289
|
-
|
1290
|
-
|
1291
|
-
|
1317
|
+
assert_equal 1, oo.cell('A',2).to_i
|
1318
|
+
assert_equal 2, oo.cell('B',2).to_i
|
1319
|
+
assert_equal 1, oo.cell('C',2).to_i
|
1292
1320
|
|
1293
|
-
|
1294
|
-
|
1295
|
-
|
1321
|
+
assert_equal 1, oo.cell('A',3)
|
1322
|
+
assert_equal 3, oo.cell('B',3)
|
1323
|
+
assert_equal 1, oo.cell('C',3)
|
1296
1324
|
|
1297
|
-
|
1298
|
-
|
1299
|
-
|
1325
|
+
assert_equal 'A', oo.cell('A',4)
|
1326
|
+
assert_equal 'A', oo.cell('B',4)
|
1327
|
+
assert_equal 'A', oo.cell('C',4)
|
1300
1328
|
|
1301
|
-
|
1302
|
-
|
1303
|
-
|
1304
|
-
|
1305
|
-
|
1306
|
-
|
1307
|
-
|
1329
|
+
# assert_equal '0.01', oo.cell('A',5)
|
1330
|
+
# assert_equal '0.01', oo.cell('B',5)
|
1331
|
+
# assert_equal '0.01', oo.cell('C',5)
|
1332
|
+
#
|
1333
|
+
assert_equal 0.01, oo.cell('A',5)
|
1334
|
+
assert_equal 0.01, oo.cell('B',5)
|
1335
|
+
assert_equal 0.01, oo.cell('C',5)
|
1308
1336
|
|
1309
|
-
|
1337
|
+
assert_equal 0.03, oo.cell('a',5)+oo.cell('b',5)+oo.cell('c',5)
|
1310
1338
|
|
1311
1339
|
|
1312
|
-
|
1340
|
+
# 1.0
|
1313
1341
|
|
1314
|
-
|
1315
|
-
|
1316
|
-
|
1317
|
-
|
1342
|
+
# Cells values in row 1:
|
1343
|
+
assert_equal "1:string", oo.cell(1, 1)+":"+oo.celltype(1, 1).to_s
|
1344
|
+
assert_equal "1:string",oo.cell(1, 2)+":"+oo.celltype(1, 2).to_s
|
1345
|
+
assert_equal "1:string",oo.cell(1, 3)+":"+oo.celltype(1, 3).to_s
|
1318
1346
|
|
1319
|
-
|
1320
|
-
|
1321
|
-
|
1322
|
-
|
1347
|
+
# Cells values in row 2:
|
1348
|
+
assert_equal "1:string",oo.cell(2, 1)+":"+oo.celltype(2, 1).to_s
|
1349
|
+
assert_equal "2:string",oo.cell(2, 2)+":"+oo.celltype(2, 2).to_s
|
1350
|
+
assert_equal "1:string",oo.cell(2, 3)+":"+oo.celltype(2, 3).to_s
|
1323
1351
|
|
1324
|
-
|
1325
|
-
|
1326
|
-
|
1327
|
-
|
1352
|
+
# Cells values in row 3:
|
1353
|
+
assert_equal "1.0:float",oo.cell(3, 1).to_s+":"+oo.celltype(3, 1).to_s
|
1354
|
+
assert_equal "3.0:float",oo.cell(3, 2).to_s+":"+oo.celltype(3, 2).to_s
|
1355
|
+
assert_equal "1.0:float",oo.cell(3, 3).to_s+":"+oo.celltype(3, 3).to_s
|
1328
1356
|
|
1329
|
-
|
1330
|
-
|
1331
|
-
|
1332
|
-
|
1357
|
+
# Cells values in row 4:
|
1358
|
+
assert_equal "A:string",oo.cell(4, 1)+":"+oo.celltype(4, 1).to_s
|
1359
|
+
assert_equal "A:string",oo.cell(4, 2)+":"+oo.celltype(4, 2).to_s
|
1360
|
+
assert_equal "A:string",oo.cell(4, 3)+":"+oo.celltype(4, 3).to_s
|
1333
1361
|
|
1334
|
-
|
1335
|
-
|
1336
|
-
|
1337
|
-
|
1362
|
+
# Cells values in row 5:
|
1363
|
+
assert_equal "0.01:percentage",oo.cell(5, 1).to_s+":"+oo.celltype(5, 1).to_s
|
1364
|
+
assert_equal "0.01:percentage",oo.cell(5, 2).to_s+":"+oo.celltype(5, 2).to_s
|
1365
|
+
assert_equal "0.01:percentage",oo.cell(5, 3).to_s+":"+oo.celltype(5, 3).to_s
|
1338
1366
|
|
1339
|
-
|
1340
|
-
|
1367
|
+
oo = Excel.new(File.join("test","simple_spreadsheet_from_italo.xls"))
|
1368
|
+
oo.default_sheet = oo.sheets.first
|
1341
1369
|
|
1342
|
-
|
1343
|
-
|
1344
|
-
|
1370
|
+
assert_equal '1', oo.cell('A',1)
|
1371
|
+
assert_equal '1', oo.cell('B',1)
|
1372
|
+
assert_equal '1', oo.cell('C',1)
|
1345
1373
|
|
1346
|
-
|
1347
|
-
|
1348
|
-
|
1349
|
-
|
1374
|
+
# assert_equal 1, oo.cell('A',2)
|
1375
|
+
# assert_equal 2, oo.cell('B',2)
|
1376
|
+
# assert_equal 1, oo.cell('C',2)
|
1377
|
+
# are stored as strings, not numbers
|
1350
1378
|
|
1351
|
-
|
1352
|
-
|
1353
|
-
|
1379
|
+
assert_equal 1, oo.cell('A',2).to_i
|
1380
|
+
assert_equal 2, oo.cell('B',2).to_i
|
1381
|
+
assert_equal 1, oo.cell('C',2).to_i
|
1354
1382
|
|
1355
|
-
|
1356
|
-
|
1357
|
-
|
1383
|
+
assert_equal 1, oo.cell('A',3)
|
1384
|
+
assert_equal 3, oo.cell('B',3)
|
1385
|
+
assert_equal 1, oo.cell('C',3)
|
1358
1386
|
|
1359
|
-
|
1360
|
-
|
1361
|
-
|
1387
|
+
assert_equal 'A', oo.cell('A',4)
|
1388
|
+
assert_equal 'A', oo.cell('B',4)
|
1389
|
+
assert_equal 'A', oo.cell('C',4)
|
1362
1390
|
|
1363
|
-
|
1364
|
-
|
1365
|
-
|
1366
|
-
|
1367
|
-
|
1368
|
-
|
1369
|
-
|
1370
|
-
|
1371
|
-
|
1372
|
-
|
1373
|
-
|
1374
|
-
|
1375
|
-
|
1376
|
-
|
1377
|
-
|
1378
|
-
|
1379
|
-
|
1380
|
-
|
1381
|
-
|
1382
|
-
|
1383
|
-
|
1384
|
-
|
1385
|
-
|
1386
|
-
|
1387
|
-
|
1388
|
-
|
1389
|
-
|
1390
|
-
|
1391
|
-
|
1392
|
-
|
1393
|
-
|
1394
|
-
|
1395
|
-
|
1396
|
-
|
1397
|
-
|
1398
|
-
|
1399
|
-
|
1400
|
-
|
1401
|
-
|
1402
|
-
|
1403
|
-
|
1404
|
-
|
1405
|
-
|
1406
|
-
|
1407
|
-
|
1408
|
-
|
1409
|
-
end #after
|
1391
|
+
# assert_equal '0.01', oo.cell('A',5)
|
1392
|
+
# assert_equal '0.01', oo.cell('B',5)
|
1393
|
+
# assert_equal '0.01', oo.cell('C',5)
|
1394
|
+
#
|
1395
|
+
assert_equal 0.01, oo.cell('A',5)
|
1396
|
+
assert_equal 0.01, oo.cell('B',5)
|
1397
|
+
assert_equal 0.01, oo.cell('C',5)
|
1398
|
+
|
1399
|
+
assert_equal 0.03, oo.cell('a',5)+oo.cell('b',5)+oo.cell('c',5)
|
1400
|
+
|
1401
|
+
|
1402
|
+
# 1.0
|
1403
|
+
|
1404
|
+
# Cells values in row 1:
|
1405
|
+
assert_equal "1:string", oo.cell(1, 1)+":"+oo.celltype(1, 1).to_s
|
1406
|
+
assert_equal "1:string",oo.cell(1, 2)+":"+oo.celltype(1, 2).to_s
|
1407
|
+
assert_equal "1:string",oo.cell(1, 3)+":"+oo.celltype(1, 3).to_s
|
1408
|
+
|
1409
|
+
# Cells values in row 2:
|
1410
|
+
assert_equal "1:string",oo.cell(2, 1)+":"+oo.celltype(2, 1).to_s
|
1411
|
+
assert_equal "2:string",oo.cell(2, 2)+":"+oo.celltype(2, 2).to_s
|
1412
|
+
assert_equal "1:string",oo.cell(2, 3)+":"+oo.celltype(2, 3).to_s
|
1413
|
+
|
1414
|
+
# Cells values in row 3:
|
1415
|
+
assert_equal "1.0:float",oo.cell(3, 1).to_s+":"+oo.celltype(3, 1).to_s
|
1416
|
+
assert_equal "3.0:float",oo.cell(3, 2).to_s+":"+oo.celltype(3, 2).to_s
|
1417
|
+
assert_equal "1.0:float",oo.cell(3, 3).to_s+":"+oo.celltype(3, 3).to_s
|
1418
|
+
|
1419
|
+
# Cells values in row 4:
|
1420
|
+
assert_equal "A:string",oo.cell(4, 1)+":"+oo.celltype(4, 1).to_s
|
1421
|
+
assert_equal "A:string",oo.cell(4, 2)+":"+oo.celltype(4, 2).to_s
|
1422
|
+
assert_equal "A:string",oo.cell(4, 3)+":"+oo.celltype(4, 3).to_s
|
1423
|
+
|
1424
|
+
# Cells values in row 5:
|
1425
|
+
#assert_equal "0.01:percentage",oo.cell(5, 1).to_s+":"+oo.celltype(5, 1).to_s
|
1426
|
+
#assert_equal "0.01:percentage",oo.cell(5, 2).to_s+":"+oo.celltype(5, 2).to_s
|
1427
|
+
#assert_equal "0.01:percentage",oo.cell(5, 3).to_s+":"+oo.celltype(5, 3).to_s
|
1428
|
+
# why do we get floats here? in the spreadsheet the cells were defined
|
1429
|
+
# to be percentage
|
1430
|
+
# TODO: should be fixed
|
1431
|
+
# the excel gem does not support the cell type 'percentage' these
|
1432
|
+
# cells are returned to be of the type float.
|
1433
|
+
assert_equal "0.01:float",oo.cell(5, 1).to_s+":"+oo.celltype(5, 1).to_s
|
1434
|
+
assert_equal "0.01:float",oo.cell(5, 2).to_s+":"+oo.celltype(5, 2).to_s
|
1435
|
+
assert_equal "0.01:float",oo.cell(5, 3).to_s+":"+oo.celltype(5, 3).to_s
|
1436
|
+
end
|
1410
1437
|
end
|
1411
1438
|
|
1412
|
-
def
|
1439
|
+
def test_formula_openoffice
|
1413
1440
|
if OPENOFFICE
|
1414
1441
|
oo = Openoffice.new(File.join("test","formula.ods"))
|
1415
1442
|
oo.default_sheet = oo.sheets.first
|
@@ -1429,16 +1456,17 @@ class TestRoo < Test::Unit::TestCase
|
|
1429
1456
|
[8, 2, "=SUM([.$A$1:.B7])"],
|
1430
1457
|
], oo.formulas(oo.sheets.first)
|
1431
1458
|
|
1432
|
-
|
1433
|
-
|
1434
|
-
|
1435
|
-
|
1436
|
-
|
1437
|
-
|
1438
|
-
|
1439
|
-
assert_equal 42.5, oo.cell('A',17)
|
1440
|
-
end
|
1459
|
+
# setting a cell
|
1460
|
+
oo.set('A',15, 41)
|
1461
|
+
assert_equal 41, oo.cell('A',15)
|
1462
|
+
oo.set('A',16, "41")
|
1463
|
+
assert_equal "41", oo.cell('A',16)
|
1464
|
+
oo.set('A',17, 42.5)
|
1465
|
+
assert_equal 42.5, oo.cell('A',17)
|
1441
1466
|
end
|
1467
|
+
end
|
1468
|
+
|
1469
|
+
def test_formula_excel
|
1442
1470
|
if defined? excel_supports_formulas
|
1443
1471
|
if EXCEL
|
1444
1472
|
oo = Excel.new(File.join("test","formula.xls"))
|
@@ -1459,18 +1487,18 @@ class TestRoo < Test::Unit::TestCase
|
|
1459
1487
|
[8, 2, " = SUM([.$A$1:.B7])"],
|
1460
1488
|
], oo.formulas
|
1461
1489
|
|
1462
|
-
|
1463
|
-
|
1464
|
-
|
1465
|
-
|
1466
|
-
|
1467
|
-
|
1468
|
-
|
1469
|
-
assert_equal 42.5, oo.cell('A',17)
|
1470
|
-
end
|
1490
|
+
# setting a cell
|
1491
|
+
oo.set('A',15, 41)
|
1492
|
+
assert_equal 41, oo.cell('A',15)
|
1493
|
+
oo.set('A',16, "41")
|
1494
|
+
assert_equal "41", oo.cell('A',16)
|
1495
|
+
oo.set('A',17, 42.5)
|
1496
|
+
assert_equal 42.5, oo.cell('A',17)
|
1471
1497
|
|
1472
1498
|
end
|
1473
1499
|
end
|
1500
|
+
end
|
1501
|
+
def test_formula_google
|
1474
1502
|
if GOOGLE
|
1475
1503
|
oo = Google.new(key_of("formula"))
|
1476
1504
|
oo.default_sheet = oo.sheets.first
|
@@ -1507,6 +1535,9 @@ class TestRoo < Test::Unit::TestCase
|
|
1507
1535
|
[8, 2, "=SUM(R1C1:R[-1]C)"]],
|
1508
1536
|
oo.formulas(oo.sheets.first)
|
1509
1537
|
end # GOOGLE
|
1538
|
+
end
|
1539
|
+
|
1540
|
+
def test_formula_excelx
|
1510
1541
|
if EXCELX
|
1511
1542
|
oo = Excelx.new(File.join("test","formula.xlsx"))
|
1512
1543
|
oo.default_sheet = oo.sheets.first
|
@@ -1518,8 +1549,9 @@ class TestRoo < Test::Unit::TestCase
|
|
1518
1549
|
assert_equal 6, oo.cell('A',6)
|
1519
1550
|
assert_equal 21, oo.cell('A',7)
|
1520
1551
|
assert_equal :formula, oo.celltype('A',7)
|
1521
|
-
after Date.new(
|
1552
|
+
after Date.new(2999,7,30) do
|
1522
1553
|
#steht nicht in Datei, oder?
|
1554
|
+
#nein, diesen Bezug habe ich nur in der Openoffice-Datei
|
1523
1555
|
assert_equal "=[Sheet2.A1]", oo.formula('C',7)
|
1524
1556
|
end
|
1525
1557
|
assert_nil oo.formula('A',6)
|
@@ -1534,15 +1566,13 @@ class TestRoo < Test::Unit::TestCase
|
|
1534
1566
|
# [8, 2, "=SUM([.$A$1:.B7])"],
|
1535
1567
|
], oo.formulas(oo.sheets.first)
|
1536
1568
|
|
1537
|
-
|
1538
|
-
|
1539
|
-
|
1540
|
-
|
1541
|
-
|
1542
|
-
|
1543
|
-
|
1544
|
-
assert_equal 42.5, oo.cell('A',17)
|
1545
|
-
end
|
1569
|
+
# setting a cell
|
1570
|
+
oo.set('A',15, 41)
|
1571
|
+
assert_equal 41, oo.cell('A',15)
|
1572
|
+
oo.set('A',16, "41")
|
1573
|
+
assert_equal "41", oo.cell('A',16)
|
1574
|
+
oo.set('A',17, 42.5)
|
1575
|
+
assert_equal 42.5, oo.cell('A',17)
|
1546
1576
|
end
|
1547
1577
|
end
|
1548
1578
|
|
@@ -1568,6 +1598,7 @@ class TestRoo < Test::Unit::TestCase
|
|
1568
1598
|
assert_equal 9, oo.last_column
|
1569
1599
|
end
|
1570
1600
|
end
|
1601
|
+
|
1571
1602
|
def test_borders_sheets_excel
|
1572
1603
|
if EXCEL
|
1573
1604
|
oo = Excel.new(File.join("test","borders.xls"))
|
@@ -1918,7 +1949,8 @@ class TestRoo < Test::Unit::TestCase
|
|
1918
1949
|
|
1919
1950
|
#TODO: xlsx-Datei anpassen!
|
1920
1951
|
def test_excelx_open_from_uri_and_zipped
|
1921
|
-
|
1952
|
+
#TODO: gezippte xlsx Datei online zum Testen suchen
|
1953
|
+
after Date.new(2999,6,30) do
|
1922
1954
|
if EXCELX
|
1923
1955
|
if ONLINE
|
1924
1956
|
url = 'http://stiny-leonhard.de/bode-v1.xlsx.zip'
|
@@ -1952,8 +1984,9 @@ class TestRoo < Test::Unit::TestCase
|
|
1952
1984
|
end
|
1953
1985
|
|
1954
1986
|
def test_excelx_zipped
|
1987
|
+
# TODO: bode...xls bei Gelegenheit nach .xlsx konverieren lassen und zippen!
|
1955
1988
|
if EXCELX
|
1956
|
-
after Date.new(
|
1989
|
+
after Date.new(2999,7,30) do
|
1957
1990
|
# diese Datei gibt es noch nicht gezippt
|
1958
1991
|
excel = Excelx.new(File.join("test","bode-v1.xlsx.zip"), :zip)
|
1959
1992
|
assert excel
|
@@ -2082,7 +2115,7 @@ class TestRoo < Test::Unit::TestCase
|
|
2082
2115
|
if EXCEL
|
2083
2116
|
assert_nothing_raised(Timeout::Error) {
|
2084
2117
|
Timeout::timeout(GLOBAL_TIMEOUT) do |timeout_length|
|
2085
|
-
File.
|
2118
|
+
File.delete_if_exist("/tmp/Bibelbund.csv")
|
2086
2119
|
oo = Excel.new(File.join("test","Bibelbund.xls"))
|
2087
2120
|
oo.default_sheet = oo.sheets.first
|
2088
2121
|
assert oo.to_csv("/tmp/Bibelbund.csv")
|
@@ -2099,7 +2132,7 @@ class TestRoo < Test::Unit::TestCase
|
|
2099
2132
|
if EXCELX
|
2100
2133
|
assert_nothing_raised(Timeout::Error) {
|
2101
2134
|
Timeout::timeout(GLOBAL_TIMEOUT) do |timeout_length|
|
2102
|
-
File.
|
2135
|
+
File.delete_if_exist("/tmp/Bibelbund.csv")
|
2103
2136
|
oo = Excelx.new(File.join("test","Bibelbund.xlsx"))
|
2104
2137
|
oo.default_sheet = oo.sheets.first
|
2105
2138
|
assert oo.to_csv("/tmp/Bibelbund.csv")
|
@@ -2109,27 +2142,25 @@ class TestRoo < Test::Unit::TestCase
|
|
2109
2142
|
}
|
2110
2143
|
end
|
2111
2144
|
end # LONG_RUN
|
2112
|
-
end
|
2145
|
+
end
|
2113
2146
|
|
2114
2147
|
def test_huge_document_to_csv_google
|
2115
2148
|
# maybe a better example... TODO:
|
2116
|
-
|
2117
|
-
|
2118
|
-
|
2119
|
-
|
2120
|
-
|
2121
|
-
|
2122
|
-
|
2123
|
-
|
2124
|
-
|
2125
|
-
|
2126
|
-
|
2127
|
-
|
2128
|
-
|
2129
|
-
|
2130
|
-
|
2131
|
-
end # GOOGLE
|
2132
|
-
end # after
|
2149
|
+
if GOOGLE and LONG_RUN
|
2150
|
+
assert_nothing_raised(Timeout::Error) {
|
2151
|
+
Timeout::timeout(GLOBAL_TIMEOUT) do |timeout_length|
|
2152
|
+
File.delete("/tmp/numbers1.csv") if File.exists?("/tmp/numbers1.csv")
|
2153
|
+
oo = Google.new(key_of('numbers1'))
|
2154
|
+
oo.default_sheet = oo.sheets.first
|
2155
|
+
#?? assert_equal "Tagebuch des Sekret\303\244rs. Letzte Tagung 15./16.11.75 Schweiz", oo.cell(45,'A')
|
2156
|
+
#?? assert_equal "Tagebuch des Sekret\303\244rs. Nachrichten aus Chile", oo.cell(46,'A')
|
2157
|
+
#?? assert_equal "Tagebuch aus Chile Juli 1977", oo.cell(55,'A')
|
2158
|
+
assert oo.to_csv("/tmp/numbers1.csv")
|
2159
|
+
assert File.exists?("/tmp/numbers1.csv")
|
2160
|
+
assert_equal "", `diff test/numbers1.csv /tmp/numbers1.csv`
|
2161
|
+
end # Timeout
|
2162
|
+
} # nothing_raised
|
2163
|
+
end # GOOGLE
|
2133
2164
|
end
|
2134
2165
|
|
2135
2166
|
def test_to_csv_openoffice
|
@@ -2174,7 +2205,7 @@ class TestRoo < Test::Unit::TestCase
|
|
2174
2205
|
|
2175
2206
|
#}
|
2176
2207
|
end
|
2177
|
-
end
|
2208
|
+
end
|
2178
2209
|
|
2179
2210
|
def test_to_csv_excelx
|
2180
2211
|
if EXCELX
|
@@ -2195,31 +2226,29 @@ class TestRoo < Test::Unit::TestCase
|
|
2195
2226
|
|
2196
2227
|
#}
|
2197
2228
|
end
|
2198
|
-
end
|
2229
|
+
end
|
2199
2230
|
|
2200
2231
|
def test_to_csv_google
|
2201
2232
|
# maybe a better example... TODO:
|
2202
|
-
|
2203
|
-
|
2204
|
-
|
2205
|
-
|
2206
|
-
|
2207
|
-
oo = Google.new(key_of('numbers1'))
|
2233
|
+
if GOOGLE
|
2234
|
+
#assert_nothing_raised(Timeout::Error) {
|
2235
|
+
Timeout::timeout(GLOBAL_TIMEOUT) do |timeout_length|
|
2236
|
+
File.delete_if_exist("/tmp/numbers1.csv") if File.exists?("/tmp/numbers1.csv")
|
2237
|
+
oo = Google.new(key_of('numbers1'))
|
2208
2238
|
|
2209
|
-
|
2210
|
-
|
2211
|
-
|
2212
|
-
|
2239
|
+
oo.default_sheet = oo.sheets.first
|
2240
|
+
assert oo.to_csv("/tmp/numbers1.csv")
|
2241
|
+
assert File.exists?("/tmp/numbers1.csv")
|
2242
|
+
assert_equal "", `diff test/numbers1.csv /tmp/numbers1.csv`
|
2213
2243
|
|
2214
|
-
|
2215
|
-
|
2216
|
-
|
2217
|
-
|
2244
|
+
# bug?, 2008-01-15 from Troy Davis
|
2245
|
+
assert oo.to_csv("/tmp/numbers1.csv",oo.sheets.first)
|
2246
|
+
assert File.exists?("/tmp/numbers1.csv")
|
2247
|
+
assert_equal "", `diff test/numbers1.csv /tmp/numbers1.csv`
|
2218
2248
|
|
2219
|
-
|
2220
|
-
|
2221
|
-
|
2222
|
-
end # after
|
2249
|
+
end # Timeout
|
2250
|
+
#} # nothing_raised
|
2251
|
+
end # GOOGLE
|
2223
2252
|
end
|
2224
2253
|
|
2225
2254
|
def test_bug_mehrere_datum
|
@@ -2507,15 +2536,13 @@ class TestRoo < Test::Unit::TestCase
|
|
2507
2536
|
end
|
2508
2537
|
|
2509
2538
|
def test_bug_empty_sheet_excelx
|
2510
|
-
|
2511
|
-
|
2512
|
-
|
2513
|
-
|
2514
|
-
|
2515
|
-
|
2516
|
-
|
2517
|
-
assert_equal "", `cat /tmp/emptysheet.csv`
|
2518
|
-
end
|
2539
|
+
if EXCELX
|
2540
|
+
oo = Excelx.new(File.join("test","formula.xlsx"))
|
2541
|
+
oo.default_sheet = 'Sheet3' # is an empty sheet
|
2542
|
+
assert_nothing_raised(NoMethodError) {
|
2543
|
+
oo.to_csv(File.join("/","tmp","emptysheet.csv"))
|
2544
|
+
}
|
2545
|
+
assert_equal "", `cat /tmp/emptysheet.csv`
|
2519
2546
|
end
|
2520
2547
|
end
|
2521
2548
|
|
@@ -2548,11 +2575,13 @@ class TestRoo < Test::Unit::TestCase
|
|
2548
2575
|
oo.default_sheet = oo.sheets.first
|
2549
2576
|
rec = oo.find 20
|
2550
2577
|
assert rec
|
2551
|
-
assert_equal "Brief aus dem Sekretariat", rec[0]
|
2578
|
+
#jetzt als Hash assert_equal "Brief aus dem Sekretariat", rec[0]
|
2579
|
+
assert_equal "Brief aus dem Sekretariat", rec[0]['TITEL']
|
2552
2580
|
|
2553
2581
|
rec = oo.find 22
|
2554
2582
|
assert rec
|
2555
|
-
assert_equal "Brief aus dem Skretariat. Tagung in Amberg/Opf.",rec[0]
|
2583
|
+
# assert_equal "Brief aus dem Skretariat. Tagung in Amberg/Opf.",rec[0]
|
2584
|
+
assert_equal "Brief aus dem Skretariat. Tagung in Amberg/Opf.",rec[0]['TITEL']
|
2556
2585
|
end
|
2557
2586
|
end
|
2558
2587
|
end
|
@@ -3053,16 +3082,18 @@ class TestRoo < Test::Unit::TestCase
|
|
3053
3082
|
end
|
3054
3083
|
|
3055
3084
|
def test_column_huge_document_excelx
|
3056
|
-
|
3057
|
-
if
|
3058
|
-
|
3059
|
-
Timeout::
|
3060
|
-
|
3061
|
-
|
3062
|
-
|
3063
|
-
|
3064
|
-
|
3065
|
-
|
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
|
3066
3097
|
end
|
3067
3098
|
end
|
3068
3099
|
end
|
@@ -3115,7 +3146,8 @@ class TestRoo < Test::Unit::TestCase
|
|
3115
3146
|
|
3116
3147
|
def test_simple_spreadsheet_find_by_condition_excelx
|
3117
3148
|
if EXCELX
|
3118
|
-
after Date.new(2008,7,
|
3149
|
+
after Date.new(2008,7,28)+10 do
|
3150
|
+
# die dezimalen Zeiten bekomme ich seltsamerweise als Date
|
3119
3151
|
oo = Excelx.new(File.join("test","simple_spreadsheet.xlsx"))
|
3120
3152
|
oo.default_sheet = oo.sheets.first
|
3121
3153
|
oo.header_line = 3
|
@@ -3124,6 +3156,14 @@ class TestRoo < Test::Unit::TestCase
|
|
3124
3156
|
#
|
3125
3157
|
#
|
3126
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]
|
3127
3167
|
# hier bekomme ich den celltype :time zurueck
|
3128
3168
|
assert_equal Date.new(2007,05,07), erg[1]['Date']
|
3129
3169
|
assert_equal 10.75 , erg[1]['Start time']
|
@@ -3169,42 +3209,37 @@ class TestRoo < Test::Unit::TestCase
|
|
3169
3209
|
end
|
3170
3210
|
|
3171
3211
|
def test_bug_false_borders_with_formulas
|
3172
|
-
|
3173
|
-
|
3174
|
-
|
3175
|
-
|
3176
|
-
|
3177
|
-
|
3178
|
-
assert_equal 1, ex.first_column
|
3179
|
-
assert_equal 4, ex.last_column
|
3180
|
-
end
|
3212
|
+
ex = Excel.new(File.join('test','false_encoding.xls'))
|
3213
|
+
ex.default_sheet = ex.sheets.first
|
3214
|
+
assert_equal 1, ex.first_row
|
3215
|
+
assert_equal 3, ex.last_row
|
3216
|
+
assert_equal 1, ex.first_column
|
3217
|
+
assert_equal 4, ex.last_column
|
3181
3218
|
end
|
3182
3219
|
|
3183
3220
|
def test_fe
|
3184
|
-
|
3185
|
-
|
3186
|
-
|
3187
|
-
|
3188
|
-
|
3189
|
-
#DOES NOT WORK IN EXCEL FILES: assert_equal '=TODAY()', ex.formula('a',1)
|
3221
|
+
ex = Excel.new(File.join('test','false_encoding.xls'))
|
3222
|
+
ex.default_sheet = ex.sheets.first
|
3223
|
+
#DOES NOT WORK IN EXCEL FILES: assert_equal Date.new(2007,11,1), ex.cell('a',1)
|
3224
|
+
#DOES NOT WORK IN EXCEL FILES: assert_equal true, ex.formula?('a',1)
|
3225
|
+
#DOES NOT WORK IN EXCEL FILES: assert_equal '=TODAY()', ex.formula('a',1)
|
3190
3226
|
|
3191
|
-
|
3192
|
-
|
3193
|
-
|
3227
|
+
#DOES NOT WORK IN EXCEL FILES: assert_equal Date.new(2008,2,9), ex.cell('B',1)
|
3228
|
+
#DOES NOT WORK IN EXCEL FILES: assert_equal true, ex.formula?('B',1)
|
3229
|
+
#DOES NOT WORK IN EXCEL FILES: assert_equal "=A1+100", ex.formula('B',1)
|
3194
3230
|
|
3195
|
-
|
3196
|
-
|
3197
|
-
|
3231
|
+
#DOES NOT WORK IN EXCEL FILES: assert_equal Date.new(2008,2,9), ex.cell('C',1)
|
3232
|
+
#DOES NOT WORK IN EXCEL FILES: assert_equal true, ex.formula?('C',1)
|
3233
|
+
#DOES NOT WORK IN EXCEL FILES: assert_equal "=C1", ex.formula('C',1)
|
3198
3234
|
|
3199
|
-
|
3200
|
-
|
3201
|
-
|
3202
|
-
|
3203
|
-
|
3204
|
-
|
3205
|
-
|
3206
|
-
|
3207
|
-
end
|
3235
|
+
assert_equal 'H1', ex.cell('A',2)
|
3236
|
+
assert_equal 'H2', ex.cell('B',2)
|
3237
|
+
assert_equal 'H3', ex.cell('C',2)
|
3238
|
+
assert_equal 'H4', ex.cell('D',2)
|
3239
|
+
assert_equal 'R1', ex.cell('A',3)
|
3240
|
+
assert_equal 'R2', ex.cell('B',3)
|
3241
|
+
assert_equal 'R3', ex.cell('C',3)
|
3242
|
+
assert_equal 'R4', ex.cell('D',3)
|
3208
3243
|
end
|
3209
3244
|
|
3210
3245
|
def test_excel_does_not_support_formulas
|
@@ -3574,31 +3609,27 @@ Sheet 3:
|
|
3574
3609
|
|
3575
3610
|
def test_date_time_to_csv_excel
|
3576
3611
|
if EXCEL
|
3577
|
-
|
3578
|
-
|
3579
|
-
|
3580
|
-
|
3581
|
-
|
3582
|
-
|
3583
|
-
|
3584
|
-
|
3585
|
-
assert_equal "", `diff test/time-test.csv /tmp/time-test.csv`
|
3586
|
-
end
|
3612
|
+
#ueberfluessige leere Zeilen werden am Ende noch angehaengt
|
3613
|
+
# last_row fehlerhaft?
|
3614
|
+
File.delete_if_exist("/tmp/time-test.csv")
|
3615
|
+
oo = Excel.new(File.join("test","time-test.xls"))
|
3616
|
+
oo.default_sheet = oo.sheets.first
|
3617
|
+
assert oo.to_csv("/tmp/time-test.csv")
|
3618
|
+
assert File.exists?("/tmp/time-test.csv")
|
3619
|
+
assert_equal "", `diff test/time-test.csv /tmp/time-test.csv`
|
3587
3620
|
end # EXCEL
|
3588
3621
|
end
|
3589
3622
|
|
3590
3623
|
def test_date_time_to_csv_excelx
|
3591
3624
|
if EXCELX
|
3592
|
-
|
3593
|
-
|
3594
|
-
|
3595
|
-
|
3596
|
-
|
3597
|
-
|
3598
|
-
|
3599
|
-
|
3600
|
-
assert_equal "", `diff test/time-test.csv /tmp/time-test.csv`
|
3601
|
-
end
|
3625
|
+
#ueberfluessige leere Zeilen werden am Ende noch angehaengt
|
3626
|
+
# last_row fehlerhaft?
|
3627
|
+
File.delete_if_exist("/tmp/time-test.csv")
|
3628
|
+
oo = Excelx.new(File.join("test","time-test.xlsx"))
|
3629
|
+
oo.default_sheet = oo.sheets.first
|
3630
|
+
assert oo.to_csv("/tmp/time-test.csv")
|
3631
|
+
assert File.exists?("/tmp/time-test.csv")
|
3632
|
+
assert_equal "", `diff test/time-test.csv /tmp/time-test.csv`
|
3602
3633
|
end # EXCELX
|
3603
3634
|
end
|
3604
3635
|
|
@@ -3655,33 +3686,51 @@ Sheet 3:
|
|
3655
3686
|
|
3656
3687
|
def test_no_remaining_tmp_files_openoffice
|
3657
3688
|
if OPENOFFICE
|
3658
|
-
|
3659
|
-
|
3660
|
-
|
3661
|
-
|
3662
|
-
|
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
|
3663
3700
|
end
|
3664
3701
|
end
|
3665
3702
|
|
3666
3703
|
def test_no_remaining_tmp_files_excel
|
3667
3704
|
if EXCEL
|
3668
|
-
|
3669
|
-
|
3670
|
-
|
3671
|
-
|
3672
|
-
|
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
|
3673
3716
|
end
|
3674
3717
|
end
|
3675
3718
|
|
3676
3719
|
def test_no_remaining_tmp_files_excelx
|
3677
3720
|
if EXCELX
|
3678
|
-
|
3679
|
-
|
3680
|
-
|
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)
|
3681
3729
|
|
3682
|
-
|
3683
|
-
|
3684
|
-
|
3730
|
+
}
|
3731
|
+
a=Dir.glob("oo_*")
|
3732
|
+
assert_equal [], a
|
3733
|
+
end
|
3685
3734
|
end
|
3686
3735
|
end
|
3687
3736
|
|
@@ -3695,387 +3744,77 @@ Sheet 3:
|
|
3695
3744
|
end
|
3696
3745
|
end
|
3697
3746
|
|
3698
|
-
|
3699
|
-
|
3700
|
-
|
3701
|
-
|
3702
|
-
|
3703
|
-
|
3747
|
+
# Erstellt eine Liste aller Zellen im Spreadsheet. Dies ist nötig, weil ein einfacher
|
3748
|
+
# Textvergleich des XML-Outputs nicht funktioniert, da xml-builder die Attribute
|
3749
|
+
# nicht immer in der gleichen Reihenfolge erzeugt.
|
3750
|
+
def init_all_cells(oo,sheet)
|
3751
|
+
all = []
|
3752
|
+
oo.first_row(sheet).upto(oo.last_row(sheet)) do |row|
|
3753
|
+
oo.first_column(sheet).upto(oo.last_column(sheet)) do |col|
|
3754
|
+
unless oo.empty?(row,col,sheet)
|
3755
|
+
all << {:row => row.to_s,
|
3756
|
+
:column => col.to_s,
|
3757
|
+
:content => oo.cell(row,col,sheet).to_s,
|
3758
|
+
:type => oo.celltype(row,col,sheet).to_s,
|
3759
|
+
}
|
3760
|
+
end
|
3761
|
+
end
|
3762
|
+
end
|
3763
|
+
all
|
3764
|
+
end
|
3765
|
+
|
3766
|
+
def do_test_xml(oo)
|
3767
|
+
assert_nothing_raised {oo.to_xml}
|
3768
|
+
sheetname = oo.sheets.first
|
3769
|
+
doc = REXML::Document.new(oo.to_xml)
|
3770
|
+
doc.root.each_element {|xml_sheet|
|
3771
|
+
all_cells = init_all_cells(oo, sheetname)
|
3772
|
+
x = 0
|
3773
|
+
assert_equal sheetname, xml_sheet.attributes['name']
|
3774
|
+
xml_sheet.each_element {|cell|
|
3775
|
+
expected = [all_cells[x][:row],
|
3776
|
+
all_cells[x][:column],
|
3777
|
+
all_cells[x][:content],
|
3778
|
+
all_cells[x][:type],
|
3779
|
+
]
|
3780
|
+
result = [
|
3781
|
+
cell.attributes['row'],
|
3782
|
+
cell.attributes['column'],
|
3783
|
+
cell.text,
|
3784
|
+
cell.attributes['type'],
|
3785
|
+
]
|
3786
|
+
assert_equal expected, result
|
3787
|
+
x += 1
|
3788
|
+
} # end of sheet
|
3789
|
+
sheetname = oo.sheets[oo.sheets.index(sheetname)+1]
|
3790
|
+
}
|
3704
3791
|
end
|
3705
3792
|
|
3706
3793
|
def test_to_xml_openoffice
|
3707
|
-
|
3708
|
-
|
3709
|
-
|
3710
|
-
expected = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n"+
|
3711
|
-
"<sheet name=\"Tabelle1\">\n"+
|
3712
|
-
emit_cell(1,1,"float","1.0")+
|
3713
|
-
emit_cell(1,2,'float','2.0')+
|
3714
|
-
emit_cell(1,3,'float','3.0')+
|
3715
|
-
emit_cell(1,4,'float','4.0')+
|
3716
|
-
emit_cell(1,5,'formula','10.0')+
|
3717
|
-
emit_cell(2,1,'float','5.0')+
|
3718
|
-
emit_cell(2,2,'float','6.0')+
|
3719
|
-
emit_cell(2,3,'float','7.0')+
|
3720
|
-
emit_cell(2,4,'float','8.0')+
|
3721
|
-
emit_cell(2,5,'float','9.0')+
|
3722
|
-
emit_cell(2,6,'string','test')+
|
3723
|
-
emit_cell(2,7,'float','11.0')+
|
3724
|
-
emit_cell(4, 1, "float", "10.0")+
|
3725
|
-
emit_cell(4, 2, "float", "11.0")+
|
3726
|
-
emit_cell(4, 3, "float", "12.0")+
|
3727
|
-
emit_cell(4, 4, "float", "13.0")+
|
3728
|
-
emit_cell(4, 5, "float", "14.0")+
|
3729
|
-
emit_cell(5, 1, "date", "1961-11-21")+
|
3730
|
-
emit_cell(6, 1, "string", "tata")+
|
3731
|
-
emit_cell(8, 3, "string", "thisisc8")+
|
3732
|
-
emit_cell(9,4, "string", "thisisd9")+
|
3733
|
-
emit_cell(11, 1, "string", "thisisa11")+
|
3734
|
-
emit_cell(12, 1, "float", "41.0")+
|
3735
|
-
emit_cell(12, 2, "float", "42.0")+
|
3736
|
-
emit_cell(12, 3, "float", "43.0")+
|
3737
|
-
emit_cell(12, 4, "float", "44.0")+
|
3738
|
-
emit_cell(12, 5, "float", "45.0")+
|
3739
|
-
emit_cell(15, 1, "float", "41.0")+
|
3740
|
-
emit_cell(15, 2, "float", "42.0")+
|
3741
|
-
emit_cell(15, 3, "float", "43.0")+
|
3742
|
-
emit_cell(15, 4, "float", "44.0")+
|
3743
|
-
emit_cell(15, 5, "float", "45.0")+
|
3744
|
-
emit_cell(16, 1, "string", "einundvierzig")+
|
3745
|
-
emit_cell(16, 2, "string", "zweiundvierzig")+
|
3746
|
-
emit_cell(16, 3, "string", "dreiundvierzig")+
|
3747
|
-
emit_cell(16, 4, "string", "vierundvierzig")+
|
3748
|
-
emit_cell(16, 5, "string", "fuenfundvierzig")+
|
3749
|
-
emit_cell(18, 1, "date", "2007-05-31")+
|
3750
|
-
emit_cell(18, 2, "string", "dies hier als Date-Objekt")+
|
3751
|
-
"</sheet>\n"+
|
3752
|
-
"<sheet name=\"Name of Sheet 2\">\n"+
|
3753
|
-
emit_cell(5, 3, "string", "I am sheet 2")+
|
3754
|
-
emit_cell(7, 2, "float", "3.0")+
|
3755
|
-
emit_cell(10, 5, "float", "7.0")+
|
3756
|
-
emit_cell(14, 4, "float", "9.0")+
|
3757
|
-
"</sheet>\n"+
|
3758
|
-
"<sheet name=\"Sheet3\">\n"+
|
3759
|
-
emit_cell(1, 1, "string", "ganz weit rechts geht’s weiter")+
|
3760
|
-
emit_cell(1, GenericSpreadsheet.letter_to_number('AA'), "string", "i am AA")+
|
3761
|
-
emit_cell(1, GenericSpreadsheet.letter_to_number('AB'), "string", "i am AB")+
|
3762
|
-
emit_cell(1, GenericSpreadsheet.letter_to_number('BA'), "string", "i am BA")+
|
3763
|
-
"</sheet>\n"+
|
3764
|
-
"<sheet name=\"Sheet4\">\n"+
|
3765
|
-
emit_cell(1, 1, "date", "2007-06-16")+
|
3766
|
-
emit_cell(1, 2, "float", "10.0")+
|
3767
|
-
emit_cell(1, 3, "float", "10.0")+
|
3768
|
-
emit_cell(1, 4, "float", "10.0")+
|
3769
|
-
emit_cell(1, 5, "float", "10.0")+
|
3770
|
-
"</sheet>\n"+
|
3771
|
-
"<sheet name=\"Sheet5\">\n"+
|
3772
|
-
emit_cell(1, 1, "float", "1.0")+
|
3773
|
-
emit_cell(1, 2, "float", "5.0")+
|
3774
|
-
emit_cell(1, 3, "float", "5.0")+
|
3775
|
-
emit_cell(2, 1, "float", "2.0")+
|
3776
|
-
emit_cell(3, 1, "float", "3.0")+
|
3777
|
-
emit_cell(4, 1, "date", "2007-11-21")+
|
3778
|
-
emit_cell(4, 2, "date", "2007-11-21")+
|
3779
|
-
emit_cell(4, 3, "date", "2007-11-21")+
|
3780
|
-
emit_cell(4, 4, "date", "2007-11-21")+
|
3781
|
-
emit_cell(4, 5, "date", "2007-11-21")+
|
3782
|
-
emit_cell(5, 1, "float", "42.0")+
|
3783
|
-
emit_cell(5, 2, "float", "42.0")+
|
3784
|
-
emit_cell(5, 3, "float", "42.0")+
|
3785
|
-
emit_cell(5, 4, "float", "42.0")+
|
3786
|
-
emit_cell(5, 5, "float", "42.0")+
|
3787
|
-
emit_cell(6, 1, "string", "ABC")+
|
3788
|
-
emit_cell(6, 2, "string", "ABC")+
|
3789
|
-
emit_cell(6, 3, "string", "ABC")+
|
3790
|
-
emit_cell(6, 4, "string", "ABC")+
|
3791
|
-
emit_cell(6, 5, "string", "ABC")+
|
3792
|
-
"</sheet>\n"+
|
3793
|
-
""
|
3794
|
-
# oo.default_sheet = oo.sheets.first
|
3795
|
-
assert_equal expected, oo.to_xml
|
3796
|
-
end
|
3794
|
+
if OPENOFFICE
|
3795
|
+
oo = Openoffice.new(File.join('test','numbers1.ods'))
|
3796
|
+
do_test_xml(oo)
|
3797
3797
|
end
|
3798
3798
|
end
|
3799
3799
|
|
3800
3800
|
def test_to_xml_excel
|
3801
|
-
|
3802
|
-
|
3803
|
-
|
3804
|
-
expected = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n"+
|
3805
|
-
"<sheet name=\"Tabelle1\">\n"+
|
3806
|
-
emit_cell(1,1,"float","1.0")+
|
3807
|
-
emit_cell(1,2,'float','2.0')+
|
3808
|
-
emit_cell(1,3,'float','3.0')+
|
3809
|
-
emit_cell(1,4,'float','4.0')+
|
3810
|
-
emit_cell(1,5,'formula','10.0')+
|
3811
|
-
emit_cell(2,1,'float','5.0')+
|
3812
|
-
emit_cell(2,2,'float','6.0')+
|
3813
|
-
emit_cell(2,3,'float','7.0')+
|
3814
|
-
emit_cell(2,4,'float','8.0')+
|
3815
|
-
emit_cell(2,5,'float','9.0')+
|
3816
|
-
emit_cell(2,6,'string','test')+
|
3817
|
-
emit_cell(2,7,'float','11.0')+
|
3818
|
-
emit_cell(4, 1, "float", "10.0")+
|
3819
|
-
emit_cell(4, 2, "float", "11.0")+
|
3820
|
-
emit_cell(4, 3, "float", "12.0")+
|
3821
|
-
emit_cell(4, 4, "float", "13.0")+
|
3822
|
-
emit_cell(4, 5, "float", "14.0")+
|
3823
|
-
emit_cell(5, 1, "date", "1961-11-21")+
|
3824
|
-
emit_cell(6, 1, "string", "tata")+
|
3825
|
-
emit_cell(8, 3, "string", "thisisc8")+
|
3826
|
-
emit_cell(9,4, "string", "thisisd9")+
|
3827
|
-
emit_cell(11, 1, "string", "thisisa11")+
|
3828
|
-
emit_cell(12, 1, "float", "41.0")+
|
3829
|
-
emit_cell(12, 2, "float", "42.0")+
|
3830
|
-
emit_cell(12, 3, "float", "43.0")+
|
3831
|
-
emit_cell(12, 4, "float", "44.0")+
|
3832
|
-
emit_cell(12, 5, "float", "45.0")+
|
3833
|
-
emit_cell(15, 1, "float", "41.0")+
|
3834
|
-
emit_cell(15, 2, "float", "42.0")+
|
3835
|
-
emit_cell(15, 3, "float", "43.0")+
|
3836
|
-
emit_cell(15, 4, "float", "44.0")+
|
3837
|
-
emit_cell(15, 5, "float", "45.0")+
|
3838
|
-
emit_cell(16, 1, "string", "einundvierzig")+
|
3839
|
-
emit_cell(16, 2, "string", "zweiundvierzig")+
|
3840
|
-
emit_cell(16, 3, "string", "dreiundvierzig")+
|
3841
|
-
emit_cell(16, 4, "string", "vierundvierzig")+
|
3842
|
-
emit_cell(16, 5, "string", "fuenfundvierzig")+
|
3843
|
-
emit_cell(18, 1, "date", "2007-05-31")+
|
3844
|
-
emit_cell(18, 2, "string", "dies hier als Date-Objekt")+
|
3845
|
-
"</sheet>\n"+
|
3846
|
-
"<sheet name=\"Name of Sheet 2\">\n"+
|
3847
|
-
emit_cell(5, 3, "string", "I am sheet 2")+
|
3848
|
-
emit_cell(7, 2, "float", "3.0")+
|
3849
|
-
emit_cell(10, 5, "float", "7.0")+
|
3850
|
-
emit_cell(14, 4, "float", "9.0")+
|
3851
|
-
"</sheet>\n"+
|
3852
|
-
"<sheet name=\"Sheet3\">\n"+
|
3853
|
-
emit_cell(1, 1, "string", "ganz weit rechts geht’s weiter")+
|
3854
|
-
emit_cell(1, GenericSpreadsheet.letter_to_number('AA'), "string", "i am AA")+
|
3855
|
-
emit_cell(1, GenericSpreadsheet.letter_to_number('AB'), "string", "i am AB")+
|
3856
|
-
emit_cell(1, GenericSpreadsheet.letter_to_number('BA'), "string", "i am BA")+
|
3857
|
-
"</sheet>\n"+
|
3858
|
-
"<sheet name=\"Sheet4\">\n"+
|
3859
|
-
emit_cell(1, 1, "date", "2007-06-16")+
|
3860
|
-
emit_cell(1, 2, "float", "10.0")+
|
3861
|
-
emit_cell(1, 3, "float", "10.0")+
|
3862
|
-
emit_cell(1, 4, "float", "10.0")+
|
3863
|
-
emit_cell(1, 5, "float", "10.0")+
|
3864
|
-
"</sheet>\n"+
|
3865
|
-
"<sheet name=\"Sheet5\">\n"+
|
3866
|
-
emit_cell(1, 1, "float", "1.0")+
|
3867
|
-
emit_cell(1, 2, "float", "5.0")+
|
3868
|
-
emit_cell(1, 3, "float", "5.0")+
|
3869
|
-
emit_cell(2, 1, "float", "2.0")+
|
3870
|
-
emit_cell(3, 1, "float", "3.0")+
|
3871
|
-
emit_cell(4, 1, "date", "2007-11-21")+
|
3872
|
-
emit_cell(4, 2, "date", "2007-11-21")+
|
3873
|
-
emit_cell(4, 3, "date", "2007-11-21")+
|
3874
|
-
emit_cell(4, 4, "date", "2007-11-21")+
|
3875
|
-
emit_cell(4, 5, "date", "2007-11-21")+
|
3876
|
-
emit_cell(5, 1, "float", "42.0")+
|
3877
|
-
emit_cell(5, 2, "float", "42.0")+
|
3878
|
-
emit_cell(5, 3, "float", "42.0")+
|
3879
|
-
emit_cell(5, 4, "float", "42.0")+
|
3880
|
-
emit_cell(5, 5, "float", "42.0")+
|
3881
|
-
emit_cell(6, 1, "string", "ABC")+
|
3882
|
-
emit_cell(6, 2, "string", "ABC")+
|
3883
|
-
emit_cell(6, 3, "string", "ABC")+
|
3884
|
-
emit_cell(6, 4, "string", "ABC")+
|
3885
|
-
emit_cell(6, 5, "string", "ABC")+
|
3886
|
-
"</sheet>\n"+
|
3887
|
-
""
|
3888
|
-
# oo.default_sheet = oo.sheets.first
|
3889
|
-
assert_equal expected, oo.to_xml
|
3890
|
-
end
|
3801
|
+
if EXCEL
|
3802
|
+
oo = Excel.new(File.join('test','numbers1.xls'))
|
3803
|
+
do_test_xml(oo)
|
3891
3804
|
end
|
3892
3805
|
end
|
3893
3806
|
|
3894
3807
|
def test_to_xml_excelx
|
3895
|
-
|
3896
|
-
|
3897
|
-
|
3898
|
-
expected = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n"+
|
3899
|
-
"<sheet name=\"Tabelle1\">\n"+
|
3900
|
-
emit_cell(1,1,"float","1.0")+
|
3901
|
-
emit_cell(1,2,'float','2.0')+
|
3902
|
-
emit_cell(1,3,'float','3.0')+
|
3903
|
-
emit_cell(1,4,'float','4.0')+
|
3904
|
-
emit_cell(1,5,'formula','10.0')+
|
3905
|
-
emit_cell(2,1,'float','5.0')+
|
3906
|
-
emit_cell(2,2,'float','6.0')+
|
3907
|
-
emit_cell(2,3,'float','7.0')+
|
3908
|
-
emit_cell(2,4,'float','8.0')+
|
3909
|
-
emit_cell(2,5,'float','9.0')+
|
3910
|
-
emit_cell(2,6,'string','test')+
|
3911
|
-
emit_cell(2,7,'float','11.0')+
|
3912
|
-
emit_cell(4, 1, "float", "10.0")+
|
3913
|
-
emit_cell(4, 2, "float", "11.0")+
|
3914
|
-
emit_cell(4, 3, "float", "12.0")+
|
3915
|
-
emit_cell(4, 4, "float", "13.0")+
|
3916
|
-
emit_cell(4, 5, "float", "14.0")+
|
3917
|
-
emit_cell(5, 1, "date", "1961-11-21")+
|
3918
|
-
emit_cell(6, 1, "string", "tata")+
|
3919
|
-
emit_cell(8, 3, "string", "thisisc8")+
|
3920
|
-
emit_cell(9,4, "string", "thisisd9")+
|
3921
|
-
emit_cell(11, 1, "string", "thisisa11")+
|
3922
|
-
emit_cell(12, 1, "float", "41.0")+
|
3923
|
-
emit_cell(12, 2, "float", "42.0")+
|
3924
|
-
emit_cell(12, 3, "float", "43.0")+
|
3925
|
-
emit_cell(12, 4, "float", "44.0")+
|
3926
|
-
emit_cell(12, 5, "float", "45.0")+
|
3927
|
-
emit_cell(15, 1, "float", "41.0")+
|
3928
|
-
emit_cell(15, 2, "float", "42.0")+
|
3929
|
-
emit_cell(15, 3, "float", "43.0")+
|
3930
|
-
emit_cell(15, 4, "float", "44.0")+
|
3931
|
-
emit_cell(15, 5, "float", "45.0")+
|
3932
|
-
emit_cell(16, 1, "string", "einundvierzig")+
|
3933
|
-
emit_cell(16, 2, "string", "zweiundvierzig")+
|
3934
|
-
emit_cell(16, 3, "string", "dreiundvierzig")+
|
3935
|
-
emit_cell(16, 4, "string", "vierundvierzig")+
|
3936
|
-
emit_cell(16, 5, "string", "fuenfundvierzig")+
|
3937
|
-
emit_cell(18, 1, "date", "2007-05-31")+
|
3938
|
-
emit_cell(18, 2, "string", "dies hier als Date-Objekt")+
|
3939
|
-
"</sheet>\n"+
|
3940
|
-
"<sheet name=\"Name of Sheet 2\">\n"+
|
3941
|
-
emit_cell(5, 3, "string", "I am sheet 2")+
|
3942
|
-
emit_cell(7, 2, "float", "3.0")+
|
3943
|
-
emit_cell(10, 5, "float", "7.0")+
|
3944
|
-
emit_cell(14, 4, "float", "9.0")+
|
3945
|
-
"</sheet>\n"+
|
3946
|
-
"<sheet name=\"Sheet3\">\n"+
|
3947
|
-
emit_cell(1, 1, "string", "ganz weit rechts geht’s weiter")+
|
3948
|
-
emit_cell(1, GenericSpreadsheet.letter_to_number('AA'), "string", "i am AA")+
|
3949
|
-
emit_cell(1, GenericSpreadsheet.letter_to_number('AB'), "string", "i am AB")+
|
3950
|
-
emit_cell(1, GenericSpreadsheet.letter_to_number('BA'), "string", "i am BA")+
|
3951
|
-
"</sheet>\n"+
|
3952
|
-
"<sheet name=\"Sheet4\">\n"+
|
3953
|
-
emit_cell(1, 1, "date", "2007-06-16")+
|
3954
|
-
emit_cell(1, 2, "float", "10.0")+
|
3955
|
-
emit_cell(1, 3, "float", "10.0")+
|
3956
|
-
emit_cell(1, 4, "float", "10.0")+
|
3957
|
-
emit_cell(1, 5, "float", "10.0")+
|
3958
|
-
"</sheet>\n"+
|
3959
|
-
"<sheet name=\"Sheet5\">\n"+
|
3960
|
-
emit_cell(1, 1, "float", "1.0")+
|
3961
|
-
emit_cell(1, 2, "float", "5.0")+
|
3962
|
-
emit_cell(1, 3, "float", "5.0")+
|
3963
|
-
emit_cell(2, 1, "float", "2.0")+
|
3964
|
-
emit_cell(3, 1, "float", "3.0")+
|
3965
|
-
emit_cell(4, 1, "date", "2007-11-21")+
|
3966
|
-
emit_cell(4, 2, "date", "2007-11-21")+
|
3967
|
-
emit_cell(4, 3, "date", "2007-11-21")+
|
3968
|
-
emit_cell(4, 4, "date", "2007-11-21")+
|
3969
|
-
emit_cell(4, 5, "date", "2007-11-21")+
|
3970
|
-
emit_cell(5, 1, "float", "42.0")+
|
3971
|
-
emit_cell(5, 2, "float", "42.0")+
|
3972
|
-
emit_cell(5, 3, "float", "42.0")+
|
3973
|
-
emit_cell(5, 4, "float", "42.0")+
|
3974
|
-
emit_cell(5, 5, "float", "42.0")+
|
3975
|
-
emit_cell(6, 1, "string", "ABC")+
|
3976
|
-
emit_cell(6, 2, "string", "ABC")+
|
3977
|
-
emit_cell(6, 3, "string", "ABC")+
|
3978
|
-
emit_cell(6, 4, "string", "ABC")+
|
3979
|
-
emit_cell(6, 5, "string", "ABC")+
|
3980
|
-
"</sheet>\n"+
|
3981
|
-
""
|
3982
|
-
# oo.default_sheet = oo.sheets.first
|
3983
|
-
assert_equal expected, oo.to_xml
|
3984
|
-
end
|
3808
|
+
if EXCELX
|
3809
|
+
oo = Excelx.new(File.join('test','numbers1.xlsx'))
|
3810
|
+
do_test_xml(oo)
|
3985
3811
|
end
|
3986
3812
|
end
|
3987
3813
|
|
3988
3814
|
def test_to_xml_google
|
3989
|
-
|
3990
|
-
|
3991
|
-
|
3992
|
-
expected = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n"+
|
3993
|
-
"<sheet name=\"Tabelle1\">\n"+
|
3994
|
-
emit_cell(1,1,"float","1.0")+
|
3995
|
-
emit_cell(1,2,'float','2.0')+
|
3996
|
-
emit_cell(1,3,'float','3.0')+
|
3997
|
-
emit_cell(1,4,'float','4.0')+
|
3998
|
-
emit_cell(1,5,'formula','10.0')+
|
3999
|
-
emit_cell(2,1,'float','5.0')+
|
4000
|
-
emit_cell(2,2,'float','6.0')+
|
4001
|
-
emit_cell(2,3,'float','7.0')+
|
4002
|
-
emit_cell(2,4,'float','8.0')+
|
4003
|
-
emit_cell(2,5,'float','9.0')+
|
4004
|
-
emit_cell(2,6,'string','test')+
|
4005
|
-
emit_cell(2,7,'float','11.0')+
|
4006
|
-
emit_cell(4, 1, "float", "10.0")+
|
4007
|
-
emit_cell(4, 2, "float", "11.0")+
|
4008
|
-
emit_cell(4, 3, "float", "12.0")+
|
4009
|
-
emit_cell(4, 4, "float", "13.0")+
|
4010
|
-
emit_cell(4, 5, "float", "14.0")+
|
4011
|
-
emit_cell(5, 1, "date", "1961-11-21")+
|
4012
|
-
emit_cell(6, 1, "string", "tata")+
|
4013
|
-
emit_cell(8, 3, "string", "thisisc8")+
|
4014
|
-
emit_cell(9,4, "string", "thisisd9")+
|
4015
|
-
emit_cell(11, 1, "string", "thisisa11")+
|
4016
|
-
emit_cell(12, 1, "float", "41.0")+
|
4017
|
-
emit_cell(12, 2, "float", "42.0")+
|
4018
|
-
emit_cell(12, 3, "float", "43.0")+
|
4019
|
-
emit_cell(12, 4, "float", "44.0")+
|
4020
|
-
emit_cell(12, 5, "float", "45.0")+
|
4021
|
-
emit_cell(15, 1, "float", "41.0")+
|
4022
|
-
emit_cell(15, 2, "float", "42.0")+
|
4023
|
-
emit_cell(15, 3, "float", "43.0")+
|
4024
|
-
emit_cell(15, 4, "float", "44.0")+
|
4025
|
-
emit_cell(15, 5, "float", "45.0")+
|
4026
|
-
emit_cell(16, 1, "string", "einundvierzig")+
|
4027
|
-
emit_cell(16, 2, "string", "zweiundvierzig")+
|
4028
|
-
emit_cell(16, 3, "string", "dreiundvierzig")+
|
4029
|
-
emit_cell(16, 4, "string", "vierundvierzig")+
|
4030
|
-
emit_cell(16, 5, "string", "fuenfundvierzig")+
|
4031
|
-
emit_cell(18, 1, "date", "2007-05-31")+
|
4032
|
-
emit_cell(18, 2, "string", "dies hier als Date-Objekt")+
|
4033
|
-
"</sheet>\n"+
|
4034
|
-
"<sheet name=\"Name of Sheet 2\">\n"+
|
4035
|
-
emit_cell(5, 3, "string", "I am sheet 2")+
|
4036
|
-
emit_cell(7, 2, "float", "3.0")+
|
4037
|
-
emit_cell(10, 5, "float", "7.0")+
|
4038
|
-
emit_cell(14, 4, "float", "9.0")+
|
4039
|
-
"</sheet>\n"+
|
4040
|
-
"<sheet name=\"Sheet3\">\n"+
|
4041
|
-
emit_cell(1, 1, "string", "ganz weit rechts geht’s weiter")+
|
4042
|
-
emit_cell(1, GenericSpreadsheet.letter_to_number('AA'), "string", "i am AA")+
|
4043
|
-
emit_cell(1, GenericSpreadsheet.letter_to_number('AB'), "string", "i am AB")+
|
4044
|
-
emit_cell(1, GenericSpreadsheet.letter_to_number('BA'), "string", "i am BA")+
|
4045
|
-
"</sheet>\n"+
|
4046
|
-
"<sheet name=\"Sheet4\">\n"+
|
4047
|
-
emit_cell(1, 1, "date", "2007-06-16")+
|
4048
|
-
emit_cell(1, 2, "float", "10.0")+
|
4049
|
-
emit_cell(1, 3, "float", "10.0")+
|
4050
|
-
emit_cell(1, 4, "float", "10.0")+
|
4051
|
-
emit_cell(1, 5, "float", "10.0")+
|
4052
|
-
"</sheet>\n"+
|
4053
|
-
"<sheet name=\"Sheet5\">\n"+
|
4054
|
-
emit_cell(1, 1, "float", "1.0")+
|
4055
|
-
emit_cell(1, 2, "float", "5.0")+
|
4056
|
-
emit_cell(1, 3, "float", "5.0")+
|
4057
|
-
emit_cell(2, 1, "float", "2.0")+
|
4058
|
-
emit_cell(3, 1, "float", "3.0")+
|
4059
|
-
emit_cell(4, 1, "date", "2007-11-21")+
|
4060
|
-
emit_cell(4, 2, "date", "2007-11-21")+
|
4061
|
-
emit_cell(4, 3, "date", "2007-11-21")+
|
4062
|
-
emit_cell(4, 4, "date", "2007-11-21")+
|
4063
|
-
emit_cell(4, 5, "date", "2007-11-21")+
|
4064
|
-
emit_cell(5, 1, "float", "42.0")+
|
4065
|
-
emit_cell(5, 2, "float", "42.0")+
|
4066
|
-
emit_cell(5, 3, "float", "42.0")+
|
4067
|
-
emit_cell(5, 4, "float", "42.0")+
|
4068
|
-
emit_cell(5, 5, "float", "42.0")+
|
4069
|
-
emit_cell(6, 1, "string", "ABC")+
|
4070
|
-
emit_cell(6, 2, "string", "ABC")+
|
4071
|
-
emit_cell(6, 3, "string", "ABC")+
|
4072
|
-
emit_cell(6, 4, "string", "ABC")+
|
4073
|
-
emit_cell(6, 5, "string", "ABC")+
|
4074
|
-
"</sheet>\n"+
|
4075
|
-
""
|
4076
|
-
# oo.default_sheet = oo.sheets.first
|
4077
|
-
assert_equal expected, oo.to_xml
|
4078
|
-
end
|
3815
|
+
if GOOGLE
|
3816
|
+
oo = Google.new(key_of(File.join('test','numbers1.xlsx')))
|
3817
|
+
do_test_xml(oo)
|
4079
3818
|
end
|
4080
3819
|
end
|
4081
3820
|
|
@@ -4099,17 +3838,31 @@ Sheet 3:
|
|
4099
3838
|
end
|
4100
3839
|
|
4101
3840
|
def test_bug_c2
|
4102
|
-
|
4103
|
-
|
4104
|
-
|
4105
|
-
|
4106
|
-
|
4107
|
-
|
4108
|
-
|
3841
|
+
local_only do
|
3842
|
+
after Date.new(2008,7,26)+10 do
|
3843
|
+
expected = ['Supermodel X','T6','Shaun White','Jeremy','Custom',
|
3844
|
+
'Warhol','Twin','Malolo','Supermodel','Air','Elite',
|
3845
|
+
'King','Dominant','Dominant Slick','Blunt','Clash',
|
3846
|
+
'Bullet','Tadashi Fuse','Jussi','Royale','S-Series',
|
3847
|
+
'Fish','Love','Feelgood ES','Feelgood','GTwin','Troop',
|
3848
|
+
'Lux','Stigma','Feather','Stria','Alpha','Feelgood ICS']
|
3849
|
+
result = []
|
3850
|
+
@e = Excel.new(File.join('test',"problem.xls"))
|
3851
|
+
@e.sheets[2..@e.sheets.length].each do |s|
|
3852
|
+
#(13..13).each do |s|
|
3853
|
+
@e.default_sheet = s
|
3854
|
+
name = @e.cell(2,'C')
|
3855
|
+
result << name
|
3856
|
+
#puts "#{name} (sheet: #{s})"
|
3857
|
+
#assert_equal "whatever (sheet: 13)", "#{name} (sheet: #{s})"
|
3858
|
+
end
|
3859
|
+
assert_equal expected, result
|
4109
3860
|
end
|
3861
|
+
end
|
4110
3862
|
end
|
4111
3863
|
|
4112
3864
|
def test_bug_c2_parseexcel
|
3865
|
+
local_only do
|
4113
3866
|
#-- this is OK
|
4114
3867
|
@workbook = Spreadsheet::ParseExcel.parse(File.join('test',"problem.xls"))
|
4115
3868
|
worksheet = @workbook.worksheet(11)
|
@@ -4129,50 +3882,321 @@ Sheet 3:
|
|
4129
3882
|
line += 1
|
4130
3883
|
}
|
4131
3884
|
#-- worksheet 12 does not work
|
4132
|
-
|
4133
|
-
|
4134
|
-
|
4135
|
-
|
4136
|
-
|
4137
|
-
|
4138
|
-
|
4139
|
-
|
4140
|
-
if
|
4141
|
-
|
3885
|
+
after Date.new(2008,7,23)+10 do
|
3886
|
+
@workbook = Spreadsheet::ParseExcel.parse(File.join('test',"problem.xls"))
|
3887
|
+
worksheet = @workbook.worksheet(12)
|
3888
|
+
skip = 0
|
3889
|
+
line = 1
|
3890
|
+
row = 2
|
3891
|
+
col = 3
|
3892
|
+
worksheet.each(skip) { |row_par|
|
3893
|
+
if line == row
|
3894
|
+
if row_par == nil
|
3895
|
+
raise "nil"
|
3896
|
+
end
|
3897
|
+
cell = row_par.at(col-1)
|
3898
|
+
assert cell, "cell should not be nil"
|
3899
|
+
assert_equal "Elite", cell.to_s('utf-8')
|
4142
3900
|
end
|
4143
|
-
|
4144
|
-
|
4145
|
-
|
4146
|
-
|
4147
|
-
line += 1
|
4148
|
-
}
|
3901
|
+
line += 1
|
3902
|
+
}
|
3903
|
+
end
|
3904
|
+
end
|
4149
3905
|
end
|
4150
3906
|
|
4151
3907
|
def test_bug_c2_excelx
|
4152
|
-
|
4153
|
-
|
4154
|
-
|
4155
|
-
|
4156
|
-
|
4157
|
-
|
4158
|
-
|
4159
|
-
result
|
4160
|
-
|
4161
|
-
|
4162
|
-
|
4163
|
-
|
4164
|
-
|
4165
|
-
|
4166
|
-
|
4167
|
-
|
4168
|
-
|
4169
|
-
|
4170
|
-
|
4171
|
-
|
4172
|
-
|
4173
|
-
|
3908
|
+
local_only do
|
3909
|
+
expected = ['Supermodel X','T6','Shaun White','Jeremy','Custom',
|
3910
|
+
'Warhol','Twin','Malolo','Supermodel','Air','Elite',
|
3911
|
+
'King','Dominant','Dominant Slick','Blunt','Clash',
|
3912
|
+
'Bullet','Tadashi Fuse','Jussi','Royale','S-Series',
|
3913
|
+
'Fish','Love','Feelgood ES','Feelgood','GTwin','Troop',
|
3914
|
+
'Lux','Stigma','Feather','Stria','Alpha','Feelgood ICS']
|
3915
|
+
result = []
|
3916
|
+
@e = Excelx.new(File.join('test',"problem.xlsx"))
|
3917
|
+
@e.sheets[2..@e.sheets.length].each do |s|
|
3918
|
+
@e.default_sheet = s
|
3919
|
+
# assert_equal "A.",@e.cell('a',13)
|
3920
|
+
name = @e.cell(2,'C')
|
3921
|
+
result << name
|
3922
|
+
#puts "#{name} (sheet: #{s})"
|
3923
|
+
#assert_equal :string, @e.celltype('c',2)
|
3924
|
+
#assert_equal "Vapor (sheet: Vapor)", "#{name} (sheet: #{@e.sheets.first})"
|
3925
|
+
assert @e.cell(2,'c')
|
3926
|
+
end
|
3927
|
+
assert_equal expected, result
|
3928
|
+
|
3929
|
+
@e = Excelx.new(File.join('test',"problem.xlsx"))
|
3930
|
+
#@e.sheets[2..@e.sheets.length].each do |s|
|
3931
|
+
(13..13).each do |s|
|
3932
|
+
@e.default_sheet = s
|
3933
|
+
name = @e.cell(2,'C')
|
3934
|
+
#puts "#{name} (sheet: #{s})"
|
3935
|
+
assert_equal "Elite (sheet: 13)", "#{name} (sheet: #{s})"
|
3936
|
+
end
|
3937
|
+
end
|
3938
|
+
end
|
3939
|
+
|
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
|
+
}
|
3955
|
+
end
|
3956
|
+
end
|
3957
|
+
|
3958
|
+
def test_file_warning_default
|
3959
|
+
if OPENOFFICE
|
3960
|
+
assert_raises(TypeError) { oo = Openoffice.new(File.join("test","numbers1.xls")) }
|
3961
|
+
assert_raises(TypeError) { oo = Openoffice.new(File.join("test","numbers1.xlsx")) }
|
3962
|
+
end
|
3963
|
+
if EXCEL
|
3964
|
+
assert_raises(TypeError) { oo = Excel.new(File.join("test","numbers1.ods")) }
|
3965
|
+
assert_raises(TypeError) { oo = Excel.new(File.join("test","numbers1.xlsx")) }
|
3966
|
+
end
|
3967
|
+
if EXCELX
|
3968
|
+
assert_raises(TypeError) { oo = Excelx.new(File.join("test","numbers1.ods")) }
|
3969
|
+
assert_raises(TypeError) { oo = Excelx.new(File.join("test","numbers1.xls")) }
|
3970
|
+
end
|
3971
|
+
end
|
3972
|
+
|
3973
|
+
def test_file_warning_error
|
3974
|
+
if OPENOFFICE
|
3975
|
+
assert_raises(TypeError) { oo = Openoffice.new(File.join("test","numbers1.xls"),false,:error) }
|
3976
|
+
assert_raises(TypeError) { oo = Openoffice.new(File.join("test","numbers1.xlsx"),false,:error) }
|
3977
|
+
end
|
3978
|
+
if EXCEL
|
3979
|
+
assert_raises(TypeError) { oo = Excel.new(File.join("test","numbers1.ods"),false,:error) }
|
3980
|
+
assert_raises(TypeError) { oo = Excel.new(File.join("test","numbers1.xlsx"),false,:error) }
|
3981
|
+
end
|
3982
|
+
if EXCELX
|
3983
|
+
assert_raises(TypeError) { oo = Excelx.new(File.join("test","numbers1.ods"),false,:error) }
|
3984
|
+
assert_raises(TypeError) { oo = Excelx.new(File.join("test","numbers1.xls"),false,:error) }
|
3985
|
+
end
|
3986
|
+
end
|
3987
|
+
|
3988
|
+
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
|
+
}
|
3995
|
+
}
|
3996
|
+
assert_nothing_raised(TypeError) {
|
3997
|
+
assert_raises(Errno::ENOENT) {
|
3998
|
+
oo = Openoffice.new(File.join("test","numbers1.xlsx"),false, :warning)
|
3999
|
+
}
|
4000
|
+
}
|
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
|
4024
|
+
end
|
4025
|
+
end
|
4026
|
+
|
4027
|
+
def test_file_warning_ignore
|
4028
|
+
if OPENOFFICE
|
4029
|
+
assert_nothing_raised(TypeError) {
|
4030
|
+
assert_raises(Zip::ZipError) {
|
4031
|
+
oo = Openoffice.new(File.join("test","numbers1.xls"),false, :ignore) }
|
4032
|
+
}
|
4033
|
+
assert_nothing_raised(TypeError) {
|
4034
|
+
assert_raises(Errno::ENOENT) {
|
4035
|
+
oo = Openoffice.new(File.join("test","numbers1.xlsx"),false, :ignore) }
|
4036
|
+
}
|
4037
|
+
end
|
4038
|
+
if EXCEL
|
4039
|
+
assert_nothing_raised(TypeError) {
|
4040
|
+
assert_raises(OLE::UnknownFormatError) {
|
4041
|
+
oo = Excel.new(File.join("test","numbers1.ods"),false, :ignore) }
|
4042
|
+
}
|
4043
|
+
assert_nothing_raised(TypeError) {
|
4044
|
+
assert_raises(OLE::UnknownFormatError) {oo = Excel.new(File.join("test","numbers1.xlsx"),false, :ignore) }}
|
4045
|
+
end
|
4046
|
+
if EXCELX
|
4047
|
+
assert_nothing_raised(TypeError) {
|
4048
|
+
assert_raises(Errno::ENOENT) {
|
4049
|
+
oo = Excelx.new(File.join("test","numbers1.ods"),false, :ignore)
|
4050
|
+
}
|
4051
|
+
}
|
4052
|
+
assert_nothing_raised(TypeError) {
|
4053
|
+
assert_raises(Zip::ZipError) {
|
4054
|
+
oo = Excelx.new(File.join("test","numbers1.xls"),false, :ignore)
|
4055
|
+
}
|
4056
|
+
}
|
4057
|
+
end
|
4058
|
+
end
|
4059
|
+
|
4060
|
+
def test_open_from_uri
|
4061
|
+
if OPENOFFICE
|
4062
|
+
assert_raises(RuntimeError) {
|
4063
|
+
oo = Openoffice.new("http://gibbsnichtdomainxxxxx.com/file.ods")
|
4064
|
+
}
|
4065
|
+
end
|
4066
|
+
if EXCEL
|
4067
|
+
assert_raises(RuntimeError) {
|
4068
|
+
oo = Excel.new("http://gibbsnichtdomainxxxxx.com/file.xls")
|
4069
|
+
}
|
4070
|
+
end
|
4071
|
+
if EXCELX
|
4072
|
+
assert_raises(RuntimeError) {
|
4073
|
+
oo = Excelx.new("http://gibbsnichtdomainxxxxx.com/file.xlsx")
|
4074
|
+
}
|
4075
|
+
end
|
4076
|
+
end
|
4077
|
+
|
4078
|
+
def test_bug_last_row_excel
|
4079
|
+
if EXCEL
|
4080
|
+
oo = Excel.new(File.join("test","time-test.xls"))
|
4081
|
+
oo.default_sheet = oo.sheets.first
|
4082
|
+
assert_equal 2, oo.last_row
|
4083
|
+
end
|
4084
|
+
end
|
4085
|
+
|
4086
|
+
def test_bug_to_xml_with_empty_sheets_openoffice
|
4087
|
+
if OPENOFFICE
|
4088
|
+
oo = Openoffice.new(File.join("test","emptysheets.ods"))
|
4089
|
+
oo.sheets.each { |sheet|
|
4090
|
+
oo.default_sheet = sheet
|
4091
|
+
assert_equal nil, oo.first_row, "first_row not nil in sheet #{sheet}"
|
4092
|
+
assert_equal nil, oo.last_row, "last_row not nil in sheet #{sheet}"
|
4093
|
+
assert_equal nil, oo.first_column, "first_column not nil in sheet #{sheet}"
|
4094
|
+
assert_equal nil, oo.last_column, "last_column not nil in sheet #{sheet}"
|
4095
|
+
assert_equal nil, oo.first_row(sheet), "first_row not nil in sheet #{sheet}"
|
4096
|
+
assert_equal nil, oo.last_row(sheet), "last_row not nil in sheet #{sheet}"
|
4097
|
+
assert_equal nil, oo.first_column(sheet), "first_column not nil in sheet #{sheet}"
|
4098
|
+
assert_equal nil, oo.last_column(sheet), "last_column not nil in sheet #{sheet}"
|
4099
|
+
}
|
4100
|
+
assert_nothing_raised() {
|
4101
|
+
result = oo.to_xml
|
4102
|
+
}
|
4103
|
+
end
|
4104
|
+
end
|
4105
|
+
|
4106
|
+
def test_bug_to_xml_with_empty_sheets_excel
|
4107
|
+
if EXCEL
|
4108
|
+
oo = Excel.new(File.join("test","emptysheets.xls"))
|
4109
|
+
oo.sheets.each { |sheet|
|
4110
|
+
oo.default_sheet = sheet
|
4111
|
+
assert_equal nil, oo.first_row, "first_row not nil in sheet #{sheet}"
|
4112
|
+
assert_equal nil, oo.last_row, "last_row not nil in sheet #{sheet}"
|
4113
|
+
assert_equal nil, oo.first_column, "first_column not nil in sheet #{sheet}"
|
4114
|
+
assert_equal nil, oo.last_column, "last_column not nil in sheet #{sheet}"
|
4115
|
+
assert_equal nil, oo.first_row(sheet), "first_row not nil in sheet #{sheet}"
|
4116
|
+
assert_equal nil, oo.last_row(sheet), "last_row not nil in sheet #{sheet}"
|
4117
|
+
assert_equal nil, oo.first_column(sheet), "first_column not nil in sheet #{sheet}"
|
4118
|
+
assert_equal nil, oo.last_column(sheet), "last_column not nil in sheet #{sheet}"
|
4119
|
+
}
|
4120
|
+
assert_nothing_raised() {
|
4121
|
+
result = oo.to_xml
|
4122
|
+
}
|
4123
|
+
end
|
4124
|
+
end
|
4125
|
+
|
4126
|
+
def test_bug_to_xml_with_empty_sheets_excelx
|
4127
|
+
# kann ich nicht testen, da ich selbst keine .xlsx Files anlegen kann
|
4128
|
+
if EXCELX
|
4129
|
+
# oo = Excelx.new(File.join("test","emptysheets.xlsx"))
|
4130
|
+
# oo.sheets.each { |sheet|
|
4131
|
+
# oo.default_sheet = sheet
|
4132
|
+
# assert_equal nil, oo.first_row, "first_row not nil in sheet #{sheet}"
|
4133
|
+
# assert_equal nil, oo.last_row, "last_row not nil in sheet #{sheet}"
|
4134
|
+
# assert_equal nil, oo.first_column, "first_column not nil in sheet #{sheet}"
|
4135
|
+
# assert_equal nil, oo.last_column, "last_column not nil in sheet #{sheet}"
|
4136
|
+
# assert_equal nil, oo.first_row(sheet), "first_row not nil in sheet #{sheet}"
|
4137
|
+
# assert_equal nil, oo.last_row(sheet), "last_row not nil in sheet #{sheet}"
|
4138
|
+
# assert_equal nil, oo.first_column(sheet), "first_column not nil in sheet #{sheet}"
|
4139
|
+
# assert_equal nil, oo.last_column(sheet), "last_column not nil in sheet #{sheet}"
|
4140
|
+
# }
|
4141
|
+
# assert_nothing_raised() {
|
4142
|
+
# result = oo.to_xml
|
4143
|
+
# p result
|
4144
|
+
# }
|
4145
|
+
end
|
4146
|
+
end
|
4147
|
+
|
4148
|
+
def test_bug_simple_spreadsheet_time_bug
|
4149
|
+
# really a bug? are cells really of type time?
|
4150
|
+
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
|
4164
|
+
end
|
4165
|
+
end
|
4166
|
+
|
4167
|
+
|
4168
|
+
def test_to_ascii_openoffice
|
4169
|
+
if OPENOFFICE
|
4170
|
+
after Date.new(2999,1,1) do
|
4171
|
+
oo = Openoffice.new(File.join("test","verysimple_spreadsheet.ods"))
|
4172
|
+
oo.default_sheet = oo.sheets.first
|
4173
|
+
expected="
|
4174
|
+
A | B | C |
|
4175
|
+
-------+-------+------|
|
4176
|
+
7| 8| 9|
|
4177
|
+
-------+-------+------|
|
4178
|
+
4| 5| 6|
|
4179
|
+
-------+-------+------|
|
4180
|
+
1| 2| 3|
|
4181
|
+
----------------------/
|
4182
|
+
"
|
4183
|
+
assert_equal expected, oo.to_ascii
|
4184
|
+
end
|
4185
|
+
end
|
4186
|
+
end
|
4187
|
+
|
4188
|
+
def test_simple2_excelx
|
4189
|
+
after Date.new(2999,1,1) do
|
4190
|
+
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)
|
4199
|
+
end
|
4174
4200
|
end
|
4175
4201
|
end
|
4176
|
-
|
4177
|
-
|
4178
4202
|
end # class
|