roo 1.13.2 → 2.0.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.
- checksums.yaml +4 -4
- data/.gitignore +7 -0
- data/.simplecov +4 -0
- data/.travis.yml +13 -0
- data/CHANGELOG.md +500 -0
- data/Gemfile +16 -10
- data/Guardfile +24 -0
- data/LICENSE +3 -1
- data/README.md +254 -0
- data/Rakefile +23 -23
- data/examples/roo_soap_client.rb +28 -31
- data/examples/roo_soap_server.rb +4 -6
- data/examples/write_me.rb +9 -10
- data/lib/roo/base.rb +303 -388
- data/lib/roo/csv.rb +120 -113
- data/lib/roo/excelx/comments.rb +24 -0
- data/lib/roo/excelx/extractor.rb +20 -0
- data/lib/roo/excelx/relationships.rb +26 -0
- data/lib/roo/excelx/shared_strings.rb +40 -0
- data/lib/roo/excelx/sheet_doc.rb +202 -0
- data/lib/roo/excelx/styles.rb +62 -0
- data/lib/roo/excelx/workbook.rb +59 -0
- data/lib/roo/excelx.rb +452 -484
- data/lib/roo/font.rb +17 -0
- data/lib/roo/libre_office.rb +5 -0
- data/lib/roo/link.rb +15 -0
- data/lib/roo/{openoffice.rb → open_office.rb} +678 -496
- data/lib/roo/spreadsheet.rb +20 -23
- data/lib/roo/utils.rb +78 -0
- data/lib/roo/version.rb +3 -0
- data/lib/roo.rb +18 -24
- data/roo.gemspec +20 -204
- data/spec/lib/roo/base_spec.rb +1 -4
- data/spec/lib/roo/csv_spec.rb +21 -13
- data/spec/lib/roo/excelx/format_spec.rb +7 -6
- data/spec/lib/roo/excelx_spec.rb +388 -11
- data/spec/lib/roo/libreoffice_spec.rb +16 -6
- data/spec/lib/roo/openoffice_spec.rb +2 -8
- data/spec/lib/roo/spreadsheet_spec.rb +40 -12
- data/spec/lib/roo/utils_spec.rb +106 -0
- data/spec/spec_helper.rb +2 -1
- data/test/test_generic_spreadsheet.rb +19 -67
- data/test/test_helper.rb +9 -56
- data/test/test_roo.rb +252 -477
- metadata +63 -302
- data/CHANGELOG +0 -417
- data/Gemfile.lock +0 -78
- data/README.markdown +0 -126
- data/VERSION +0 -1
- data/lib/roo/excel.rb +0 -355
- data/lib/roo/excel2003xml.rb +0 -300
- data/lib/roo/google.rb +0 -292
- data/lib/roo/roo_rails_helper.rb +0 -83
- data/lib/roo/worksheet.rb +0 -18
- data/spec/lib/roo/excel2003xml_spec.rb +0 -15
- data/spec/lib/roo/excel_spec.rb +0 -17
- data/spec/lib/roo/google_spec.rb +0 -64
- data/test/files/1900_base.xls +0 -0
- data/test/files/1900_base.xlsx +0 -0
- data/test/files/1904_base.xls +0 -0
- data/test/files/1904_base.xlsx +0 -0
- data/test/files/Bibelbund.csv +0 -3741
- data/test/files/Bibelbund.ods +0 -0
- data/test/files/Bibelbund.xls +0 -0
- data/test/files/Bibelbund.xlsx +0 -0
- data/test/files/Bibelbund.xml +0 -62518
- data/test/files/Bibelbund1.ods +0 -0
- data/test/files/Pfand_from_windows_phone.xlsx +0 -0
- data/test/files/bad_excel_date.xls +0 -0
- data/test/files/bbu.ods +0 -0
- data/test/files/bbu.xls +0 -0
- data/test/files/bbu.xlsx +0 -0
- data/test/files/bbu.xml +0 -152
- data/test/files/bode-v1.ods.zip +0 -0
- data/test/files/bode-v1.xls.zip +0 -0
- data/test/files/boolean.csv +0 -2
- data/test/files/boolean.ods +0 -0
- data/test/files/boolean.xls +0 -0
- data/test/files/boolean.xlsx +0 -0
- data/test/files/boolean.xml +0 -112
- data/test/files/borders.ods +0 -0
- data/test/files/borders.xls +0 -0
- data/test/files/borders.xlsx +0 -0
- data/test/files/borders.xml +0 -144
- data/test/files/bug-numbered-sheet-names.xlsx +0 -0
- data/test/files/bug-row-column-fixnum-float.xls +0 -0
- data/test/files/bug-row-column-fixnum-float.xml +0 -127
- data/test/files/comments.ods +0 -0
- data/test/files/comments.xls +0 -0
- data/test/files/comments.xlsx +0 -0
- data/test/files/csvtypes.csv +0 -1
- data/test/files/datetime.ods +0 -0
- data/test/files/datetime.xls +0 -0
- data/test/files/datetime.xlsx +0 -0
- data/test/files/datetime.xml +0 -142
- data/test/files/datetime_floatconv.xls +0 -0
- data/test/files/datetime_floatconv.xml +0 -148
- data/test/files/dreimalvier.ods +0 -0
- data/test/files/emptysheets.ods +0 -0
- data/test/files/emptysheets.xls +0 -0
- data/test/files/emptysheets.xlsx +0 -0
- data/test/files/emptysheets.xml +0 -105
- data/test/files/excel2003.xml +0 -21140
- data/test/files/false_encoding.xls +0 -0
- data/test/files/false_encoding.xml +0 -132
- data/test/files/file_item_error.xlsx +0 -0
- data/test/files/formula.ods +0 -0
- data/test/files/formula.xls +0 -0
- data/test/files/formula.xlsx +0 -0
- data/test/files/formula.xml +0 -134
- data/test/files/formula_parse_error.xls +0 -0
- data/test/files/formula_parse_error.xml +0 -1833
- data/test/files/formula_string_error.xlsx +0 -0
- data/test/files/html-escape.ods +0 -0
- data/test/files/link.xls +0 -0
- data/test/files/link.xlsx +0 -0
- data/test/files/matrix.ods +0 -0
- data/test/files/matrix.xls +0 -0
- data/test/files/named_cells.ods +0 -0
- data/test/files/named_cells.xls +0 -0
- data/test/files/named_cells.xlsx +0 -0
- data/test/files/no_spreadsheet_file.txt +0 -1
- data/test/files/numbers1.csv +0 -18
- data/test/files/numbers1.ods +0 -0
- data/test/files/numbers1.xls +0 -0
- data/test/files/numbers1.xlsx +0 -0
- data/test/files/numbers1.xml +0 -312
- data/test/files/numeric-link.xlsx +0 -0
- data/test/files/only_one_sheet.ods +0 -0
- data/test/files/only_one_sheet.xls +0 -0
- data/test/files/only_one_sheet.xlsx +0 -0
- data/test/files/only_one_sheet.xml +0 -67
- data/test/files/paragraph.ods +0 -0
- data/test/files/paragraph.xls +0 -0
- data/test/files/paragraph.xlsx +0 -0
- data/test/files/paragraph.xml +0 -127
- data/test/files/prova.xls +0 -0
- data/test/files/ric.ods +0 -0
- data/test/files/simple_spreadsheet.ods +0 -0
- data/test/files/simple_spreadsheet.xls +0 -0
- data/test/files/simple_spreadsheet.xlsx +0 -0
- data/test/files/simple_spreadsheet.xml +0 -225
- data/test/files/simple_spreadsheet_from_italo.ods +0 -0
- data/test/files/simple_spreadsheet_from_italo.xls +0 -0
- data/test/files/simple_spreadsheet_from_italo.xml +0 -242
- data/test/files/so_datetime.csv +0 -7
- data/test/files/style.ods +0 -0
- data/test/files/style.xls +0 -0
- data/test/files/style.xlsx +0 -0
- data/test/files/style.xml +0 -154
- data/test/files/time-test.csv +0 -2
- data/test/files/time-test.ods +0 -0
- data/test/files/time-test.xls +0 -0
- data/test/files/time-test.xlsx +0 -0
- data/test/files/time-test.xml +0 -131
- data/test/files/type_excel.ods +0 -0
- data/test/files/type_excel.xlsx +0 -0
- data/test/files/type_excelx.ods +0 -0
- data/test/files/type_excelx.xls +0 -0
- data/test/files/type_openoffice.xls +0 -0
- data/test/files/type_openoffice.xlsx +0 -0
- data/test/files/whitespace.ods +0 -0
- data/test/files/whitespace.xls +0 -0
- data/test/files/whitespace.xlsx +0 -0
- data/test/files/whitespace.xml +0 -184
- data/test/rm_sub_test.rb +0 -12
- data/test/rm_test.rb +0 -7
- data/website/index.html +0 -385
- data/website/index.txt +0 -423
- data/website/javascripts/rounded_corners_lite.inc.js +0 -285
- data/website/stylesheets/screen.css +0 -130
- data/website/template.rhtml +0 -48
data/test/test_roo.rb
CHANGED
|
@@ -17,38 +17,32 @@
|
|
|
17
17
|
# with the wrong spreadsheet class
|
|
18
18
|
#STDERR.reopen "/dev/null","w"
|
|
19
19
|
|
|
20
|
-
require
|
|
20
|
+
require 'test_helper'
|
|
21
21
|
|
|
22
|
-
class TestRoo < Test
|
|
22
|
+
class TestRoo < Minitest::Test
|
|
23
23
|
|
|
24
|
-
OPENOFFICE = true
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
LIBREOFFICE = true # do LibreOffice tests? (.ods files)
|
|
29
|
-
CSV = true # do CSV tests? (.csv files)
|
|
24
|
+
OPENOFFICE = true # do OpenOffice-Spreadsheet Tests? (.ods files)
|
|
25
|
+
EXCELX = true # do Excelx Tests? (.xlsx files)
|
|
26
|
+
LIBREOFFICE = true # do LibreOffice tests? (.ods files)
|
|
27
|
+
CSV = true # do CSV tests? (.csv files)
|
|
30
28
|
|
|
31
|
-
FORMATS =
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
libreoffice: LIBREOFFICE
|
|
37
|
-
}
|
|
29
|
+
FORMATS = [
|
|
30
|
+
:excelx,
|
|
31
|
+
:openoffice,
|
|
32
|
+
:libreoffice
|
|
33
|
+
]
|
|
38
34
|
|
|
39
35
|
ONLINE = false
|
|
40
36
|
LONG_RUN = false
|
|
41
37
|
|
|
42
38
|
def fixture_filename(name, format)
|
|
43
39
|
case format
|
|
44
|
-
when :excel
|
|
45
|
-
"#{name}.xls"
|
|
46
40
|
when :excelx
|
|
47
41
|
"#{name}.xlsx"
|
|
48
42
|
when :openoffice, :libreoffice
|
|
49
43
|
"#{name}.ods"
|
|
50
|
-
|
|
51
|
-
|
|
44
|
+
else
|
|
45
|
+
raise ArgumentError, "unexpected format #{format}"
|
|
52
46
|
end
|
|
53
47
|
end
|
|
54
48
|
|
|
@@ -56,48 +50,30 @@ class TestRoo < Test::Unit::TestCase
|
|
|
56
50
|
# and yield a reference to the roo object
|
|
57
51
|
def with_each_spreadsheet(options)
|
|
58
52
|
if options[:format]
|
|
59
|
-
|
|
60
|
-
invalid_formats =
|
|
53
|
+
formats = Array(options[:format])
|
|
54
|
+
invalid_formats = formats - FORMATS
|
|
61
55
|
unless invalid_formats.empty?
|
|
62
56
|
raise "invalid spreadsheet types: #{invalid_formats.join(', ')}"
|
|
63
57
|
end
|
|
64
58
|
else
|
|
65
|
-
|
|
59
|
+
formats = FORMATS
|
|
66
60
|
end
|
|
67
|
-
|
|
61
|
+
formats.each do |format|
|
|
68
62
|
begin
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
fixture_filename(options[:name], format)))
|
|
72
|
-
end
|
|
63
|
+
yield Roo::Spreadsheet.open(File.join(TESTDIR,
|
|
64
|
+
fixture_filename(options[:name], format)))
|
|
73
65
|
rescue => e
|
|
74
66
|
raise e, "#{e.message} for #{format}", e.backtrace
|
|
75
67
|
end
|
|
76
68
|
end
|
|
77
69
|
end
|
|
78
70
|
|
|
79
|
-
# Using Date.strptime so check that it's using the method
|
|
80
|
-
# with the value set in date_format
|
|
81
|
-
def test_date
|
|
82
|
-
with_each_spreadsheet(:name=>'numbers1', :format=>:google) do |oo|
|
|
83
|
-
# should default to DDMMYYYY
|
|
84
|
-
assert oo.date?("21/11/1962")
|
|
85
|
-
assert !oo.date?("11/21/1962")
|
|
86
|
-
oo.date_format = '%m/%d/%Y'
|
|
87
|
-
assert !oo.date?("21/11/1962")
|
|
88
|
-
assert oo.date?("11/21/1962")
|
|
89
|
-
oo.date_format = '%Y-%m-%d'
|
|
90
|
-
assert(oo.date?("1962-11-21"))
|
|
91
|
-
assert(!oo.date?("1962-21-11"))
|
|
92
|
-
end
|
|
93
|
-
end
|
|
94
|
-
|
|
95
71
|
def test_sheets_csv
|
|
96
72
|
if CSV
|
|
97
73
|
oo = Roo::CSV.new(File.join(TESTDIR,'numbers1.csv'))
|
|
98
74
|
assert_equal ["default"], oo.sheets
|
|
99
|
-
|
|
100
|
-
|
|
75
|
+
assert_raises(RangeError) { oo.default_sheet = "no_sheet" }
|
|
76
|
+
assert_raises(TypeError) { oo.default_sheet = [1,2,3] }
|
|
101
77
|
oo.sheets.each { |sh|
|
|
102
78
|
oo.default_sheet = sh
|
|
103
79
|
assert_equal sh, oo.default_sheet
|
|
@@ -108,8 +84,8 @@ class TestRoo < Test::Unit::TestCase
|
|
|
108
84
|
def test_sheets
|
|
109
85
|
with_each_spreadsheet(:name=>'numbers1') do |oo|
|
|
110
86
|
assert_equal ["Tabelle1","Name of Sheet 2","Sheet3","Sheet4","Sheet5"], oo.sheets
|
|
111
|
-
|
|
112
|
-
|
|
87
|
+
assert_raises(RangeError) { oo.default_sheet = "no_sheet" }
|
|
88
|
+
assert_raises(TypeError) { oo.default_sheet = [1,2,3] }
|
|
113
89
|
oo.sheets.each { |sh|
|
|
114
90
|
oo.default_sheet = sh
|
|
115
91
|
assert_equal sh, oo.default_sheet
|
|
@@ -168,8 +144,8 @@ class TestRoo < Test::Unit::TestCase
|
|
|
168
144
|
assert_equal "tata", oo.cell('A',6)
|
|
169
145
|
assert_equal "tata", oo.cell(6,'a')
|
|
170
146
|
assert_equal "tata", oo.cell('a',6)
|
|
171
|
-
|
|
172
|
-
|
|
147
|
+
assert_raises(ArgumentError) { assert_equal "tata", oo.cell('a','f') }
|
|
148
|
+
assert_raises(ArgumentError) { assert_equal "tata", oo.cell('f','a') }
|
|
173
149
|
assert_equal "thisisc8", oo.cell(8,3)
|
|
174
150
|
assert_equal "thisisc8", oo.cell(8,'C')
|
|
175
151
|
assert_equal "thisisc8", oo.cell('C',8)
|
|
@@ -198,27 +174,22 @@ class TestRoo < Test::Unit::TestCase
|
|
|
198
174
|
with_each_spreadsheet(:name=>'numbers1') do |oo|
|
|
199
175
|
oo.default_sheet = "Name of Sheet 2"
|
|
200
176
|
assert_equal 'I am sheet 2', oo.cell('C',5)
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
assert_raise(RangeError) { oo.formula('C',5,"non existing sheet name")}
|
|
212
|
-
assert_raise(RangeError) { oo.set('C',5,42,"non existing sheet name")}
|
|
213
|
-
assert_raise(RangeError) { oo.formulas("non existing sheet name")}
|
|
214
|
-
end
|
|
215
|
-
assert_raise(RangeError) { oo.to_yaml({},1,1,1,1,"non existing sheet name")}
|
|
177
|
+
assert_raises(RangeError) { oo.default_sheet = "non existing sheet name" }
|
|
178
|
+
assert_raises(RangeError) { oo.default_sheet = "non existing sheet name" }
|
|
179
|
+
assert_raises(RangeError) { oo.cell('C',5,"non existing sheet name")}
|
|
180
|
+
assert_raises(RangeError) { oo.celltype('C',5,"non existing sheet name")}
|
|
181
|
+
assert_raises(RangeError) { oo.empty?('C',5,"non existing sheet name")}
|
|
182
|
+
assert_raises(RangeError) { oo.formula?('C',5,"non existing sheet name")}
|
|
183
|
+
assert_raises(RangeError) { oo.formula('C',5,"non existing sheet name")}
|
|
184
|
+
assert_raises(RangeError) { oo.set('C',5,42,"non existing sheet name")}
|
|
185
|
+
assert_raises(RangeError) { oo.formulas("non existing sheet name")}
|
|
186
|
+
assert_raises(RangeError) { oo.to_yaml({},1,1,1,1,"non existing sheet name")}
|
|
216
187
|
end
|
|
217
188
|
end
|
|
218
189
|
|
|
219
190
|
def test_argument_error
|
|
220
191
|
with_each_spreadsheet(:name=>'numbers1') do |oo|
|
|
221
|
-
|
|
192
|
+
oo.default_sheet = "Tabelle1"
|
|
222
193
|
end
|
|
223
194
|
end
|
|
224
195
|
|
|
@@ -245,7 +216,7 @@ class TestRoo < Test::Unit::TestCase
|
|
|
245
216
|
end
|
|
246
217
|
|
|
247
218
|
def test_italo_table
|
|
248
|
-
with_each_spreadsheet(:name=>'simple_spreadsheet_from_italo', :format
|
|
219
|
+
with_each_spreadsheet(:name=>'simple_spreadsheet_from_italo', :format=>:openoffice) do |oo|
|
|
249
220
|
assert_equal '1', oo.cell('A',1)
|
|
250
221
|
assert_equal '1', oo.cell('B',1)
|
|
251
222
|
assert_equal '1', oo.cell('C',1)
|
|
@@ -324,41 +295,12 @@ class TestRoo < Test::Unit::TestCase
|
|
|
324
295
|
end
|
|
325
296
|
end
|
|
326
297
|
|
|
327
|
-
def
|
|
328
|
-
with_each_spreadsheet(:name=>'
|
|
329
|
-
|
|
330
|
-
assert_equal
|
|
331
|
-
assert_equal
|
|
332
|
-
assert_equal
|
|
333
|
-
assert_equal 4, oo.cell('A',4)
|
|
334
|
-
assert_equal 5, oo.cell('A',5)
|
|
335
|
-
assert_equal 6, oo.cell('A',6)
|
|
336
|
-
# assert_equal 21, oo.cell('A',7)
|
|
337
|
-
assert_equal 21.0, oo.cell('A',7) #TODO: better solution Fixnum/Float
|
|
338
|
-
assert_equal :formula, oo.celltype('A',7)
|
|
339
|
-
# assert_equal "=[Sheet2.A1]", oo.formula('C',7)
|
|
340
|
-
# !!! different from formulas in OpenOffice
|
|
341
|
-
#was: assert_equal "=sheet2!R[-6]C[-2]", oo.formula('C',7)
|
|
342
|
-
# has Google changed their format of formulas/references to other sheets?
|
|
343
|
-
assert_equal "=Sheet2!R[-6]C[-2]", oo.formula('C',7)
|
|
344
|
-
assert_nil oo.formula('A',6)
|
|
345
|
-
# assert_equal [[7, 1, "=SUM([.A1:.A6])"],
|
|
346
|
-
# [7, 2, "=SUM([.$A$1:.B6])"],
|
|
347
|
-
# [7, 3, "=[Sheet2.A1]"],
|
|
348
|
-
# [8, 2, "=SUM([.$A$1:.B7])"],
|
|
349
|
-
# ], oo.formulas(oo.sheets.first)
|
|
350
|
-
# different format than in openoffice spreadsheets:
|
|
351
|
-
#was:
|
|
352
|
-
# assert_equal [[7, 1, "=SUM(R[-6]C[0]:R[-1]C[0])"],
|
|
353
|
-
# [7, 2, "=SUM(R1C1:R[-1]C[0])"],
|
|
354
|
-
# [7, 3, "=sheet2!R[-6]C[-2]"],
|
|
355
|
-
# [8, 2, "=SUM(R1C1:R[-1]C[0])"]],
|
|
356
|
-
# oo.formulas(oo.sheets.first)
|
|
357
|
-
assert_equal [[7, 1, "=SUM(R[-6]C:R[-1]C)"],
|
|
358
|
-
[7, 2, "=SUM(R1C1:R[-1]C)"],
|
|
359
|
-
[7, 3, "=Sheet2!R[-6]C[-2]"],
|
|
360
|
-
[8, 2, "=SUM(R1C1:R[-1]C)"]],
|
|
361
|
-
oo.formulas(oo.sheets.first)
|
|
298
|
+
def test_header_with_brackets_excelx
|
|
299
|
+
with_each_spreadsheet(:name => 'advanced_header', :format => :openoffice) do |oo|
|
|
300
|
+
parsed_head = oo.parse(:headers => true)
|
|
301
|
+
assert_equal "Date(yyyy-mm-dd)", oo.cell('A',1)
|
|
302
|
+
assert_equal parsed_head[0].keys, ["Date(yyyy-mm-dd)"]
|
|
303
|
+
assert_equal parsed_head[0].values, ["Date(yyyy-mm-dd)"]
|
|
362
304
|
end
|
|
363
305
|
end
|
|
364
306
|
|
|
@@ -397,14 +339,6 @@ class TestRoo < Test::Unit::TestCase
|
|
|
397
339
|
end
|
|
398
340
|
end
|
|
399
341
|
|
|
400
|
-
# Excel can only read the cell's value
|
|
401
|
-
def test_formula_excel
|
|
402
|
-
with_each_spreadsheet(:name=>'formula', :format=>:excel) do |oo|
|
|
403
|
-
assert_equal 21, oo.cell('A',7)
|
|
404
|
-
assert_equal 21, oo.cell('B',7)
|
|
405
|
-
end
|
|
406
|
-
end
|
|
407
|
-
|
|
408
342
|
def test_borders_sheets
|
|
409
343
|
with_each_spreadsheet(:name=>'borders') do |oo|
|
|
410
344
|
oo.default_sheet = oo.sheets[1]
|
|
@@ -439,43 +373,22 @@ class TestRoo < Test::Unit::TestCase
|
|
|
439
373
|
end
|
|
440
374
|
end
|
|
441
375
|
|
|
442
|
-
def test_excel_download_uri_and_zipped
|
|
443
|
-
if EXCEL
|
|
444
|
-
if ONLINE
|
|
445
|
-
url = 'http://stiny-leonhard.de/bode-v1.xls.zip'
|
|
446
|
-
excel = Roo::Excel.new(url, :zip)
|
|
447
|
-
excel.default_sheet = excel.sheets.first
|
|
448
|
-
assert_equal 'ist "e" im Nenner von H(s)', excel.cell('b', 5)
|
|
449
|
-
end
|
|
450
|
-
end
|
|
451
|
-
end
|
|
452
|
-
|
|
453
376
|
def test_openoffice_download_uri_and_zipped
|
|
454
377
|
if OPENOFFICE
|
|
455
378
|
if ONLINE
|
|
456
379
|
url = 'http://spazioinwind.libero.it/s2/rata.ods.zip'
|
|
457
|
-
sheet = Roo::OpenOffice.new(url, :zip)
|
|
380
|
+
sheet = Roo::OpenOffice.new(url, packed: :zip)
|
|
458
381
|
#has been changed: assert_equal 'ist "e" im Nenner von H(s)', sheet.cell('b', 5)
|
|
459
382
|
assert_in_delta 0.001, 505.14, sheet.cell('c', 33).to_f
|
|
460
383
|
end
|
|
461
384
|
end
|
|
462
385
|
end
|
|
463
386
|
|
|
464
|
-
def test_excel_zipped
|
|
465
|
-
if EXCEL
|
|
466
|
-
oo = Roo::Excel.new(File.join(TESTDIR,"bode-v1.xls.zip"), :zip)
|
|
467
|
-
assert oo
|
|
468
|
-
assert_equal 'ist "e" im Nenner von H(s)', oo.cell('b', 5)
|
|
469
|
-
end
|
|
470
|
-
end
|
|
471
|
-
|
|
472
387
|
def test_openoffice_zipped
|
|
473
388
|
if OPENOFFICE
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
assert_equal 'ist "e" im Nenner von H(s)', oo.cell('b', 5)
|
|
478
|
-
end
|
|
389
|
+
oo = Roo::OpenOffice.new(File.join(TESTDIR,"bode-v1.ods.zip"), packed: :zip)
|
|
390
|
+
assert oo
|
|
391
|
+
assert_equal 'ist "e" im Nenner von H(s)', oo.cell('b', 5)
|
|
479
392
|
end
|
|
480
393
|
end
|
|
481
394
|
|
|
@@ -543,7 +456,6 @@ class TestRoo < Test::Unit::TestCase
|
|
|
543
456
|
if LONG_RUN
|
|
544
457
|
with_each_spreadsheet(:name=>'Bibelbund', :format=>[
|
|
545
458
|
:openoffice,
|
|
546
|
-
:excel,
|
|
547
459
|
:excelx
|
|
548
460
|
# Google hier nicht, weil Google-Spreadsheets nicht so gross werden
|
|
549
461
|
# duerfen
|
|
@@ -564,9 +476,7 @@ class TestRoo < Test::Unit::TestCase
|
|
|
564
476
|
|
|
565
477
|
def test_bug_quotes_excelx
|
|
566
478
|
if LONG_RUN
|
|
567
|
-
with_each_spreadsheet(:name=>'Bibelbund', :format=>[:openoffice,
|
|
568
|
-
:excel,
|
|
569
|
-
:excelx]) do |oo|
|
|
479
|
+
with_each_spreadsheet(:name=>'Bibelbund', :format=>[:openoffice, :excelx]) do |oo|
|
|
570
480
|
oo.default_sheet = oo.sheets.first
|
|
571
481
|
assert_equal 'Einflüsse der neuen Theologie in "de gereformeerde Kerken van Nederland"',
|
|
572
482
|
oo.cell('a',76)
|
|
@@ -662,7 +572,7 @@ class TestRoo < Test::Unit::TestCase
|
|
|
662
572
|
with_each_spreadsheet(:name=>'formula', :format=>[:openoffice, :excelx]) do |oo|
|
|
663
573
|
oo.default_sheet = 'Sheet3' # is an empty sheet
|
|
664
574
|
Dir.mktmpdir do |tempdir|
|
|
665
|
-
|
|
575
|
+
oo.to_csv(File.join(tempdir,"emptysheet.csv"))
|
|
666
576
|
assert_equal "", `cat #{File.join(tempdir,"emptysheet.csv")}`
|
|
667
577
|
end
|
|
668
578
|
end
|
|
@@ -670,9 +580,7 @@ class TestRoo < Test::Unit::TestCase
|
|
|
670
580
|
|
|
671
581
|
def test_find_by_row_huge_document
|
|
672
582
|
if LONG_RUN
|
|
673
|
-
with_each_spreadsheet(:name=>'Bibelbund', :format=>[:openoffice,
|
|
674
|
-
:excel,
|
|
675
|
-
:excelx]) do |oo|
|
|
583
|
+
with_each_spreadsheet(:name=>'Bibelbund', :format=>[:openoffice, :excelx]) do |oo|
|
|
676
584
|
oo.default_sheet = oo.sheets.first
|
|
677
585
|
rec = oo.find 20
|
|
678
586
|
assert rec
|
|
@@ -702,10 +610,23 @@ class TestRoo < Test::Unit::TestCase
|
|
|
702
610
|
end
|
|
703
611
|
end
|
|
704
612
|
|
|
613
|
+
def test_find_by_row_if_header_line_is_not_nil
|
|
614
|
+
with_each_spreadsheet(:name=>'numbers1') do |oo|
|
|
615
|
+
oo.header_line = 2
|
|
616
|
+
refute_nil oo.header_line
|
|
617
|
+
rec = oo.find 1
|
|
618
|
+
assert rec
|
|
619
|
+
assert_equal 5, rec[0]
|
|
620
|
+
assert_equal 6, rec[1]
|
|
621
|
+
rec = oo.find 15
|
|
622
|
+
assert rec
|
|
623
|
+
assert_equal "einundvierzig", rec[0]
|
|
624
|
+
end
|
|
625
|
+
end
|
|
626
|
+
|
|
705
627
|
def test_find_by_conditions
|
|
706
628
|
if LONG_RUN
|
|
707
629
|
with_each_spreadsheet(:name=>'Bibelbund', :format=>[:openoffice,
|
|
708
|
-
:excel,
|
|
709
630
|
:excelx]) do |oo|
|
|
710
631
|
#-----------------------------------------------------------------
|
|
711
632
|
zeilen = oo.find(:all, :conditions => {
|
|
@@ -817,7 +738,6 @@ class TestRoo < Test::Unit::TestCase
|
|
|
817
738
|
def test_column_huge_document
|
|
818
739
|
if LONG_RUN
|
|
819
740
|
with_each_spreadsheet(:name=>'Bibelbund', :format=>[:openoffice,
|
|
820
|
-
:excel,
|
|
821
741
|
:excelx]) do |oo|
|
|
822
742
|
oo.default_sheet = oo.sheets.first
|
|
823
743
|
assert_equal 3735, oo.column('a').size
|
|
@@ -835,67 +755,17 @@ class TestRoo < Test::Unit::TestCase
|
|
|
835
755
|
assert_equal 10.75 , erg[1]['Start time']
|
|
836
756
|
assert_equal 12.50 , erg[1]['End time']
|
|
837
757
|
assert_equal 0 , erg[1]['Pause']
|
|
838
|
-
assert_equal 1.75 , erg[1]['Sum']
|
|
758
|
+
assert_equal 1.75 , erg[1]['Sum']
|
|
839
759
|
assert_equal "Task 1" , erg[1]['Comment']
|
|
840
760
|
end
|
|
841
761
|
end
|
|
842
762
|
|
|
843
|
-
# Ruby-spreadsheet now allows us to at least give the current value
|
|
844
|
-
# from a cell with a formula (no possible with parseexcel)
|
|
845
|
-
def test_bug_false_borders_with_formulas
|
|
846
|
-
with_each_spreadsheet(:name=>'false_encoding', :format=>:excel) do |oo|
|
|
847
|
-
assert_equal 1, oo.first_row
|
|
848
|
-
assert_equal 3, oo.last_row
|
|
849
|
-
assert_equal 1, oo.first_column
|
|
850
|
-
assert_equal 4, oo.last_column
|
|
851
|
-
end
|
|
852
|
-
end
|
|
853
|
-
|
|
854
|
-
# We'ce added minimal formula support so we can now read these
|
|
855
|
-
# though not sure how the spreadsheet reports older values....
|
|
856
|
-
def test_fe
|
|
857
|
-
with_each_spreadsheet(:name=>'false_encoding', :format=>:excel) do |oo|
|
|
858
|
-
assert_equal Date.new(2007,11,1), oo.cell('a',1)
|
|
859
|
-
#DOES NOT WORK IN EXCEL FILES: assert_equal true, oo.formula?('a',1)
|
|
860
|
-
#DOES NOT WORK IN EXCEL FILES: assert_equal '=TODAY()', oo.formula('a',1)
|
|
861
|
-
|
|
862
|
-
assert_equal Date.new(2008,2,9), oo.cell('B',1)
|
|
863
|
-
#DOES NOT WORK IN EXCEL FILES: assert_equal true, oo.formula?('B',1)
|
|
864
|
-
#DOES NOT WORK IN EXCEL FILES: assert_equal "=A1+100", oo.formula('B',1)
|
|
865
|
-
|
|
866
|
-
assert_kind_of DateTime, oo.cell('C',1)
|
|
867
|
-
#DOES NOT WORK IN EXCEL FILES: assert_equal true, oo.formula?('C',1)
|
|
868
|
-
#DOES NOT WORK IN EXCEL FILES: assert_equal "=C1", oo.formula('C',1)
|
|
869
|
-
|
|
870
|
-
assert_equal 'H1', oo.cell('A',2)
|
|
871
|
-
assert_equal 'H2', oo.cell('B',2)
|
|
872
|
-
assert_equal 'H3', oo.cell('C',2)
|
|
873
|
-
assert_equal 'H4', oo.cell('D',2)
|
|
874
|
-
assert_equal 'R1', oo.cell('A',3)
|
|
875
|
-
assert_equal 'R2', oo.cell('B',3)
|
|
876
|
-
assert_equal 'R3', oo.cell('C',3)
|
|
877
|
-
assert_equal 'R4', oo.cell('D',3)
|
|
878
|
-
end
|
|
879
|
-
end
|
|
880
|
-
|
|
881
|
-
def test_excel_does_not_support_formulas
|
|
882
|
-
with_each_spreadsheet(:name=>'false_encoding', :format=>:excel) do |oo|
|
|
883
|
-
assert_raise(NotImplementedError) { oo.formula('a',1) }
|
|
884
|
-
assert_raise(NotImplementedError) { oo.formula?('a',1) }
|
|
885
|
-
assert_raise(NotImplementedError) { oo.formulas(oo.sheets.first) }
|
|
886
|
-
end
|
|
887
|
-
end
|
|
888
|
-
|
|
889
763
|
def get_extension(oo)
|
|
890
764
|
case oo
|
|
891
765
|
when Roo::OpenOffice
|
|
892
766
|
".ods"
|
|
893
|
-
when Roo::Excel
|
|
894
|
-
".xls"
|
|
895
767
|
when Roo::Excelx
|
|
896
768
|
".xlsx"
|
|
897
|
-
when Roo::Google
|
|
898
|
-
""
|
|
899
769
|
end
|
|
900
770
|
end
|
|
901
771
|
|
|
@@ -951,109 +821,21 @@ class TestRoo < Test::Unit::TestCase
|
|
|
951
821
|
end
|
|
952
822
|
end
|
|
953
823
|
|
|
954
|
-
def test_bug_excel_numbers1_sheet5_last_row
|
|
955
|
-
with_each_spreadsheet(:name=>'numbers1', :format=>:excel) do |oo|
|
|
956
|
-
oo.default_sheet = "Tabelle1"
|
|
957
|
-
assert_equal 1, oo.first_row
|
|
958
|
-
assert_equal 18, oo.last_row
|
|
959
|
-
assert_equal Roo::OpenOffice.letter_to_number('A'), oo.first_column
|
|
960
|
-
assert_equal Roo::OpenOffice.letter_to_number('G'), oo.last_column
|
|
961
|
-
oo.default_sheet = "Name of Sheet 2"
|
|
962
|
-
assert_equal 5, oo.first_row
|
|
963
|
-
assert_equal 14, oo.last_row
|
|
964
|
-
assert_equal Roo::OpenOffice.letter_to_number('B'), oo.first_column
|
|
965
|
-
assert_equal Roo::OpenOffice.letter_to_number('E'), oo.last_column
|
|
966
|
-
oo.default_sheet = "Sheet3"
|
|
967
|
-
assert_equal 1, oo.first_row
|
|
968
|
-
assert_equal 1, oo.last_row
|
|
969
|
-
assert_equal Roo::OpenOffice.letter_to_number('A'), oo.first_column
|
|
970
|
-
assert_equal Roo::OpenOffice.letter_to_number('BA'), oo.last_column
|
|
971
|
-
oo.default_sheet = "Sheet4"
|
|
972
|
-
assert_equal 1, oo.first_row
|
|
973
|
-
assert_equal 1, oo.last_row
|
|
974
|
-
assert_equal Roo::OpenOffice.letter_to_number('A'), oo.first_column
|
|
975
|
-
assert_equal Roo::OpenOffice.letter_to_number('E'), oo.last_column
|
|
976
|
-
oo.default_sheet = "Sheet5"
|
|
977
|
-
assert_equal 1, oo.first_row
|
|
978
|
-
assert_equal 6, oo.last_row
|
|
979
|
-
assert_equal Roo::OpenOffice.letter_to_number('A'), oo.first_column
|
|
980
|
-
assert_equal Roo::OpenOffice.letter_to_number('E'), oo.last_column
|
|
981
|
-
end
|
|
982
|
-
end
|
|
983
|
-
|
|
984
824
|
def test_should_raise_file_not_found_error
|
|
985
825
|
if OPENOFFICE
|
|
986
|
-
|
|
826
|
+
assert_raises(IOError) {
|
|
987
827
|
Roo::OpenOffice.new(File.join('testnichtvorhanden','Bibelbund.ods'))
|
|
988
828
|
}
|
|
989
829
|
end
|
|
990
|
-
if EXCEL
|
|
991
|
-
assert_raise(IOError) {
|
|
992
|
-
Roo::Excel.new(File.join('testnichtvorhanden','Bibelbund.xls'))
|
|
993
|
-
}
|
|
994
|
-
end
|
|
995
830
|
if EXCELX
|
|
996
|
-
|
|
831
|
+
assert_raises(IOError) {
|
|
997
832
|
Roo::Excelx.new(File.join('testnichtvorhanden','Bibelbund.xlsx'))
|
|
998
833
|
}
|
|
999
834
|
end
|
|
1000
|
-
if GOOGLE
|
|
1001
|
-
# assert_raise(Net::HTTPServerException) {
|
|
1002
|
-
# Google.new(key_of('testnichtvorhanden'+'Bibelbund.ods'))
|
|
1003
|
-
# Google.new('testnichtvorhanden')
|
|
1004
|
-
# }
|
|
1005
|
-
end
|
|
1006
|
-
end
|
|
1007
|
-
|
|
1008
|
-
def test_write_google
|
|
1009
|
-
# write.me: http://spreadsheets.google.com/ccc?key=ptu6bbahNZpY0N0RrxQbWdw&hl=en_GB
|
|
1010
|
-
with_each_spreadsheet(:name=>'write.me', :format=>:google) do |oo|
|
|
1011
|
-
oo.default_sheet = oo.sheets.first
|
|
1012
|
-
oo.set(1,1,"hello from the tests")
|
|
1013
|
-
assert_equal "hello from the tests", oo.cell(1,1)
|
|
1014
|
-
oo.set(1,1, 1.0)
|
|
1015
|
-
assert_equal 1.0, oo.cell(1,1)
|
|
1016
|
-
end
|
|
1017
|
-
end
|
|
1018
|
-
|
|
1019
|
-
def test_bug_set_with_more_than_one_sheet_google
|
|
1020
|
-
# write.me: http://spreadsheets.google.com/ccc?key=ptu6bbahNZpY0N0RrxQbWdw&hl=en_GB
|
|
1021
|
-
with_each_spreadsheet(:name=>'write.me', :format=>:google) do |oo|
|
|
1022
|
-
content1 = 'AAA'
|
|
1023
|
-
content2 = 'BBB'
|
|
1024
|
-
oo.default_sheet = oo.sheets.first
|
|
1025
|
-
oo.set(1,1,content1)
|
|
1026
|
-
oo.default_sheet = oo.sheets[1]
|
|
1027
|
-
oo.set(1,1,content2) # in the second sheet
|
|
1028
|
-
oo.default_sheet = oo.sheets.first
|
|
1029
|
-
assert_equal content1, oo.cell(1,1)
|
|
1030
|
-
oo.default_sheet = oo.sheets[1]
|
|
1031
|
-
assert_equal content2, oo.cell(1,1)
|
|
1032
|
-
end
|
|
1033
|
-
end
|
|
1034
|
-
|
|
1035
|
-
def test_set_with_sheet_argument_google
|
|
1036
|
-
with_each_spreadsheet(:name=>'write.me', :format=>:google) do |oo|
|
|
1037
|
-
random_row = rand(10)+1
|
|
1038
|
-
random_column = rand(10)+1
|
|
1039
|
-
content1 = 'ABC'
|
|
1040
|
-
content2 = 'DEF'
|
|
1041
|
-
oo.set(random_row,random_column,content1,oo.sheets.first)
|
|
1042
|
-
oo.set(random_row,random_column,content2,oo.sheets[1])
|
|
1043
|
-
assert_equal content1, oo.cell(random_row,random_column,oo.sheets.first)
|
|
1044
|
-
assert_equal content2, oo.cell(random_row,random_column,oo.sheets[1])
|
|
1045
|
-
end
|
|
1046
|
-
end
|
|
1047
|
-
|
|
1048
|
-
def test_set_for_non_existing_sheet_google
|
|
1049
|
-
with_each_spreadsheet(:name=>'ptu6bbahNZpY0N0RrxQbWdw', :format=>:google) do |oo|
|
|
1050
|
-
assert_raise(RangeError) { oo.set(1,1,"dummy","no_sheet") }
|
|
1051
|
-
end
|
|
1052
835
|
end
|
|
1053
836
|
|
|
1054
837
|
def test_bug_bbu
|
|
1055
|
-
with_each_spreadsheet(:name=>'bbu', :format=>[:openoffice, :excelx
|
|
1056
|
-
assert_nothing_raised() {
|
|
838
|
+
with_each_spreadsheet(:name=>'bbu', :format=>[:openoffice, :excelx]) do |oo|
|
|
1057
839
|
assert_equal "File: bbu#{get_extension(oo)}
|
|
1058
840
|
Number of sheets: 3
|
|
1059
841
|
Sheets: 2007_12, Tabelle2, Tabelle3
|
|
@@ -1066,7 +848,6 @@ Sheet 2:
|
|
|
1066
848
|
- empty -
|
|
1067
849
|
Sheet 3:
|
|
1068
850
|
- empty -", oo.info
|
|
1069
|
-
}
|
|
1070
851
|
|
|
1071
852
|
oo.default_sheet = oo.sheets[1] # empty sheet
|
|
1072
853
|
assert_nil oo.first_row
|
|
@@ -1113,7 +894,18 @@ Sheet 3:
|
|
|
1113
894
|
end
|
|
1114
895
|
end
|
|
1115
896
|
end
|
|
1116
|
-
|
|
897
|
+
def test_link_to_csv
|
|
898
|
+
with_each_spreadsheet(:name=>'link',:format=>:excelx) do |oo|
|
|
899
|
+
Dir.mktmpdir do |tempdir|
|
|
900
|
+
csv_output = File.join(tempdir,'link.csv')
|
|
901
|
+
assert oo.to_csv(csv_output)
|
|
902
|
+
assert File.exists?(csv_output)
|
|
903
|
+
assert_equal "", `diff --strip-trailing-cr #{TESTDIR}/link.csv #{csv_output}`
|
|
904
|
+
# --strip-trailing-cr is needed because the test-file use 0A and
|
|
905
|
+
# the test on an windows box generates 0D 0A as line endings
|
|
906
|
+
end
|
|
907
|
+
end
|
|
908
|
+
end
|
|
1117
909
|
def test_date_time_yaml
|
|
1118
910
|
with_each_spreadsheet(:name=>'time-test') do |oo|
|
|
1119
911
|
expected =
|
|
@@ -1143,7 +935,8 @@ Sheet 3:
|
|
|
1143
935
|
|
|
1144
936
|
def test_to_xml
|
|
1145
937
|
with_each_spreadsheet(:name=>'numbers1', :encoding => 'utf8') do |oo|
|
|
1146
|
-
|
|
938
|
+
skip if defined? JRUBY_VERSION
|
|
939
|
+
oo.to_xml
|
|
1147
940
|
sheetname = oo.sheets.first
|
|
1148
941
|
doc = Nokogiri::XML(oo.to_xml)
|
|
1149
942
|
sheet_count = 0
|
|
@@ -1177,15 +970,6 @@ Sheet 3:
|
|
|
1177
970
|
end
|
|
1178
971
|
end
|
|
1179
972
|
|
|
1180
|
-
def test_bug_row_column_fixnum_float
|
|
1181
|
-
with_each_spreadsheet(:name=>'bug-row-column-fixnum-float', :format=>:excel) do |oo|
|
|
1182
|
-
assert_equal 42.5, oo.cell('b',2)
|
|
1183
|
-
assert_equal 43 , oo.cell('c',2)
|
|
1184
|
-
assert_equal ['hij',42.5, 43], oo.row(2)
|
|
1185
|
-
assert_equal ['def',42.5, 'nop'], oo.column(2)
|
|
1186
|
-
end
|
|
1187
|
-
end
|
|
1188
|
-
|
|
1189
973
|
def test_file_warning_default
|
|
1190
974
|
if OPENOFFICE
|
|
1191
975
|
assert_raises(TypeError, "test/files/numbers1.xls is not an openoffice spreadsheet") {
|
|
@@ -1193,10 +977,6 @@ Sheet 3:
|
|
|
1193
977
|
}
|
|
1194
978
|
assert_raises(TypeError) { Roo::OpenOffice.new(File.join(TESTDIR,"numbers1.xlsx")) }
|
|
1195
979
|
end
|
|
1196
|
-
if EXCEL
|
|
1197
|
-
assert_raises(TypeError) { Roo::Excel.new(File.join(TESTDIR,"numbers1.ods")) }
|
|
1198
|
-
assert_raises(TypeError) { Roo::Excel.new(File.join(TESTDIR,"numbers1.xlsx")) }
|
|
1199
|
-
end
|
|
1200
980
|
if EXCELX
|
|
1201
981
|
assert_raises(TypeError) { Roo::Excelx.new(File.join(TESTDIR,"numbers1.ods")) }
|
|
1202
982
|
assert_raises(TypeError) { Roo::Excelx.new(File.join(TESTDIR,"numbers1.xls")) }
|
|
@@ -1205,54 +985,45 @@ Sheet 3:
|
|
|
1205
985
|
|
|
1206
986
|
def test_file_warning_error
|
|
1207
987
|
if OPENOFFICE
|
|
1208
|
-
assert_raises(TypeError) {
|
|
1209
|
-
|
|
1210
|
-
|
|
1211
|
-
|
|
1212
|
-
|
|
1213
|
-
|
|
988
|
+
assert_raises(TypeError) {
|
|
989
|
+
Roo::OpenOffice.new(File.join(TESTDIR,"numbers1.xls"),
|
|
990
|
+
packed: false,
|
|
991
|
+
file_warning: :error
|
|
992
|
+
)
|
|
993
|
+
}
|
|
994
|
+
assert_raises(TypeError) {
|
|
995
|
+
Roo::OpenOffice.new(File.join(TESTDIR,"numbers1.xlsx"),
|
|
996
|
+
packed: false,
|
|
997
|
+
file_warning: :error)
|
|
998
|
+
}
|
|
1214
999
|
end
|
|
1215
1000
|
if EXCELX
|
|
1216
|
-
assert_raises(TypeError) {
|
|
1217
|
-
|
|
1001
|
+
assert_raises(TypeError) {
|
|
1002
|
+
Roo::Excelx.new(File.join(TESTDIR,"numbers1.ods"),
|
|
1003
|
+
packed: false,
|
|
1004
|
+
file_warning: :error)
|
|
1005
|
+
}
|
|
1006
|
+
assert_raises(TypeError) {
|
|
1007
|
+
Roo::Excelx.new(File.join(TESTDIR,"numbers1.xls"),
|
|
1008
|
+
packed: false,
|
|
1009
|
+
file_warning: :error)
|
|
1010
|
+
}
|
|
1218
1011
|
end
|
|
1219
1012
|
end
|
|
1220
1013
|
|
|
1221
1014
|
def test_file_warning_warning
|
|
1222
1015
|
if OPENOFFICE
|
|
1223
|
-
|
|
1224
|
-
|
|
1225
|
-
|
|
1226
|
-
|
|
1227
|
-
}
|
|
1228
|
-
assert_nothing_raised(TypeError) {
|
|
1229
|
-
assert_raises(Errno::ENOENT) {
|
|
1230
|
-
Roo::OpenOffice.new(File.join(TESTDIR,"numbers1.xlsx"),false, :warning)
|
|
1231
|
-
}
|
|
1232
|
-
}
|
|
1233
|
-
end
|
|
1234
|
-
if EXCEL
|
|
1235
|
-
assert_nothing_raised(TypeError) {
|
|
1236
|
-
assert_raises(Ole::Storage::FormatError) {
|
|
1237
|
-
Roo::Excel.new(File.join(TESTDIR,"numbers1.ods"),false, :warning)
|
|
1238
|
-
}
|
|
1239
|
-
}
|
|
1240
|
-
assert_nothing_raised(TypeError) {
|
|
1241
|
-
assert_raises(Ole::Storage::FormatError) {
|
|
1242
|
-
Roo::Excel.new(File.join(TESTDIR,"numbers1.xlsx"),false, :warning)
|
|
1243
|
-
}
|
|
1016
|
+
assert_raises(ArgumentError) {
|
|
1017
|
+
Roo::OpenOffice.new(File.join(TESTDIR,"numbers1.xlsx"),
|
|
1018
|
+
packed: false,
|
|
1019
|
+
file_warning: :warning)
|
|
1244
1020
|
}
|
|
1245
1021
|
end
|
|
1246
1022
|
if EXCELX
|
|
1247
|
-
|
|
1248
|
-
|
|
1249
|
-
|
|
1250
|
-
|
|
1251
|
-
}
|
|
1252
|
-
assert_nothing_raised(TypeError) {
|
|
1253
|
-
assert_raises(Zip::ZipError) {
|
|
1254
|
-
Roo::Excelx.new(File.join(TESTDIR,"numbers1.xls"),false, :warning)
|
|
1255
|
-
}
|
|
1023
|
+
assert_raises(ArgumentError) {
|
|
1024
|
+
Roo::Excelx.new(File.join(TESTDIR,"numbers1.ods"),
|
|
1025
|
+
packed: false,
|
|
1026
|
+
file_warning: :warning)
|
|
1256
1027
|
}
|
|
1257
1028
|
end
|
|
1258
1029
|
end
|
|
@@ -1264,41 +1035,20 @@ Sheet 3:
|
|
|
1264
1035
|
# Es soll ohne Fehlermeldung oder Warnung
|
|
1265
1036
|
# oder Abbruch die Datei geoffnet werden
|
|
1266
1037
|
|
|
1267
|
-
# xls
|
|
1268
|
-
assert_nothing_raised() {
|
|
1269
|
-
Roo::OpenOffice.new(File.join(TESTDIR,"type_openoffice.xls"),false, :ignore)
|
|
1270
|
-
}
|
|
1271
1038
|
# xlsx
|
|
1272
|
-
|
|
1273
|
-
|
|
1274
|
-
|
|
1275
|
-
end
|
|
1276
|
-
if EXCEL
|
|
1277
|
-
assert_nothing_raised() {
|
|
1278
|
-
Roo::Excel.new(File.join(TESTDIR,"type_excel.ods"),false, :ignore)
|
|
1279
|
-
}
|
|
1280
|
-
assert_nothing_raised() {
|
|
1281
|
-
Roo::Excel.new(File.join(TESTDIR,"type_excel.xlsx"),false, :ignore)
|
|
1282
|
-
}
|
|
1039
|
+
Roo::OpenOffice.new(File.join(TESTDIR,"type_openoffice.xlsx"),
|
|
1040
|
+
packed: false,
|
|
1041
|
+
file_warning: :ignore)
|
|
1283
1042
|
end
|
|
1284
1043
|
if EXCELX
|
|
1285
|
-
|
|
1286
|
-
|
|
1287
|
-
|
|
1288
|
-
assert_nothing_raised() {
|
|
1289
|
-
Roo::Excelx.new(File.join(TESTDIR,"type_excelx.xls"),false, :ignore)
|
|
1290
|
-
}
|
|
1291
|
-
end
|
|
1292
|
-
end
|
|
1293
|
-
|
|
1294
|
-
def test_bug_last_row_excel
|
|
1295
|
-
with_each_spreadsheet(:name=>'time-test', :format=>:excel) do |oo|
|
|
1296
|
-
assert_equal 2, oo.last_row
|
|
1044
|
+
Roo::Excelx.new(File.join(TESTDIR,"type_excelx.ods"),
|
|
1045
|
+
packed: false,
|
|
1046
|
+
file_warning: :ignore)
|
|
1297
1047
|
end
|
|
1298
1048
|
end
|
|
1299
1049
|
|
|
1300
1050
|
def test_bug_to_xml_with_empty_sheets
|
|
1301
|
-
with_each_spreadsheet(:name=>'emptysheets', :format=>[:openoffice, :
|
|
1051
|
+
with_each_spreadsheet(:name=>'emptysheets', :format=>[:openoffice, :excelx]) do |oo|
|
|
1302
1052
|
oo.sheets.each { |sheet|
|
|
1303
1053
|
assert_equal nil, oo.first_row, "first_row not nil in sheet #{sheet}"
|
|
1304
1054
|
assert_equal nil, oo.last_row, "last_row not nil in sheet #{sheet}"
|
|
@@ -1309,7 +1059,7 @@ Sheet 3:
|
|
|
1309
1059
|
assert_equal nil, oo.first_column(sheet), "first_column not nil in sheet #{sheet}"
|
|
1310
1060
|
assert_equal nil, oo.last_column(sheet), "last_column not nil in sheet #{sheet}"
|
|
1311
1061
|
}
|
|
1312
|
-
|
|
1062
|
+
oo.to_xml
|
|
1313
1063
|
end
|
|
1314
1064
|
end
|
|
1315
1065
|
|
|
@@ -1364,12 +1114,12 @@ Sheet 3:
|
|
|
1364
1114
|
def test_datetime
|
|
1365
1115
|
with_each_spreadsheet(:name=>'datetime') do |oo|
|
|
1366
1116
|
val = oo.cell('c',3)
|
|
1367
|
-
assert_kind_of DateTime, val
|
|
1368
1117
|
assert_equal :datetime, oo.celltype('c',3)
|
|
1369
1118
|
assert_equal DateTime.new(1961,11,21,12,17,18), val
|
|
1119
|
+
assert_kind_of DateTime, val
|
|
1370
1120
|
val = oo.cell('a',1)
|
|
1371
|
-
assert_kind_of Date, val
|
|
1372
1121
|
assert_equal :date, oo.celltype('a',1)
|
|
1122
|
+
assert_kind_of Date, val
|
|
1373
1123
|
assert_equal Date.new(1961,11,21), val
|
|
1374
1124
|
assert_equal Date.new(1961,11,21), oo.cell('a',1)
|
|
1375
1125
|
assert_equal DateTime.new(1961,11,21,12,17,18), oo.cell('a',3)
|
|
@@ -1387,6 +1137,9 @@ Sheet 3:
|
|
|
1387
1137
|
assert_equal Date.new(1961,11,21), oo.cell('a',7)
|
|
1388
1138
|
assert_equal Date.new(1961,11,21), oo.cell('b',7)
|
|
1389
1139
|
assert_equal Date.new(1961,11,21), oo.cell('c',7)
|
|
1140
|
+
assert_equal DateTime.new(2013,11,5,11,45,00), oo.cell('a',8)
|
|
1141
|
+
assert_equal DateTime.new(2013,11,5,11,45,00), oo.cell('b',8)
|
|
1142
|
+
assert_equal DateTime.new(2013,11,5,11,45,00), oo.cell('c',8)
|
|
1390
1143
|
end
|
|
1391
1144
|
end
|
|
1392
1145
|
|
|
@@ -1402,7 +1155,7 @@ Sheet 3:
|
|
|
1402
1155
|
end
|
|
1403
1156
|
|
|
1404
1157
|
def test_cell_boolean
|
|
1405
|
-
with_each_spreadsheet(:name=>'boolean', :format=>[:openoffice, :
|
|
1158
|
+
with_each_spreadsheet(:name=>'boolean', :format=>[:openoffice, :excelx]) do |oo|
|
|
1406
1159
|
if oo.class == Roo::Excelx
|
|
1407
1160
|
assert_equal "TRUE", oo.cell(1,1), "failure in "+oo.class.to_s
|
|
1408
1161
|
assert_equal "FALSE", oo.cell(2,1), "failure in "+oo.class.to_s
|
|
@@ -1414,7 +1167,7 @@ Sheet 3:
|
|
|
1414
1167
|
end
|
|
1415
1168
|
|
|
1416
1169
|
def test_cell_multiline
|
|
1417
|
-
with_each_spreadsheet(:name=>'paragraph', :format=>[:openoffice, :
|
|
1170
|
+
with_each_spreadsheet(:name=>'paragraph', :format=>[:openoffice, :excelx]) do |oo|
|
|
1418
1171
|
assert_equal "This is a test\nof a multiline\nCell", oo.cell(1,1)
|
|
1419
1172
|
assert_equal "This is a test\n¶\nof a multiline\n\nCell", oo.cell(1,2)
|
|
1420
1173
|
assert_equal "first p\n\nsecond p\n\nlast p", oo.cell(2,1)
|
|
@@ -1425,8 +1178,7 @@ Sheet 3:
|
|
|
1425
1178
|
# styles only valid in excel spreadsheets?
|
|
1426
1179
|
# TODO: what todo with other spreadsheet types
|
|
1427
1180
|
with_each_spreadsheet(:name=>'style', :format=>[# :openoffice,
|
|
1428
|
-
:
|
|
1429
|
-
# :excelx
|
|
1181
|
+
:excelx
|
|
1430
1182
|
]) do |oo|
|
|
1431
1183
|
# bold
|
|
1432
1184
|
assert_equal true, oo.font(1,1).bold?
|
|
@@ -1485,18 +1237,6 @@ Sheet 3:
|
|
|
1485
1237
|
end
|
|
1486
1238
|
end
|
|
1487
1239
|
|
|
1488
|
-
# If a cell has a date-like string but is preceeded by a '
|
|
1489
|
-
# to force that date to be treated like a string, we were getting an exception.
|
|
1490
|
-
# This test just checks for that exception to make sure it's not raised in this case
|
|
1491
|
-
def test_date_to_float_conversion
|
|
1492
|
-
with_each_spreadsheet(:name=>'datetime_floatconv', :format=>:excel) do |oo|
|
|
1493
|
-
assert_nothing_raised(NoMethodError) do
|
|
1494
|
-
oo.cell('a',1)
|
|
1495
|
-
oo.cell('a',2)
|
|
1496
|
-
end
|
|
1497
|
-
end
|
|
1498
|
-
end
|
|
1499
|
-
|
|
1500
1240
|
# Need to extend to other formats
|
|
1501
1241
|
def test_row_whitespace
|
|
1502
1242
|
# auf dieses Dokument habe ich keinen Zugriff TODO:
|
|
@@ -1535,45 +1275,10 @@ Sheet 3:
|
|
|
1535
1275
|
end
|
|
1536
1276
|
end
|
|
1537
1277
|
|
|
1538
|
-
def test_ruby_spreadsheet_formula_bug
|
|
1539
|
-
with_each_spreadsheet(:name=>'formula_parse_error', :format=>:excel) do |oo|
|
|
1540
|
-
assert_equal '5026', oo.cell(2,3)
|
|
1541
|
-
assert_equal '5026', oo.cell(3,3)
|
|
1542
|
-
end
|
|
1543
|
-
end
|
|
1544
|
-
|
|
1545
|
-
|
|
1546
|
-
def test_excel_links
|
|
1547
|
-
with_each_spreadsheet(:name=>'link', :format=>:excel) do |oo|
|
|
1548
|
-
assert_equal 'Google', oo.cell(1,1)
|
|
1549
|
-
assert_equal 'http://www.google.com', oo.cell(1,1).url
|
|
1550
|
-
end
|
|
1551
|
-
end
|
|
1552
|
-
|
|
1553
1278
|
def test_excelx_links
|
|
1554
1279
|
with_each_spreadsheet(:name=>'link', :format=>:excelx) do |oo|
|
|
1555
1280
|
assert_equal 'Google', oo.cell(1,1)
|
|
1556
|
-
assert_equal 'http://www.google.com', oo.cell(1,1).
|
|
1557
|
-
end
|
|
1558
|
-
end
|
|
1559
|
-
|
|
1560
|
-
# Excel has two base date formats one from 1900 and the other from 1904.
|
|
1561
|
-
# There's a MS bug that 1900 base dates include an extra day due to erroneously
|
|
1562
|
-
# including 1900 as a leap yar.
|
|
1563
|
-
def test_base_dates_in_excel
|
|
1564
|
-
with_each_spreadsheet(:name=>'1900_base', :format=>:excel) do |oo|
|
|
1565
|
-
assert_equal Date.new(2009,06,15), oo.cell(1,1)
|
|
1566
|
-
#we don't want to to 'interpret' formulas assert_equal Date.new(Time.now.year,Time.now.month,Time.now.day), oo.cell(2,1) #formula for TODAY()
|
|
1567
|
-
# if we test TODAY() we have also have to calculate
|
|
1568
|
-
# other date calculations
|
|
1569
|
-
#
|
|
1570
|
-
assert_equal :date, oo.celltype(1,1)
|
|
1571
|
-
end
|
|
1572
|
-
with_each_spreadsheet(:name=>'1904_base', :format=>:excel) do |oo|
|
|
1573
|
-
assert_equal Date.new(2009,06,15), oo.cell(1,1)
|
|
1574
|
-
# see comment above
|
|
1575
|
-
# assert_equal Date.new(Time.now.year,Time.now.month,Time.now.day), oo.cell(2,1) #formula for TODAY()
|
|
1576
|
-
assert_equal :date, oo.celltype(1,1)
|
|
1281
|
+
assert_equal 'http://www.google.com', oo.cell(1,1).href
|
|
1577
1282
|
end
|
|
1578
1283
|
end
|
|
1579
1284
|
|
|
@@ -1590,22 +1295,6 @@ Sheet 3:
|
|
|
1590
1295
|
end
|
|
1591
1296
|
end
|
|
1592
1297
|
|
|
1593
|
-
def test_bad_date
|
|
1594
|
-
with_each_spreadsheet(:name=>'prova', :format=>:excel) do |oo|
|
|
1595
|
-
assert_nothing_raised(ArgumentError) {
|
|
1596
|
-
assert_equal DateTime.new(2006,2,2,10,0,0), oo.cell('a',1)
|
|
1597
|
-
}
|
|
1598
|
-
end
|
|
1599
|
-
end
|
|
1600
|
-
|
|
1601
|
-
def test_bad_excel_date
|
|
1602
|
-
with_each_spreadsheet(:name=>'bad_excel_date', :format=>:excel) do |oo|
|
|
1603
|
-
assert_nothing_raised(ArgumentError) {
|
|
1604
|
-
assert_equal DateTime.new(2006,2,2,10,0,0), oo.cell('a',1)
|
|
1605
|
-
}
|
|
1606
|
-
end
|
|
1607
|
-
end
|
|
1608
|
-
|
|
1609
1298
|
def test_cell_methods
|
|
1610
1299
|
with_each_spreadsheet(:name=>'numbers1') do |oo|
|
|
1611
1300
|
assert_equal 10, oo.a4 # cell(4,'A')
|
|
@@ -1747,7 +1436,7 @@ Sheet 3:
|
|
|
1747
1436
|
|
|
1748
1437
|
require 'matrix'
|
|
1749
1438
|
def test_matrix
|
|
1750
|
-
with_each_spreadsheet(:name => 'matrix', :format =>
|
|
1439
|
+
with_each_spreadsheet(:name => 'matrix', :format => :openoffice) do |oo|
|
|
1751
1440
|
oo.default_sheet = oo.sheets.first
|
|
1752
1441
|
assert_equal Matrix[
|
|
1753
1442
|
[1.0, 2.0, 3.0],
|
|
@@ -1757,7 +1446,7 @@ Sheet 3:
|
|
|
1757
1446
|
end
|
|
1758
1447
|
|
|
1759
1448
|
def test_matrix_selected_range
|
|
1760
|
-
with_each_spreadsheet(:name => 'matrix', :format
|
|
1449
|
+
with_each_spreadsheet(:name => 'matrix', :format=>:openoffice) do |oo|
|
|
1761
1450
|
oo.default_sheet = 'Sheet2'
|
|
1762
1451
|
assert_equal Matrix[
|
|
1763
1452
|
[1.0, 2.0, 3.0],
|
|
@@ -1767,7 +1456,7 @@ Sheet 3:
|
|
|
1767
1456
|
end
|
|
1768
1457
|
|
|
1769
1458
|
def test_matrix_all_nil
|
|
1770
|
-
with_each_spreadsheet(:name => 'matrix', :format
|
|
1459
|
+
with_each_spreadsheet(:name => 'matrix', :format=>:openoffice) do |oo|
|
|
1771
1460
|
oo.default_sheet = 'Sheet2'
|
|
1772
1461
|
assert_equal Matrix[
|
|
1773
1462
|
[nil, nil, nil],
|
|
@@ -1777,7 +1466,7 @@ Sheet 3:
|
|
|
1777
1466
|
end
|
|
1778
1467
|
|
|
1779
1468
|
def test_matrix_values_and_nil
|
|
1780
|
-
with_each_spreadsheet(:name => 'matrix', :format
|
|
1469
|
+
with_each_spreadsheet(:name => 'matrix', :format=>:openoffice) do |oo|
|
|
1781
1470
|
oo.default_sheet = 'Sheet3'
|
|
1782
1471
|
assert_equal Matrix[
|
|
1783
1472
|
[1.0, nil, 3.0],
|
|
@@ -1787,7 +1476,7 @@ Sheet 3:
|
|
|
1787
1476
|
end
|
|
1788
1477
|
|
|
1789
1478
|
def test_matrix_specifying_sheet
|
|
1790
|
-
with_each_spreadsheet(:name => 'matrix', :format =>
|
|
1479
|
+
with_each_spreadsheet(:name => 'matrix', :format => :openoffice) do |oo|
|
|
1791
1480
|
oo.default_sheet = oo.sheets.first
|
|
1792
1481
|
assert_equal Matrix[
|
|
1793
1482
|
[1.0, nil, 3.0],
|
|
@@ -1839,11 +1528,9 @@ where the expected result is
|
|
|
1839
1528
|
# 2011-06-24
|
|
1840
1529
|
def test_bug_formulas_empty_sheet
|
|
1841
1530
|
with_each_spreadsheet(:name =>'emptysheets',
|
|
1842
|
-
:format=>[:openoffice,:excelx
|
|
1843
|
-
assert_nothing_raised(NoMethodError) {
|
|
1531
|
+
:format=>[:openoffice,:excelx]) do |oo|
|
|
1844
1532
|
oo.default_sheet = oo.sheets.first
|
|
1845
1533
|
oo.formulas
|
|
1846
|
-
}
|
|
1847
1534
|
assert_equal([], oo.formulas)
|
|
1848
1535
|
end
|
|
1849
1536
|
end
|
|
@@ -1853,11 +1540,9 @@ where the expected result is
|
|
|
1853
1540
|
# 2011-06-24
|
|
1854
1541
|
def test_bug_to_yaml_empty_sheet
|
|
1855
1542
|
with_each_spreadsheet(:name =>'emptysheets',
|
|
1856
|
-
:format=>[:openoffice,:excelx
|
|
1857
|
-
assert_nothing_raised(NoMethodError) {
|
|
1543
|
+
:format=>[:openoffice,:excelx]) do |oo|
|
|
1858
1544
|
oo.default_sheet = oo.sheets.first
|
|
1859
1545
|
oo.to_yaml
|
|
1860
|
-
}
|
|
1861
1546
|
assert_equal('', oo.to_yaml)
|
|
1862
1547
|
end
|
|
1863
1548
|
end
|
|
@@ -1867,11 +1552,9 @@ where the expected result is
|
|
|
1867
1552
|
# 2011-06-25
|
|
1868
1553
|
def test_bug_to_matrix_empty_sheet
|
|
1869
1554
|
with_each_spreadsheet(:name =>'emptysheets',
|
|
1870
|
-
:format=>[:openoffice,:excelx
|
|
1871
|
-
assert_nothing_raised(NoMethodError) {
|
|
1555
|
+
:format=>[:openoffice,:excelx]) do |oo|
|
|
1872
1556
|
oo.default_sheet = oo.sheets.first
|
|
1873
1557
|
oo.to_matrix
|
|
1874
|
-
}
|
|
1875
1558
|
assert_equal(Matrix.empty(0,0), oo.to_matrix)
|
|
1876
1559
|
end
|
|
1877
1560
|
end
|
|
@@ -1963,6 +1646,7 @@ where the expected result is
|
|
|
1963
1646
|
end
|
|
1964
1647
|
|
|
1965
1648
|
def test_bug_pfand_from_windows_phone_xlsx
|
|
1649
|
+
return if defined? JRUBY_VERSION
|
|
1966
1650
|
with_each_spreadsheet(:name=>'Pfand_from_windows_phone', :format=>:excelx) do |oo|
|
|
1967
1651
|
oo.default_sheet = oo.sheets.first
|
|
1968
1652
|
assert_equal ['Blatt1','Blatt2','Blatt3'], oo.sheets
|
|
@@ -1992,15 +1676,6 @@ where the expected result is
|
|
|
1992
1676
|
end
|
|
1993
1677
|
end
|
|
1994
1678
|
|
|
1995
|
-
def test_comment?
|
|
1996
|
-
with_each_spreadsheet(:name=>'comments', :format=>[:openoffice,:libreoffice,
|
|
1997
|
-
:excelx]) do |oo|
|
|
1998
|
-
oo.default_sheet = oo.sheets.first
|
|
1999
|
-
assert_equal true, oo.comment?('b',4)
|
|
2000
|
-
assert_equal false, oo.comment?('b',99)
|
|
2001
|
-
end
|
|
2002
|
-
end
|
|
2003
|
-
|
|
2004
1679
|
def test_comments
|
|
2005
1680
|
with_each_spreadsheet(:name=>'comments', :format=>[:openoffice,:libreoffice,
|
|
2006
1681
|
:excelx]) do |oo|
|
|
@@ -2013,6 +1688,11 @@ where the expected result is
|
|
|
2013
1688
|
oo.default_sheet = oo.sheets[1]
|
|
2014
1689
|
assert_equal [], oo.comments, "comments error in class #{oo.class}"
|
|
2015
1690
|
end
|
|
1691
|
+
|
|
1692
|
+
with_each_spreadsheet(:name=>'comments-google', :format=>[:excelx]) do |oo|
|
|
1693
|
+
oo.default_sheet = oo.sheets.first
|
|
1694
|
+
assert_equal [[1, 1, "this is a comment\n\t-Steven Daniels"]], oo.comments(oo.sheets.first), "comments error in class #{oo.class}"
|
|
1695
|
+
end
|
|
2016
1696
|
end
|
|
2017
1697
|
|
|
2018
1698
|
## PREVIOUSLY SKIPPED
|
|
@@ -2091,13 +1771,6 @@ where the expected result is
|
|
|
2091
1771
|
# end
|
|
2092
1772
|
# end
|
|
2093
1773
|
|
|
2094
|
-
def test_simple_google
|
|
2095
|
-
if GOOGLE
|
|
2096
|
-
go = Roo::Google.new("egal")
|
|
2097
|
-
assert_equal "42", go.cell(1,1)
|
|
2098
|
-
end
|
|
2099
|
-
end
|
|
2100
|
-
|
|
2101
1774
|
def test_download_uri
|
|
2102
1775
|
if ONLINE
|
|
2103
1776
|
if OPENOFFICE
|
|
@@ -2105,11 +1778,6 @@ where the expected result is
|
|
|
2105
1778
|
Roo::OpenOffice.new("http://gibbsnichtdomainxxxxx.com/file.ods")
|
|
2106
1779
|
}
|
|
2107
1780
|
end
|
|
2108
|
-
if EXCEL
|
|
2109
|
-
assert_raises(RuntimeError) {
|
|
2110
|
-
Roo::Excel.new("http://gibbsnichtdomainxxxxx.com/file.xls")
|
|
2111
|
-
}
|
|
2112
|
-
end
|
|
2113
1781
|
if EXCELX
|
|
2114
1782
|
assert_raises(RuntimeError) {
|
|
2115
1783
|
Roo::Excelx.new("http://gibbsnichtdomainxxxxx.com/file.xlsx")
|
|
@@ -2120,8 +1788,7 @@ where the expected result is
|
|
|
2120
1788
|
|
|
2121
1789
|
def test_download_uri_with_query_string
|
|
2122
1790
|
dir = File.expand_path("#{File.dirname __FILE__}/files")
|
|
2123
|
-
{
|
|
2124
|
-
xlsx: [EXCELX, Roo::Excelx],
|
|
1791
|
+
{ xlsx: [EXCELX, Roo::Excelx],
|
|
2125
1792
|
ods: [OPENOFFICE, Roo::OpenOffice]}.each do |extension, (flag, type)|
|
|
2126
1793
|
if flag
|
|
2127
1794
|
file = "#{dir}/simple_spreadsheet.#{extension}"
|
|
@@ -2285,8 +1952,116 @@ where the expected result is
|
|
|
2285
1952
|
|
|
2286
1953
|
def test_bug_numbered_sheet_names
|
|
2287
1954
|
with_each_spreadsheet(:name=>'bug-numbered-sheet-names', :format=>:excelx) do |oo|
|
|
2288
|
-
|
|
1955
|
+
oo.each_with_pagename { }
|
|
2289
1956
|
end
|
|
2290
1957
|
end
|
|
2291
1958
|
|
|
1959
|
+
def test_parsing_xslx_from_numbers
|
|
1960
|
+
return unless EXCELX
|
|
1961
|
+
xlsx = Roo::Excelx.new(File.join(TESTDIR, "numbers-export.xlsx"))
|
|
1962
|
+
|
|
1963
|
+
xlsx.default_sheet = xlsx.sheets.first
|
|
1964
|
+
assert_equal 'Sheet 1', xlsx.cell('a',1)
|
|
1965
|
+
|
|
1966
|
+
# Another buggy behavior of Numbers 3.1: if a warkbook has more than a
|
|
1967
|
+
# single sheet, all sheets except the first one will have an extra row and
|
|
1968
|
+
# column added to the beginning. That's why we assert against cell B2 and
|
|
1969
|
+
# not A1
|
|
1970
|
+
xlsx.default_sheet = xlsx.sheets.last
|
|
1971
|
+
assert_equal 'Sheet 2', xlsx.cell('b',2)
|
|
1972
|
+
end
|
|
1973
|
+
|
|
1974
|
+
def test_openoffice_encryption
|
|
1975
|
+
if OPENOFFICE
|
|
1976
|
+
assert_raises(ArgumentError) { Roo::LibreOffice.new(File.join(TESTDIR, "encrypted-letmein.ods")) }
|
|
1977
|
+
assert_raises(ArgumentError) { Roo::LibreOffice.new(File.join(TESTDIR, "encrypted-letmein.ods"), :password => "badpassword") }
|
|
1978
|
+
oo = Roo::LibreOffice.new(File.join(TESTDIR, "encrypted-letmein.ods"), :password => "letmein")
|
|
1979
|
+
oo.default_sheet = oo.sheets.first
|
|
1980
|
+
assert_equal "Hello World", oo.cell('a',1)
|
|
1981
|
+
end
|
|
1982
|
+
end
|
|
1983
|
+
|
|
1984
|
+
def test_expand_merged_range
|
|
1985
|
+
return unless EXCELX
|
|
1986
|
+
xlsx = Roo::Excelx.new(File.join(TESTDIR, "merged_ranges.xlsx"), {:expand_merged_ranges => true})
|
|
1987
|
+
for row in 3..7 do
|
|
1988
|
+
for col in 'a'..'b'
|
|
1989
|
+
if row > 3 && row < 7 && col == 'a'
|
|
1990
|
+
assert_equal 'vertical1', xlsx.cell(col,row)
|
|
1991
|
+
else
|
|
1992
|
+
assert_nil xlsx.cell(col,row)
|
|
1993
|
+
end
|
|
1994
|
+
end
|
|
1995
|
+
end
|
|
1996
|
+
for row in 3..11 do
|
|
1997
|
+
for col in 'f'..'h'
|
|
1998
|
+
if row > 3 && row < 11 && col == 'g'
|
|
1999
|
+
assert_equal 'vertical2', xlsx.cell(col,row)
|
|
2000
|
+
else
|
|
2001
|
+
assert_nil xlsx.cell(col,row)
|
|
2002
|
+
end
|
|
2003
|
+
end
|
|
2004
|
+
end
|
|
2005
|
+
for row in 3..5 do
|
|
2006
|
+
for col in 'b'..'f'
|
|
2007
|
+
if row == 4 && col > 'b' && col < 'f'
|
|
2008
|
+
assert_equal 'horizontal', xlsx.cell(col,row)
|
|
2009
|
+
else
|
|
2010
|
+
assert_nil xlsx.cell(col,row)
|
|
2011
|
+
end
|
|
2012
|
+
end
|
|
2013
|
+
end
|
|
2014
|
+
for row in 8..13 do
|
|
2015
|
+
for col in 'a'..'e'
|
|
2016
|
+
if row > 8 && row < 13 && col > 'a' && col < 'e'
|
|
2017
|
+
assert_equal 'block', xlsx.cell(col,row)
|
|
2018
|
+
else
|
|
2019
|
+
assert_nil xlsx.cell(col,row)
|
|
2020
|
+
end
|
|
2021
|
+
end
|
|
2022
|
+
end
|
|
2023
|
+
end
|
|
2024
|
+
|
|
2025
|
+
def test_noexpand_merged_range
|
|
2026
|
+
return unless EXCELX
|
|
2027
|
+
xlsx = Roo::Excelx.new(File.join(TESTDIR, "merged_ranges.xlsx"))
|
|
2028
|
+
for row in 3..7 do
|
|
2029
|
+
for col in 'a'..'b'
|
|
2030
|
+
if row == 4 && col == 'a'
|
|
2031
|
+
assert_equal 'vertical1', xlsx.cell(col,row)
|
|
2032
|
+
else
|
|
2033
|
+
assert_nil xlsx.cell(col,row)
|
|
2034
|
+
end
|
|
2035
|
+
end
|
|
2036
|
+
end
|
|
2037
|
+
for row in 3..11 do
|
|
2038
|
+
for col in 'f'..'h'
|
|
2039
|
+
if row == 4 && col == 'g'
|
|
2040
|
+
assert_equal 'vertical2', xlsx.cell(col,row)
|
|
2041
|
+
else
|
|
2042
|
+
assert_nil xlsx.cell(col,row)
|
|
2043
|
+
end
|
|
2044
|
+
end
|
|
2045
|
+
end
|
|
2046
|
+
for row in 3..5 do
|
|
2047
|
+
for col in 'b'..'f'
|
|
2048
|
+
if row == 4 && col == 'c'
|
|
2049
|
+
assert_equal 'horizontal', xlsx.cell(col,row)
|
|
2050
|
+
else
|
|
2051
|
+
assert_nil xlsx.cell(col,row)
|
|
2052
|
+
end
|
|
2053
|
+
end
|
|
2054
|
+
end
|
|
2055
|
+
for row in 8..13 do
|
|
2056
|
+
for col in 'a'..'e'
|
|
2057
|
+
if row == 9 && col == 'b'
|
|
2058
|
+
assert_equal 'block', xlsx.cell(col,row)
|
|
2059
|
+
else
|
|
2060
|
+
assert_nil xlsx.cell(col,row)
|
|
2061
|
+
end
|
|
2062
|
+
end
|
|
2063
|
+
end
|
|
2064
|
+
end
|
|
2065
|
+
|
|
2066
|
+
|
|
2292
2067
|
end # class
|