roo 1.0.2 → 1.1.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 +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
|