spreadsheet 0.6.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.
Files changed (47) hide show
  1. data/GUIDE.txt +209 -0
  2. data/History.txt +8 -0
  3. data/LICENSE.txt +619 -0
  4. data/Manifest.txt +46 -0
  5. data/README.txt +54 -0
  6. data/Rakefile +15 -0
  7. data/lib/parseexcel.rb +27 -0
  8. data/lib/parseexcel/parseexcel.rb +75 -0
  9. data/lib/parseexcel/parser.rb +11 -0
  10. data/lib/spreadsheet.rb +79 -0
  11. data/lib/spreadsheet/datatypes.rb +99 -0
  12. data/lib/spreadsheet/encodings.rb +49 -0
  13. data/lib/spreadsheet/excel.rb +75 -0
  14. data/lib/spreadsheet/excel/error.rb +26 -0
  15. data/lib/spreadsheet/excel/internals.rb +322 -0
  16. data/lib/spreadsheet/excel/internals/biff5.rb +17 -0
  17. data/lib/spreadsheet/excel/internals/biff8.rb +19 -0
  18. data/lib/spreadsheet/excel/offset.rb +37 -0
  19. data/lib/spreadsheet/excel/reader.rb +798 -0
  20. data/lib/spreadsheet/excel/reader/biff5.rb +22 -0
  21. data/lib/spreadsheet/excel/reader/biff8.rb +168 -0
  22. data/lib/spreadsheet/excel/row.rb +67 -0
  23. data/lib/spreadsheet/excel/sst_entry.rb +45 -0
  24. data/lib/spreadsheet/excel/workbook.rb +76 -0
  25. data/lib/spreadsheet/excel/worksheet.rb +85 -0
  26. data/lib/spreadsheet/excel/writer.rb +1 -0
  27. data/lib/spreadsheet/excel/writer/biff8.rb +66 -0
  28. data/lib/spreadsheet/excel/writer/format.rb +270 -0
  29. data/lib/spreadsheet/excel/writer/workbook.rb +586 -0
  30. data/lib/spreadsheet/excel/writer/worksheet.rb +556 -0
  31. data/lib/spreadsheet/font.rb +86 -0
  32. data/lib/spreadsheet/format.rb +172 -0
  33. data/lib/spreadsheet/formula.rb +9 -0
  34. data/lib/spreadsheet/row.rb +87 -0
  35. data/lib/spreadsheet/workbook.rb +120 -0
  36. data/lib/spreadsheet/worksheet.rb +215 -0
  37. data/lib/spreadsheet/writer.rb +29 -0
  38. data/test/data/test_copy.xls +0 -0
  39. data/test/data/test_version_excel5.xls +0 -0
  40. data/test/data/test_version_excel95.xls +0 -0
  41. data/test/data/test_version_excel97.xls +0 -0
  42. data/test/excel/row.rb +29 -0
  43. data/test/font.rb +163 -0
  44. data/test/integration.rb +1021 -0
  45. data/test/workbook.rb +21 -0
  46. data/test/worksheet.rb +62 -0
  47. metadata +113 -0
@@ -0,0 +1,1021 @@
1
+ #!/usr/bin/env ruby
2
+ # TestIntegration -- Spreadheet -- 08.10.2007 -- hwyss@ywesee.com
3
+
4
+ $: << File.expand_path('../lib', File.dirname(__FILE__))
5
+
6
+ require 'test/unit'
7
+ require 'spreadsheet'
8
+ require 'fileutils'
9
+
10
+ module Spreadsheet
11
+ class TestIntegration < Test::Unit::TestCase
12
+ @@iconv = Iconv.new('UTF-16LE', 'UTF8')
13
+ def setup
14
+ @var = File.expand_path 'var', File.dirname(__FILE__)
15
+ FileUtils.mkdir_p @var
16
+ @data = File.expand_path 'data', File.dirname(__FILE__)
17
+ FileUtils.mkdir_p @data
18
+ end
19
+ def teardown
20
+ Spreadsheet.client_encoding = 'UTF8'
21
+ FileUtils.rm_r @var
22
+ end
23
+ def test_copy__identical__file_paths
24
+ path = File.join @data, 'test_copy.xls'
25
+ copy = File.join @data, 'test_copy1.xls'
26
+ book = Spreadsheet.open path
27
+ assert_instance_of Excel::Workbook, book
28
+ book.write copy
29
+ assert_equal File.read(path), File.read(copy)
30
+ ensure
31
+ File.delete copy if File.exist? copy
32
+ end
33
+ def test_version_excel97__ooffice__utf16
34
+ Spreadsheet.client_encoding = 'UTF-16LE'
35
+ assert_equal 'UTF-16LE', Spreadsheet.client_encoding
36
+ path = File.join @data, 'test_version_excel97.xls'
37
+ book = Spreadsheet.open path
38
+ assert_instance_of Excel::Workbook, book
39
+ assert_equal 8, book.biff_version
40
+ assert_equal @@iconv.iconv('Microsoft Excel 97/2000/XP'),
41
+ book.version_string
42
+ enc = 'UTF-16LE'
43
+ if defined? Encoding
44
+ enc = Encoding.find enc
45
+ end
46
+ assert_equal enc, book.encoding
47
+ assert_equal 23, book.formats.size
48
+ assert_equal 4, book.fonts.size
49
+ str1 = book.shared_string 0
50
+ assert_equal @@iconv.iconv('Shared String'), str1
51
+ str2 = book.shared_string 1
52
+ assert_equal @@iconv.iconv('Another Shared String'), str2
53
+ str3 = book.shared_string 2
54
+ long = @@iconv.iconv('1234567890 ' * 1000)
55
+ if str3 != long
56
+ long.size.times do |idx|
57
+ len = idx.next
58
+ if str3[0,len] != long[0,len]
59
+ assert_equal long[idx - 5, 10], str3[idx - 5, 10], "in position #{idx}"
60
+ end
61
+ end
62
+ end
63
+ assert_equal long, str3
64
+ str4 = book.shared_string 3
65
+ long = @@iconv.iconv('9876543210 ' * 1000)
66
+ if str4 != long
67
+ long.size.times do |idx|
68
+ len = idx.next
69
+ if str4[0,len] != long[0,len]
70
+ assert_equal long[idx - 5, 10], str4[idx - 5, 10], "in position #{idx}"
71
+ end
72
+ end
73
+ end
74
+ assert_equal long, str4
75
+ sheet = book.worksheet 0
76
+ assert_equal 10, sheet.row_count
77
+ assert_equal 11, sheet.column_count
78
+ useds = [0,0,0,0,0,0,0,1,0,0]
79
+ unuseds = [2,2,1,1,1,2,1,11,1,1]
80
+ sheet.each do |row|
81
+ assert_equal useds.shift, row.first_used
82
+ assert_equal unuseds.shift, row.first_unused
83
+ end
84
+ assert unuseds.empty?, "not all rows were visited in Spreadsheet#each"
85
+ row = sheet.row 0
86
+ assert_equal str1, row[0]
87
+ assert_equal str1, sheet[0,0]
88
+ assert_equal str1, sheet.cell(0,0)
89
+ assert_equal str1, row[1]
90
+ assert_equal str1, sheet[0,1]
91
+ assert_equal str1, sheet.cell(0,1)
92
+ row = sheet.row 1
93
+ assert_equal str2, row[0]
94
+ assert_equal str2, sheet[1,0]
95
+ assert_equal str2, sheet.cell(1,0)
96
+ assert_equal str2, row[1]
97
+ assert_equal str2, sheet[1,1]
98
+ assert_equal str2, sheet.cell(1,1)
99
+ row = sheet.row 2
100
+ assert_equal str3, row[0]
101
+ assert_equal str3, sheet[2,0]
102
+ assert_equal str3, sheet.cell(2,0)
103
+ assert_nil row[1]
104
+ assert_nil sheet[2,1]
105
+ assert_nil sheet.cell(2,1)
106
+ row = sheet.row 3
107
+ assert_equal str4, row[0]
108
+ assert_equal str4, sheet[3,0]
109
+ assert_equal str4, sheet.cell(3,0)
110
+ assert_nil row[1]
111
+ assert_nil sheet[3,1]
112
+ assert_nil sheet.cell(3,1)
113
+ row = sheet.row 4
114
+ assert_equal 0.25, row[0]
115
+ assert_equal 0.25, sheet[4,0]
116
+ assert_equal 0.25, sheet.cell(4,0)
117
+ row = sheet.row 5
118
+ assert_equal 0.75, row[0]
119
+ assert_equal 0.75, sheet[5,0]
120
+ assert_equal 0.75, sheet.cell(5,0)
121
+ date = Date.new 1975, 8, 21
122
+ assert_equal date, row[1]
123
+ assert_equal date, sheet[5,1]
124
+ assert_equal date, sheet.cell(5,1)
125
+ row = sheet.row 6
126
+ assert_equal 1, row[0]
127
+ assert_equal 1, sheet[6,0]
128
+ assert_equal 1, sheet.cell(6,0)
129
+ row = sheet.row 7
130
+ assert_nil row[0]
131
+ assert_equal [1,2,3,4,5,6,7,8,9,0], row[1,10]
132
+ assert_equal [1,2,3,4,5,6,7,8,9,0], sheet[7,1..10]
133
+ assert_equal [1,2,3,4,5,6,7,8,9,0], sheet.cell(7,1..10)
134
+ row = sheet.row 8
135
+ assert_equal 0.0001, row[0]
136
+ row = sheet.row 9
137
+ assert_equal 0.00009, row[0]
138
+ end
139
+ def test_version_excel97__ooffice
140
+ path = File.join @data, 'test_version_excel97.xls'
141
+ book = Spreadsheet.open path
142
+ assert_instance_of Excel::Workbook, book
143
+ assert_equal 8, book.biff_version
144
+ assert_equal 'Microsoft Excel 97/2000/XP', book.version_string
145
+ enc = 'UTF-16LE'
146
+ if defined? Encoding
147
+ enc = Encoding.find enc
148
+ end
149
+ assert_equal enc, book.encoding
150
+ assert_equal 23, book.formats.size
151
+ assert_equal 4, book.fonts.size
152
+ str1 = book.shared_string 0
153
+ assert_equal 'Shared String', str1
154
+ str2 = book.shared_string 1
155
+ assert_equal 'Another Shared String', str2
156
+ str3 = book.shared_string 2
157
+ long = '1234567890 ' * 1000
158
+ if str3 != long
159
+ long.size.times do |idx|
160
+ len = idx.next
161
+ if str3[0,len] != long[0,len]
162
+ assert_equal long[idx - 5, 10], str3[idx - 5, 10], "in position #{idx}"
163
+ end
164
+ end
165
+ end
166
+ assert_equal long, str3
167
+ str4 = book.shared_string 3
168
+ long = '9876543210 ' * 1000
169
+ if str4 != long
170
+ long.size.times do |idx|
171
+ len = idx.next
172
+ if str4[0,len] != long[0,len]
173
+ assert_equal long[idx - 5, 10], str4[idx - 5, 10], "in position #{idx}"
174
+ end
175
+ end
176
+ end
177
+ assert_equal long, str4
178
+ sheet = book.worksheet 0
179
+ assert_equal 10, sheet.row_count
180
+ assert_equal 11, sheet.column_count
181
+ useds = [0,0,0,0,0,0,0,1,0,0]
182
+ unuseds = [2,2,1,1,1,2,1,11,1,1]
183
+ sheet.each do |row|
184
+ assert_equal useds.shift, row.first_used
185
+ assert_equal unuseds.shift, row.first_unused
186
+ end
187
+ assert unuseds.empty?, "not all rows were visited in Spreadsheet#each"
188
+ row = sheet.row 0
189
+ assert_equal str1, row[0]
190
+ assert_equal str1, sheet[0,0]
191
+ assert_equal str1, sheet.cell(0,0)
192
+ assert_equal str1, row[1]
193
+ assert_equal str1, sheet[0,1]
194
+ assert_equal str1, sheet.cell(0,1)
195
+ row = sheet.row 1
196
+ assert_equal str2, row[0]
197
+ assert_equal str2, sheet[1,0]
198
+ assert_equal str2, sheet.cell(1,0)
199
+ assert_equal str2, row[1]
200
+ assert_equal str2, sheet[1,1]
201
+ assert_equal str2, sheet.cell(1,1)
202
+ row = sheet.row 2
203
+ assert_equal str3, row[0]
204
+ assert_equal str3, sheet[2,0]
205
+ assert_equal str3, sheet.cell(2,0)
206
+ assert_nil row[1]
207
+ assert_nil sheet[2,1]
208
+ assert_nil sheet.cell(2,1)
209
+ row = sheet.row 3
210
+ assert_equal str4, row[0]
211
+ assert_equal str4, sheet[3,0]
212
+ assert_equal str4, sheet.cell(3,0)
213
+ assert_nil row[1]
214
+ assert_nil sheet[3,1]
215
+ assert_nil sheet.cell(3,1)
216
+ row = sheet.row 4
217
+ assert_equal 0.25, row[0]
218
+ assert_equal 0.25, sheet[4,0]
219
+ assert_equal 0.25, sheet.cell(4,0)
220
+ row = sheet.row 5
221
+ assert_equal 0.75, row[0]
222
+ assert_equal 0.75, sheet[5,0]
223
+ assert_equal 0.75, sheet.cell(5,0)
224
+ date = Date.new 1975, 8, 21
225
+ assert_equal date, row[1]
226
+ assert_equal date, sheet[5,1]
227
+ assert_equal date, sheet.cell(5,1)
228
+ row = sheet.row 6
229
+ assert_equal 1, row[0]
230
+ assert_equal 1, sheet[6,0]
231
+ assert_equal 1, sheet.cell(6,0)
232
+ row = sheet.row 7
233
+ assert_nil row[0]
234
+ assert_equal [1,2,3,4,5,6,7,8,9,0], row[1,10]
235
+ assert_equal [1,2,3,4,5,6,7,8,9,0], sheet[7,1..10]
236
+ assert_equal [1,2,3,4,5,6,7,8,9,0], sheet.cell(7,1..10)
237
+ row = sheet.row 8
238
+ assert_equal 0.0001, row[0]
239
+ row = sheet.row 9
240
+ assert_equal 0.00009, row[0]
241
+ end
242
+ def test_version_excel95__ooffice__utf16
243
+ Spreadsheet.client_encoding = 'UTF-16LE'
244
+ path = File.join @data, 'test_version_excel95.xls'
245
+ book = Spreadsheet.open path
246
+ assert_instance_of Excel::Workbook, book
247
+ assert_equal 5, book.biff_version
248
+ assert_equal @@iconv.iconv('Microsoft Excel 95'), book.version_string
249
+ enc = 'WINDOWS-1252'
250
+ if defined? Encoding
251
+ enc = Encoding.find enc
252
+ end
253
+ assert_equal enc, book.encoding
254
+ str1 = @@iconv.iconv('Shared String')
255
+ str2 = @@iconv.iconv('Another Shared String')
256
+ str3 = @@iconv.iconv(('1234567890 ' * 26)[0,255])
257
+ str4 = @@iconv.iconv(('9876543210 ' * 26)[0,255])
258
+ sheet = book.worksheet 0
259
+ assert_equal 8, sheet.row_count
260
+ assert_equal 11, sheet.column_count
261
+ useds = [0,0,0,0,0,0,0,1]
262
+ unuseds = [2,2,1,1,1,1,1,11]
263
+ sheet.each do |row|
264
+ assert_equal useds.shift, row.first_used
265
+ assert_equal unuseds.shift, row.first_unused
266
+ end
267
+ assert unuseds.empty?, "not all rows were visited in Spreadsheet#each"
268
+ row = sheet.row 0
269
+ assert_equal str1, row[0]
270
+ assert_equal str1, sheet[0,0]
271
+ assert_equal str1, sheet.cell(0,0)
272
+ assert_equal str1, row[1]
273
+ assert_equal str1, sheet[0,1]
274
+ assert_equal str1, sheet.cell(0,1)
275
+ row = sheet.row 1
276
+ assert_equal str2, row[0]
277
+ assert_equal str2, sheet[1,0]
278
+ assert_equal str2, sheet.cell(1,0)
279
+ assert_equal str2, row[1]
280
+ assert_equal str2, sheet[1,1]
281
+ assert_equal str2, sheet.cell(1,1)
282
+ row = sheet.row 2
283
+ assert_equal 510, row[0].size
284
+ assert_equal str3, row[0]
285
+ assert_equal str3, sheet[2,0]
286
+ assert_equal str3, sheet.cell(2,0)
287
+ assert_nil row[1]
288
+ assert_nil sheet[2,1]
289
+ assert_nil sheet.cell(2,1)
290
+ row = sheet.row 3
291
+ assert_equal 510, row[0].size
292
+ assert_equal str4, row[0]
293
+ assert_equal str4, sheet[3,0]
294
+ assert_equal str4, sheet.cell(3,0)
295
+ assert_nil row[1]
296
+ assert_nil sheet[3,1]
297
+ assert_nil sheet.cell(3,1)
298
+ row = sheet.row 4
299
+ assert_equal 0.25, row[0]
300
+ assert_equal 0.25, sheet[4,0]
301
+ assert_equal 0.25, sheet.cell(4,0)
302
+ row = sheet.row 5
303
+ assert_equal 0.75, row[0]
304
+ assert_equal 0.75, sheet[5,0]
305
+ assert_equal 0.75, sheet.cell(5,0)
306
+ row = sheet.row 6
307
+ assert_equal 1, row[0]
308
+ assert_equal 1, sheet[6,0]
309
+ assert_equal 1, sheet.cell(6,0)
310
+ row = sheet.row 7
311
+ assert_nil row[0]
312
+ assert_equal [1,2,3,4,5,6,7,8,9,0], row[1,10]
313
+ assert_equal [1,2,3,4,5,6,7,8,9,0], sheet[7,1..10]
314
+ assert_equal [1,2,3,4,5,6,7,8,9,0], sheet.cell(7,1..10)
315
+ end
316
+ def test_version_excel95__ooffice
317
+ path = File.join @data, 'test_version_excel95.xls'
318
+ book = Spreadsheet.open path
319
+ assert_instance_of Excel::Workbook, book
320
+ assert_equal 5, book.biff_version
321
+ assert_equal 'Microsoft Excel 95', book.version_string
322
+ enc = 'WINDOWS-1252'
323
+ if defined? Encoding
324
+ enc = Encoding.find enc
325
+ end
326
+ assert_equal enc, book.encoding
327
+ str1 = 'Shared String'
328
+ str2 = 'Another Shared String'
329
+ str3 = ('1234567890 ' * 26)[0,255]
330
+ str4 = ('9876543210 ' * 26)[0,255]
331
+ sheet = book.worksheet 0
332
+ assert_equal 8, sheet.row_count
333
+ assert_equal 11, sheet.column_count
334
+ useds = [0,0,0,0,0,0,0,1]
335
+ unuseds = [2,2,1,1,1,1,1,11]
336
+ sheet.each do |row|
337
+ assert_equal useds.shift, row.first_used
338
+ assert_equal unuseds.shift, row.first_unused
339
+ end
340
+ assert unuseds.empty?, "not all rows were visited in Spreadsheet#each"
341
+ row = sheet.row 0
342
+ assert_equal str1, row[0]
343
+ assert_equal str1, sheet[0,0]
344
+ assert_equal str1, sheet.cell(0,0)
345
+ assert_equal str1, row[1]
346
+ assert_equal str1, sheet[0,1]
347
+ assert_equal str1, sheet.cell(0,1)
348
+ row = sheet.row 1
349
+ assert_equal str2, row[0]
350
+ assert_equal str2, sheet[1,0]
351
+ assert_equal str2, sheet.cell(1,0)
352
+ assert_equal str2, row[1]
353
+ assert_equal str2, sheet[1,1]
354
+ assert_equal str2, sheet.cell(1,1)
355
+ row = sheet.row 2
356
+ assert_equal 255, row[0].size
357
+ assert_equal str3, row[0]
358
+ assert_equal str3, sheet[2,0]
359
+ assert_equal str3, sheet.cell(2,0)
360
+ assert_nil row[1]
361
+ assert_nil sheet[2,1]
362
+ assert_nil sheet.cell(2,1)
363
+ row = sheet.row 3
364
+ assert_equal 255, row[0].size
365
+ assert_equal str4, row[0]
366
+ assert_equal str4, sheet[3,0]
367
+ assert_equal str4, sheet.cell(3,0)
368
+ assert_nil row[1]
369
+ assert_nil sheet[3,1]
370
+ assert_nil sheet.cell(3,1)
371
+ row = sheet.row 4
372
+ assert_equal 0.25, row[0]
373
+ assert_equal 0.25, sheet[4,0]
374
+ assert_equal 0.25, sheet.cell(4,0)
375
+ row = sheet.row 5
376
+ assert_equal 0.75, row[0]
377
+ assert_equal 0.75, sheet[5,0]
378
+ assert_equal 0.75, sheet.cell(5,0)
379
+ row = sheet.row 6
380
+ assert_equal 1, row[0]
381
+ assert_equal 1, sheet[6,0]
382
+ assert_equal 1, sheet.cell(6,0)
383
+ row = sheet.row 7
384
+ assert_nil row[0]
385
+ assert_equal [1,2,3,4,5,6,7,8,9,0], row[1,10]
386
+ assert_equal [1,2,3,4,5,6,7,8,9,0], sheet[7,1..10]
387
+ assert_equal [1,2,3,4,5,6,7,8,9,0], sheet.cell(7,1..10)
388
+ end
389
+ def test_version_excel5__ooffice
390
+ path = File.join @data, 'test_version_excel5.xls'
391
+ book = Spreadsheet.open path
392
+ assert_instance_of Excel::Workbook, book
393
+ assert_equal 5, book.biff_version
394
+ assert_equal 'Microsoft Excel 95', book.version_string
395
+ enc = 'WINDOWS-1252'
396
+ if defined? Encoding
397
+ enc = Encoding.find enc
398
+ end
399
+ assert_equal enc, book.encoding
400
+ str1 = 'Shared String'
401
+ str2 = 'Another Shared String'
402
+ str3 = ('1234567890 ' * 26)[0,255]
403
+ str4 = ('9876543210 ' * 26)[0,255]
404
+ sheet = book.worksheet 0
405
+ assert_equal 8, sheet.row_count
406
+ assert_equal 11, sheet.column_count
407
+ useds = [0,0,0,0,0,0,0,1]
408
+ unuseds = [2,2,1,1,1,1,1,11]
409
+ sheet.each do |row|
410
+ assert_equal useds.shift, row.first_used
411
+ assert_equal unuseds.shift, row.first_unused
412
+ end
413
+ assert unuseds.empty?, "not all rows were visited in Spreadsheet#each"
414
+ row = sheet.row 0
415
+ assert_equal str1, row[0]
416
+ assert_equal str1, sheet[0,0]
417
+ assert_equal str1, sheet.cell(0,0)
418
+ assert_equal str1, row[1]
419
+ assert_equal str1, sheet[0,1]
420
+ assert_equal str1, sheet.cell(0,1)
421
+ row = sheet.row 1
422
+ assert_equal str2, row[0]
423
+ assert_equal str2, sheet[1,0]
424
+ assert_equal str2, sheet.cell(1,0)
425
+ assert_equal str2, row[1]
426
+ assert_equal str2, sheet[1,1]
427
+ assert_equal str2, sheet.cell(1,1)
428
+ row = sheet.row 2
429
+ assert_equal 255, row[0].size
430
+ assert_equal str3, row[0]
431
+ assert_equal str3, sheet[2,0]
432
+ assert_equal str3, sheet.cell(2,0)
433
+ assert_nil row[1]
434
+ assert_nil sheet[2,1]
435
+ assert_nil sheet.cell(2,1)
436
+ row = sheet.row 3
437
+ assert_equal 255, row[0].size
438
+ assert_equal str4, row[0]
439
+ assert_equal str4, sheet[3,0]
440
+ assert_equal str4, sheet.cell(3,0)
441
+ assert_nil row[1]
442
+ assert_nil sheet[3,1]
443
+ assert_nil sheet.cell(3,1)
444
+ row = sheet.row 4
445
+ assert_equal 0.25, row[0]
446
+ assert_equal 0.25, sheet[4,0]
447
+ assert_equal 0.25, sheet.cell(4,0)
448
+ row = sheet.row 5
449
+ assert_equal 0.75, row[0]
450
+ assert_equal 0.75, sheet[5,0]
451
+ assert_equal 0.75, sheet.cell(5,0)
452
+ row = sheet.row 6
453
+ assert_equal 1, row[0]
454
+ assert_equal 1, sheet[6,0]
455
+ assert_equal 1, sheet.cell(6,0)
456
+ row = sheet.row 7
457
+ assert_nil row[0]
458
+ assert_equal [1,2,3,4,5,6,7,8,9,0], row[1,10]
459
+ assert_equal [1,2,3,4,5,6,7,8,9,0], sheet[7,1..10]
460
+ assert_equal [1,2,3,4,5,6,7,8,9,0], sheet.cell(7,1..10)
461
+ end
462
+ def test_worksheets
463
+ path = File.join @data, 'test_copy.xls'
464
+ book = Spreadsheet.open path
465
+ sheets = book.worksheets
466
+ assert_equal 3, sheets.size
467
+ sheet = book.worksheet 0
468
+ assert_instance_of Excel::Worksheet, sheet
469
+ assert_equal sheet, book.worksheet('Sheet1')
470
+ end
471
+ def test_worksheets__utf16
472
+ Spreadsheet.client_encoding = 'UTF-16LE'
473
+ path = File.join @data, 'test_copy.xls'
474
+ book = Spreadsheet.open path
475
+ sheets = book.worksheets
476
+ assert_equal 3, sheets.size
477
+ sheet = book.worksheet 0
478
+ assert_instance_of Excel::Worksheet, sheet
479
+ assert_equal sheet, book.worksheet("S\000h\000e\000e\000t\0001\000")
480
+ end
481
+ def test_change_encoding
482
+ path = File.join @data, 'test_version_excel95.xls'
483
+ book = Spreadsheet.open path
484
+ assert_instance_of Excel::Workbook, book
485
+ assert_equal 5, book.biff_version
486
+ assert_equal 'Microsoft Excel 95', book.version_string
487
+ enc = 'WINDOWS-1252'
488
+ if defined? Encoding
489
+ enc = Encoding.find enc
490
+ end
491
+ assert_equal enc, book.encoding
492
+ enc = 'WINDOWS-1256'
493
+ if defined? Encoding
494
+ enc = Encoding.find enc
495
+ end
496
+ book.encoding = enc
497
+ path = File.join @var, 'test_change_encoding.xls'
498
+ book.write path
499
+ assert_nothing_raised do book = Spreadsheet.open path end
500
+ assert_equal enc, book.encoding
501
+ end
502
+ def test_change_cell
503
+ path = File.join @data, 'test_version_excel97.xls'
504
+ book = Spreadsheet.open path
505
+ assert_instance_of Excel::Workbook, book
506
+ assert_equal 8, book.biff_version
507
+ assert_equal 'Microsoft Excel 97/2000/XP', book.version_string
508
+ path = File.join @var, 'test_change_cell.xls'
509
+ str1 = book.shared_string 0
510
+ assert_equal 'Shared String', str1
511
+ str2 = book.shared_string 1
512
+ assert_equal 'Another Shared String', str2
513
+ str3 = book.shared_string 2
514
+ long = '1234567890 ' * 1000
515
+ if str3 != long
516
+ long.size.times do |idx|
517
+ len = idx.next
518
+ if str3[0,len] != long[0,len]
519
+ assert_equal long[idx - 5, 10], str3[idx - 5, 10], "in position #{idx}"
520
+ end
521
+ end
522
+ end
523
+ assert_equal long, str3
524
+ str4 = book.shared_string 3
525
+ long = '9876543210 ' * 1000
526
+ if str4 != long
527
+ long.size.times do |idx|
528
+ len = idx.next
529
+ if str4[0,len] != long[0,len]
530
+ assert_equal long[idx - 5, 10], str4[idx - 5, 10], "in position #{idx}"
531
+ end
532
+ end
533
+ end
534
+ assert_equal long, str4
535
+ sheet = book.worksheet 0
536
+ sheet[0,0] = 4
537
+ row = sheet.row 1
538
+ row[0] = 3
539
+ book.write path
540
+ assert_nothing_raised do book = Spreadsheet.open path end
541
+ sheet = book.worksheet 0
542
+ assert_equal 10, sheet.row_count
543
+ assert_equal 11, sheet.column_count
544
+ useds = [0,0,0,0,0,0,0,1,0,0]
545
+ unuseds = [2,2,1,1,1,2,1,11,1,1]
546
+ sheet.each do |row|
547
+ assert_equal useds.shift, row.first_used
548
+ assert_equal unuseds.shift, row.first_unused
549
+ end
550
+ assert unuseds.empty?, "not all rows were visited in Spreadsheet#each"
551
+ row = sheet.row 0
552
+ assert_equal 4, row[0]
553
+ assert_equal 4, sheet[0,0]
554
+ assert_equal 4, sheet.cell(0,0)
555
+ assert_equal str1, row[1]
556
+ assert_equal str1, sheet[0,1]
557
+ assert_equal str1, sheet.cell(0,1)
558
+ row = sheet.row 1
559
+ assert_equal 3, row[0]
560
+ assert_equal 3, sheet[1,0]
561
+ assert_equal 3, sheet.cell(1,0)
562
+ assert_equal str2, row[1]
563
+ assert_equal str2, sheet[1,1]
564
+ assert_equal str2, sheet.cell(1,1)
565
+ row = sheet.row 2
566
+ assert_equal str3, row[0]
567
+ assert_equal str3, sheet[2,0]
568
+ assert_equal str3, sheet.cell(2,0)
569
+ assert_nil row[1]
570
+ assert_nil sheet[2,1]
571
+ assert_nil sheet.cell(2,1)
572
+ row = sheet.row 3
573
+ assert_equal str4, row[0]
574
+ assert_equal str4, sheet[3,0]
575
+ assert_equal str4, sheet.cell(3,0)
576
+ assert_nil row[1]
577
+ assert_nil sheet[3,1]
578
+ assert_nil sheet.cell(3,1)
579
+ row = sheet.row 4
580
+ assert_equal 0.25, row[0]
581
+ assert_equal 0.25, sheet[4,0]
582
+ assert_equal 0.25, sheet.cell(4,0)
583
+ row = sheet.row 5
584
+ assert_equal 0.75, row[0]
585
+ assert_equal 0.75, sheet[5,0]
586
+ assert_equal 0.75, sheet.cell(5,0)
587
+ date = Date.new 1975, 8, 21
588
+ assert_equal date, row[1]
589
+ assert_equal date, sheet[5,1]
590
+ assert_equal date, sheet.cell(5,1)
591
+ row = sheet.row 6
592
+ assert_equal 1, row[0]
593
+ assert_equal 1, sheet[6,0]
594
+ assert_equal 1, sheet.cell(6,0)
595
+ row = sheet.row 7
596
+ assert_nil row[0]
597
+ assert_equal [1,2,3,4,5,6,7,8,9,0], row[1,10]
598
+ assert_equal [1,2,3,4,5,6,7,8,9,0], sheet[7,1..10]
599
+ assert_equal [1,2,3,4,5,6,7,8,9,0], sheet.cell(7,1..10)
600
+ row = sheet.row 8
601
+ assert_equal 0.0001, row[0]
602
+ row = sheet.row 9
603
+ assert_equal 0.00009, row[0]
604
+ end
605
+ def test_change_cell__complete_sst_rewrite
606
+ path = File.join @data, 'test_version_excel97.xls'
607
+ book = Spreadsheet.open path
608
+ assert_instance_of Excel::Workbook, book
609
+ assert_equal 8, book.biff_version
610
+ assert_equal 'Microsoft Excel 97/2000/XP', book.version_string
611
+ path = File.join @var, 'test_change_cell.xls'
612
+ str1 = book.shared_string 0
613
+ assert_equal 'Shared String', str1
614
+ str2 = book.shared_string 1
615
+ assert_equal 'Another Shared String', str2
616
+ str3 = book.shared_string 2
617
+ long = '1234567890 ' * 1000
618
+ if str3 != long
619
+ long.size.times do |idx|
620
+ len = idx.next
621
+ if str3[0,len] != long[0,len]
622
+ assert_equal long[idx - 5, 10], str3[idx - 5, 10], "in position #{idx}"
623
+ end
624
+ end
625
+ end
626
+ assert_equal long, str3
627
+ str4 = book.shared_string 3
628
+ long = '9876543210 ' * 1000
629
+ if str4 != long
630
+ long.size.times do |idx|
631
+ len = idx.next
632
+ if str4[0,len] != long[0,len]
633
+ assert_equal long[idx - 5, 10], str4[idx - 5, 10], "in position #{idx}"
634
+ end
635
+ end
636
+ end
637
+ assert_equal long, str4
638
+ sheet = book.worksheet 0
639
+ sheet[0,0] = 4
640
+ str5 = 'A completely different String'
641
+ sheet[0,1] = str5
642
+ row = sheet.row 1
643
+ row[0] = 3
644
+ book.write path
645
+ assert_nothing_raised do book = Spreadsheet.open path end
646
+ assert_equal str5, book.shared_string(0)
647
+ assert_equal str2, book.shared_string(1)
648
+ assert_equal str3, book.shared_string(2)
649
+ assert_equal str4, book.shared_string(3)
650
+ sheet = book.worksheet 0
651
+ assert_equal 10, sheet.row_count
652
+ assert_equal 11, sheet.column_count
653
+ useds = [0,0,0,0,0,0,0,1,0,0]
654
+ unuseds = [2,2,1,1,1,2,1,11,1,1]
655
+ sheet.each do |row|
656
+ assert_equal useds.shift, row.first_used
657
+ assert_equal unuseds.shift, row.first_unused
658
+ end
659
+ assert unuseds.empty?, "not all rows were visited in Spreadsheet#each"
660
+ row = sheet.row 0
661
+ assert_equal 4, row[0]
662
+ assert_equal 4, sheet[0,0]
663
+ assert_equal 4, sheet.cell(0,0)
664
+ assert_equal str5, row[1]
665
+ assert_equal str5, sheet[0,1]
666
+ assert_equal str5, sheet.cell(0,1)
667
+ row = sheet.row 1
668
+ assert_equal 3, row[0]
669
+ assert_equal 3, sheet[1,0]
670
+ assert_equal 3, sheet.cell(1,0)
671
+ assert_equal str2, row[1]
672
+ assert_equal str2, sheet[1,1]
673
+ assert_equal str2, sheet.cell(1,1)
674
+ row = sheet.row 2
675
+ assert_equal str3, row[0]
676
+ assert_equal str3, sheet[2,0]
677
+ assert_equal str3, sheet.cell(2,0)
678
+ assert_nil row[1]
679
+ assert_nil sheet[2,1]
680
+ assert_nil sheet.cell(2,1)
681
+ row = sheet.row 3
682
+ assert_equal str4, row[0]
683
+ assert_equal str4, sheet[3,0]
684
+ assert_equal str4, sheet.cell(3,0)
685
+ assert_nil row[1]
686
+ assert_nil sheet[3,1]
687
+ assert_nil sheet.cell(3,1)
688
+ row = sheet.row 4
689
+ assert_equal 0.25, row[0]
690
+ assert_equal 0.25, sheet[4,0]
691
+ assert_equal 0.25, sheet.cell(4,0)
692
+ row = sheet.row 5
693
+ assert_equal 0.75, row[0]
694
+ assert_equal 0.75, sheet[5,0]
695
+ assert_equal 0.75, sheet.cell(5,0)
696
+ date = Date.new 1975, 8, 21
697
+ assert_equal date, row[1]
698
+ assert_equal date, sheet[5,1]
699
+ assert_equal date, sheet.cell(5,1)
700
+ row = sheet.row 6
701
+ assert_equal 1, row[0]
702
+ assert_equal 1, sheet[6,0]
703
+ assert_equal 1, sheet.cell(6,0)
704
+ row = sheet.row 7
705
+ assert_nil row[0]
706
+ assert_equal [1,2,3,4,5,6,7,8,9,0], row[1,10]
707
+ assert_equal [1,2,3,4,5,6,7,8,9,0], sheet[7,1..10]
708
+ assert_equal [1,2,3,4,5,6,7,8,9,0], sheet.cell(7,1..10)
709
+ row = sheet.row 8
710
+ assert_equal 0.0001, row[0]
711
+ row = sheet.row 9
712
+ assert_equal 0.00009, row[0]
713
+ end
714
+ def test_write_new_workbook
715
+ book = Spreadsheet::Excel::Workbook.new
716
+ path = File.join @var, 'test_write_workbook.xls'
717
+ sheet1 = book.create_worksheet
718
+ str1 = 'Shared String'
719
+ str2 = 'Another Shared String'
720
+ str3 = '1234567890 ' * 1000
721
+ str4 = '9876543210 ' * 1000
722
+ sheet1[0,0] = str1
723
+ sheet1.row(0).push str1
724
+ sheet1.row(1).concat [str2, str2]
725
+ sheet1[2,0] = str3
726
+ sheet1[3,0] = str4
727
+ fmt = Format.new :color => 'red'
728
+ sheet1[4,0] = 0.25
729
+ sheet1.row(4).set_format 0, fmt
730
+ fmt = Format.new :color => 'aqua'
731
+ sheet1[5,0] = 0.75
732
+ sheet1.row(5).set_format 0, fmt
733
+ sheet1[6,0] = 1
734
+ fmt = Format.new :color => 'green'
735
+ sheet1.row(6).set_format 0, fmt
736
+ sheet1[6,1] = Date.new 2008, 10, 10
737
+ sheet1[6,2] = Date.new 2008, 10, 12
738
+ fmt = Format.new :number_format => 'DD.MM.YYYY'
739
+ sheet1.row(6).set_format 1, fmt
740
+ sheet1.update_row 7, nil, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0
741
+ sheet1[8,0] = 0.0005
742
+ sheet1[8,1] = 0.005
743
+ sheet1[8,2] = 0.05
744
+ sheet1[8,3] = 10.5
745
+ sheet1[8,4] = 1.05
746
+ sheet1[8,5] = 100.5
747
+ sheet1[8,6] = 10.05
748
+ sheet1[8,7] = 1.005
749
+ sheet1[9,0] = 100.5
750
+ sheet1[9,1] = 10.05
751
+ sheet1[9,2] = 1.005
752
+ sheet1[9,3] = 1000.5
753
+ sheet1[9,4] = 100.05
754
+ sheet1[9,5] = 10.005
755
+ sheet1[9,6] = 1.0005
756
+ sheet1[10,0] = 10000.5
757
+ sheet1[10,1] = 1000.05
758
+ sheet1[10,2] = 100.005
759
+ sheet1[10,3] = 10.0005
760
+ sheet1[10,4] = 1.00005
761
+ sheet1.insert_row 9, ['a', 'b', 'c']
762
+ assert_equal 'a', sheet1[9,0]
763
+ assert_equal 'b', sheet1[9,1]
764
+ assert_equal 'c', sheet1[9,2]
765
+ sheet1.delete_row 9
766
+ sheet2 = book.create_worksheet :name => 'my name'
767
+ book.write path
768
+ Spreadsheet.client_encoding = 'UTF-16LE'
769
+ str1 = @@iconv.iconv str1
770
+ str2 = @@iconv.iconv str2
771
+ str3 = @@iconv.iconv str3
772
+ str4 = @@iconv.iconv str4
773
+ assert_nothing_raised do book = Spreadsheet.open path end
774
+ assert_equal 'UTF-16LE', book.encoding
775
+ assert_equal str1, book.shared_string(0)
776
+ assert_equal str2, book.shared_string(1)
777
+ test = book.shared_string 2
778
+ if test != str3
779
+ str3.size.times do |idx|
780
+ len = idx.next
781
+ if test[0,len] != str3[0,len]
782
+ assert_equal str3[idx - 5, 10], test[idx - 5, 10], "in position #{idx}"
783
+ end
784
+ end
785
+ end
786
+ assert_equal str3, test
787
+ test = book.shared_string 3
788
+ if test != str4
789
+ str4.size.times do |idx|
790
+ len = idx.next
791
+ if test[0,len] != str4[0,len]
792
+ assert_equal str4[idx - 5, 10], test[idx - 5, 10], "in position #{idx}"
793
+ end
794
+ end
795
+ end
796
+ assert_equal str4, test
797
+ assert_equal 2, book.worksheets.size
798
+ sheet = book.worksheets.first
799
+ assert_instance_of Spreadsheet::Excel::Worksheet, sheet
800
+ assert_equal "W\000o\000r\000k\000s\000h\000e\000e\000t\0001\000",
801
+ sheet.name
802
+ assert_not_nil sheet.offset
803
+ row = sheet.row 0
804
+ assert_equal str1, row[0]
805
+ assert_equal str1, sheet[0,0]
806
+ assert_equal str1, sheet.cell(0,0)
807
+ assert_equal str1, row[1]
808
+ assert_equal str1, sheet[0,1]
809
+ assert_equal str1, sheet.cell(0,1)
810
+ row = sheet.row 1
811
+ assert_equal str2, row[0]
812
+ assert_equal str2, sheet[1,0]
813
+ assert_equal str2, sheet.cell(1,0)
814
+ assert_equal str2, row[1]
815
+ assert_equal str2, sheet[1,1]
816
+ assert_equal str2, sheet.cell(1,1)
817
+ row = sheet.row 2
818
+ assert_equal str3, row[0]
819
+ assert_equal str3, sheet[2,0]
820
+ assert_equal str3, sheet.cell(2,0)
821
+ assert_nil row[1]
822
+ assert_nil sheet[2,1]
823
+ assert_nil sheet.cell(2,1)
824
+ row = sheet.row 3
825
+ assert_equal str4, row[0]
826
+ assert_equal str4, sheet[3,0]
827
+ assert_equal str4, sheet.cell(3,0)
828
+ assert_nil row[1]
829
+ assert_nil sheet[3,1]
830
+ assert_nil sheet.cell(3,1)
831
+ row = sheet.row 4
832
+ assert_equal :red, row.format(0).font.color
833
+ assert_equal 0.25, row[0]
834
+ assert_equal 0.25, sheet[4,0]
835
+ assert_equal 0.25, sheet.cell(4,0)
836
+ row = sheet.row 5
837
+ assert_equal :cyan, row.format(0).font.color
838
+ assert_equal 0.75, row[0]
839
+ assert_equal 0.75, sheet[5,0]
840
+ assert_equal 0.75, sheet.cell(5,0)
841
+ row = sheet.row 6
842
+ assert_equal :green, row.format(0).font.color
843
+ assert_equal 1, row[0]
844
+ assert_equal 1, sheet[6,0]
845
+ assert_equal 1, sheet.cell(6,0)
846
+ assert_equal @@iconv.iconv('DD.MM.YYYY'), row.format(1).number_format
847
+ date = Date.new 2008, 10, 10
848
+ assert_equal date, row[1]
849
+ assert_equal date, sheet[6,1]
850
+ assert_equal date, sheet.cell(6,1)
851
+ assert_equal @@iconv.iconv('M/D/YY'), row.format(2).number_format
852
+ date = Date.new 2008, 10, 12
853
+ assert_equal date, row[2]
854
+ assert_equal date, sheet[6,2]
855
+ assert_equal date, sheet.cell(6,2)
856
+ row = sheet.row 7
857
+ assert_nil row[0]
858
+ assert_equal [1,2,3,4,5,6,7,8,9,0], row[1,10]
859
+ assert_equal [1,2,3,4,5,6,7,8,9,0], sheet[7,1..10]
860
+ assert_equal [1,2,3,4,5,6,7,8,9,0], sheet.cell(7,1..10)
861
+ assert_equal 0.0005, sheet1[8,0]
862
+ assert_equal 0.005, sheet1[8,1]
863
+ assert_equal 0.05, sheet1[8,2]
864
+ assert_equal 10.5, sheet1[8,3]
865
+ assert_equal 1.05, sheet1[8,4]
866
+ assert_equal 100.5, sheet1[8,5]
867
+ assert_equal 10.05, sheet1[8,6]
868
+ assert_equal 1.005, sheet1[8,7]
869
+ assert_equal 100.5, sheet1[9,0]
870
+ assert_equal 10.05, sheet1[9,1]
871
+ assert_equal 1.005, sheet1[9,2]
872
+ assert_equal 1000.5, sheet1[9,3]
873
+ assert_equal 100.05, sheet1[9,4]
874
+ assert_equal 10.005, sheet1[9,5]
875
+ assert_equal 1.0005, sheet1[9,6]
876
+ assert_equal 10000.5, sheet1[10,0]
877
+ assert_equal 1000.05, sheet1[10,1]
878
+ assert_equal 100.005, sheet1[10,2]
879
+ assert_equal 10.0005, sheet1[10,3]
880
+ assert_equal 1.00005, sheet1[10,4]
881
+ assert_instance_of Spreadsheet::Excel::Worksheet, sheet
882
+ sheet = book.worksheets.last
883
+ assert_equal "m\000y\000 \000n\000a\000m\000e\000",
884
+ sheet.name
885
+ assert_not_nil sheet.offset
886
+ end
887
+ def test_write_new_workbook__utf16
888
+ Spreadsheet.client_encoding = 'UTF-16LE'
889
+ book = Spreadsheet::Excel::Workbook.new
890
+ path = File.join @var, 'test_write_workbook.xls'
891
+ sheet1 = book.create_worksheet
892
+ str1 = @@iconv.iconv 'Shared String'
893
+ str2 = @@iconv.iconv 'Another Shared String'
894
+ str3 = @@iconv.iconv('1234567890 ' * 1000)
895
+ str4 = @@iconv.iconv('9876543210 ' * 1000)
896
+ sheet1[0,0] = str1
897
+ sheet1.row(0).push str1
898
+ sheet1.row(1).concat [str2, str2]
899
+ sheet1[2,0] = str3
900
+ sheet1[3,0] = str4
901
+ fmt = Format.new :color => 'red'
902
+ sheet1[4,0] = 0.25
903
+ sheet1.row(4).set_format 0, fmt
904
+ fmt = Format.new :color => 'aqua'
905
+ sheet1[5,0] = 0.75
906
+ sheet1.row(5).set_format 0, fmt
907
+ sheet1[6,0] = 1
908
+ fmt = Format.new :color => 'green'
909
+ sheet1.row(6).set_format 0, fmt
910
+ sheet1[6,1] = Date.new 2008, 10, 10
911
+ sheet1[6,2] = Date.new 2008, 10, 12
912
+ fmt = Format.new :number_format => "D\0D\0.\0M\0M\0.\0Y\0Y\0Y\0Y\0"
913
+ sheet1.row(6).set_format 1, fmt
914
+ sheet1.update_row 7, nil, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0
915
+ sheet2 = book.create_worksheet :name => "m\0y\0 \0n\0a\0m\0e\0"
916
+ book.write path
917
+ Spreadsheet.client_encoding = 'UTF8'
918
+ str1 = 'Shared String'
919
+ str2 = 'Another Shared String'
920
+ str3 = '1234567890 ' * 1000
921
+ str4 = '9876543210 ' * 1000
922
+ assert_nothing_raised do book = Spreadsheet.open path end
923
+ assert_equal 'UTF-16LE', book.encoding
924
+ assert_equal str1, book.shared_string(0)
925
+ assert_equal str2, book.shared_string(1)
926
+ test = book.shared_string 2
927
+ if test != str3
928
+ str3.size.times do |idx|
929
+ len = idx.next
930
+ if test[0,len] != str3[0,len]
931
+ assert_equal str3[idx - 5, 10], test[idx - 5, 10], "in position #{idx}"
932
+ end
933
+ end
934
+ end
935
+ assert_equal str3, test
936
+ test = book.shared_string 3
937
+ if test != str4
938
+ str4.size.times do |idx|
939
+ len = idx.next
940
+ if test[0,len] != str4[0,len]
941
+ assert_equal str4[idx - 5, 10], test[idx - 5, 10], "in position #{idx}"
942
+ end
943
+ end
944
+ end
945
+ assert_equal str4, test
946
+ assert_equal 2, book.worksheets.size
947
+ sheet = book.worksheets.first
948
+ assert_instance_of Spreadsheet::Excel::Worksheet, sheet
949
+ assert_equal "Worksheet1", sheet.name
950
+ assert_not_nil sheet.offset
951
+ row = sheet.row 0
952
+ assert_equal str1, row[0]
953
+ assert_equal str1, sheet[0,0]
954
+ assert_equal str1, sheet.cell(0,0)
955
+ assert_equal str1, row[1]
956
+ assert_equal str1, sheet[0,1]
957
+ assert_equal str1, sheet.cell(0,1)
958
+ row = sheet.row 1
959
+ assert_equal str2, row[0]
960
+ assert_equal str2, sheet[1,0]
961
+ assert_equal str2, sheet.cell(1,0)
962
+ assert_equal str2, row[1]
963
+ assert_equal str2, sheet[1,1]
964
+ assert_equal str2, sheet.cell(1,1)
965
+ row = sheet.row 2
966
+ assert_equal str3, row[0]
967
+ assert_equal str3, sheet[2,0]
968
+ assert_equal str3, sheet.cell(2,0)
969
+ assert_nil row[1]
970
+ assert_nil sheet[2,1]
971
+ assert_nil sheet.cell(2,1)
972
+ row = sheet.row 3
973
+ assert_equal str4, row[0]
974
+ assert_equal str4, sheet[3,0]
975
+ assert_equal str4, sheet.cell(3,0)
976
+ assert_nil row[1]
977
+ assert_nil sheet[3,1]
978
+ assert_nil sheet.cell(3,1)
979
+ row = sheet.row 4
980
+ assert_equal :red, row.format(0).font.color
981
+ assert_equal 0.25, row[0]
982
+ assert_equal 0.25, sheet[4,0]
983
+ assert_equal 0.25, sheet.cell(4,0)
984
+ row = sheet.row 5
985
+ assert_equal :cyan, row.format(0).font.color
986
+ assert_equal 0.75, row[0]
987
+ assert_equal 0.75, sheet[5,0]
988
+ assert_equal 0.75, sheet.cell(5,0)
989
+ row = sheet.row 6
990
+ assert_equal :green, row.format(0).font.color
991
+ assert_equal 1, row[0]
992
+ assert_equal 1, sheet[6,0]
993
+ assert_equal 1, sheet.cell(6,0)
994
+ assert_equal 'DD.MM.YYYY', row.format(1).number_format
995
+ date = Date.new 2008, 10, 10
996
+ assert_equal date, row[1]
997
+ assert_equal date, sheet[6,1]
998
+ assert_equal date, sheet.cell(6,1)
999
+ assert_equal 'M/D/YY', row.format(2).number_format
1000
+ date = Date.new 2008, 10, 12
1001
+ assert_equal date, row[2]
1002
+ assert_equal date, sheet[6,2]
1003
+ assert_equal date, sheet.cell(6,2)
1004
+ row = sheet.row 7
1005
+ assert_nil row[0]
1006
+ assert_equal [1,2,3,4,5,6,7,8,9,0], row[1,10]
1007
+ assert_equal [1,2,3,4,5,6,7,8,9,0], sheet[7,1..10]
1008
+ assert_equal [1,2,3,4,5,6,7,8,9,0], sheet.cell(7,1..10)
1009
+ assert_instance_of Spreadsheet::Excel::Worksheet, sheet
1010
+ sheet = book.worksheets.last
1011
+ assert_equal "my name",
1012
+ sheet.name
1013
+ assert_not_nil sheet.offset
1014
+ end
1015
+ def test_read_bsv
1016
+ book = Spreadsheet.open '/home/hwyss/cogito/oddb.org/data/xls/BSV_per_2008.10.01.xls'
1017
+ sheet = book.worksheet 0
1018
+ assert_equal Date.new(2000), sheet[1,6]
1019
+ end
1020
+ end
1021
+ end