workbook 0.8.0 → 0.8.2

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 (74) hide show
  1. checksums.yaml +4 -4
  2. data/.codeclimate.yml +21 -0
  3. data/.gitignore +4 -1
  4. data/.ruby-version +1 -1
  5. data/.travis.yml +4 -4
  6. data/CHANGELOG.md +16 -0
  7. data/Gemfile +4 -2
  8. data/README.md +9 -7
  9. data/Rakefile +9 -7
  10. data/lib/workbook/book.rb +74 -61
  11. data/lib/workbook/cell.rb +59 -12
  12. data/lib/workbook/column.rb +33 -29
  13. data/lib/workbook/format.rb +24 -23
  14. data/lib/workbook/generatetypes.rb +6 -5
  15. data/lib/workbook/modules/cache.rb +8 -7
  16. data/lib/workbook/modules/cell.rb +78 -99
  17. data/lib/workbook/modules/diff_sort.rb +93 -82
  18. data/lib/workbook/modules/raw_objects_storage.rb +7 -7
  19. data/lib/workbook/modules/type_parser.rb +31 -21
  20. data/lib/workbook/nil_value.rb +5 -9
  21. data/lib/workbook/readers/csv_reader.rb +7 -9
  22. data/lib/workbook/readers/ods_reader.rb +49 -49
  23. data/lib/workbook/readers/txt_reader.rb +7 -7
  24. data/lib/workbook/readers/xls_reader.rb +22 -32
  25. data/lib/workbook/readers/xls_shared.rb +107 -116
  26. data/lib/workbook/readers/xlsx_reader.rb +47 -46
  27. data/lib/workbook/row.rb +100 -83
  28. data/lib/workbook/sheet.rb +48 -37
  29. data/lib/workbook/table.rb +97 -71
  30. data/lib/workbook/template.rb +13 -14
  31. data/lib/workbook/types/date.rb +2 -1
  32. data/lib/workbook/types/false.rb +1 -1
  33. data/lib/workbook/types/false_class.rb +2 -1
  34. data/lib/workbook/types/nil.rb +1 -1
  35. data/lib/workbook/types/nil_class.rb +3 -2
  36. data/lib/workbook/types/numeric.rb +3 -2
  37. data/lib/workbook/types/string.rb +3 -2
  38. data/lib/workbook/types/time.rb +3 -2
  39. data/lib/workbook/types/true.rb +1 -1
  40. data/lib/workbook/types/true_class.rb +3 -2
  41. data/lib/workbook/version.rb +3 -2
  42. data/lib/workbook/writers/csv_table_writer.rb +11 -12
  43. data/lib/workbook/writers/html_writer.rb +35 -37
  44. data/lib/workbook/writers/json_table_writer.rb +9 -10
  45. data/lib/workbook/writers/xls_writer.rb +31 -35
  46. data/lib/workbook/writers/xlsx_writer.rb +46 -28
  47. data/lib/workbook.rb +17 -14
  48. data/test/helper.rb +8 -5
  49. data/test/test_book.rb +43 -38
  50. data/test/test_column.rb +29 -25
  51. data/test/test_format.rb +53 -55
  52. data/test/test_functional.rb +9 -8
  53. data/test/test_modules_cache.rb +20 -17
  54. data/test/test_modules_cell.rb +49 -46
  55. data/test/test_modules_table_diff_sort.rb +56 -63
  56. data/test/test_modules_type_parser.rb +63 -31
  57. data/test/test_readers_csv_reader.rb +50 -42
  58. data/test/test_readers_ods_reader.rb +30 -31
  59. data/test/test_readers_txt_reader.rb +23 -23
  60. data/test/test_readers_xls_reader.rb +22 -23
  61. data/test/test_readers_xls_shared.rb +5 -4
  62. data/test/test_readers_xlsx_reader.rb +46 -37
  63. data/test/test_row.rb +107 -109
  64. data/test/test_sheet.rb +43 -35
  65. data/test/test_table.rb +84 -60
  66. data/test/test_template.rb +18 -15
  67. data/test/test_types_date.rb +7 -7
  68. data/test/test_writers_csv_writer.rb +24 -0
  69. data/test/test_writers_html_writer.rb +44 -41
  70. data/test/test_writers_json_writer.rb +11 -9
  71. data/test/test_writers_xls_writer.rb +52 -35
  72. data/test/test_writers_xlsx_writer.rb +64 -34
  73. data/workbook.gemspec +26 -27
  74. metadata +93 -27
@@ -1,24 +1,26 @@
1
- # -*- encoding : utf-8 -*-
2
- require File.join(File.dirname(__FILE__), 'helper')
1
+ # frozen_string_literal: true
2
+
3
+ require File.join(File.dirname(__FILE__), "helper")
3
4
  module Readers
4
- class TestCsvWriter < Minitest::Test
5
+ class TestCsvReader < Minitest::Test
5
6
  def test_open
6
7
  w = Workbook::Book.new
7
- w.import File.join(File.dirname(__FILE__), 'artifacts/simple_csv.csv')
8
+ w.import File.join(File.dirname(__FILE__), "artifacts/simple_csv.csv")
8
9
  # reads
9
10
  # a,b,c,d
10
11
  # 1,2,3,4
11
12
  # 5,3,2,1
12
13
  # "asdf",123,12,2001-02-02
13
14
  #
14
- assert_equal([:a,:b,:c,:d],w.sheet.table.header.to_symbols)
15
- assert_equal(3,w.sheet.table[2][:b].value)
16
- assert_equal("asdf",w.sheet.table[3][:a].value)
17
- assert_equal(Date.new(2001,2,2),w.sheet.table[3][:d].value)
15
+ assert_equal([:a, :b, :c, :d], w.sheet.table.header.to_symbols)
16
+ assert_equal(3, w.sheet.table[2][:b].value)
17
+ assert_equal("asdf", w.sheet.table[3][:a].value)
18
+ assert_equal(Date.new(2001, 2, 2), w.sheet.table[3][:d].value)
18
19
  end
20
+
19
21
  def test_excel_csv_open
20
22
  w = Workbook::Book.new
21
- w.import File.join(File.dirname(__FILE__), 'artifacts/simple_excel_csv.csv')
23
+ w.import File.join(File.dirname(__FILE__), "artifacts/simple_excel_csv.csv")
22
24
  # reads
23
25
  # a;b;c
24
26
  # 1-1-2001;23;1
@@ -26,81 +28,87 @@ module Readers
26
28
  # 23;asdf;sadf
27
29
  # 12;23;12-02-2011 12:23
28
30
  # 12 asadf; 6/12 ovk getekend teru...; 6/12
29
- #y w.sheet.table
30
- assert_equal([:a,:b,:c],w.sheet.table.header.to_symbols)
31
- assert_equal(23,w.sheet.table[2][:b].value)
32
- assert_equal("sadf",w.sheet.table[3][:c].value)
33
- assert_equal(Date.new(2001,1,1),w.sheet.table[1][:a].value)
34
- assert_equal(DateTime.new(2011,2,12,12,23),w.sheet.table[4][:c].value)
31
+ # y w.sheet.table
32
+ assert_equal([:a, :b, :c], w.sheet.table.header.to_symbols)
33
+ assert_equal(23, w.sheet.table[2][:b].value)
34
+ assert_equal("sadf", w.sheet.table[3][:c].value)
35
+ assert_equal(Date.new(2001, 1, 1), w.sheet.table[1][:a].value)
36
+ assert_equal(DateTime.new(2011, 2, 12, 12, 23), w.sheet.table[4][:c].value)
35
37
  assert_equal("6/12 ovk getekend terugontv.+>acq ter tekening. 13/12 ovk getekend terugontv.+>Fred ter tekening.", w.sheet.table[5][:b].value)
36
- assert_equal("6/12",w.sheet.table[5][:c].value)
38
+ assert_equal("6/12", w.sheet.table[5][:c].value)
37
39
  end
40
+
38
41
  def test_excel_standardized_open
39
42
  w = Workbook::Book.new
40
- w.import File.join(File.dirname(__FILE__), 'artifacts/excel_different_types.csv')
43
+ w.import File.join(File.dirname(__FILE__), "artifacts/excel_different_types.csv")
41
44
  # reads
42
45
  # a,b,c,d
43
46
  # 2012-02-22,2014-12-27,2012-11-23,2012-11-12T04:20:00+00:00
44
47
  # c,222.0,,0027-12-14T05:21:00+00:00
45
48
  # 2012-01-22T11:00:00+00:00,42000.0,"goh, idd",ls
46
49
 
47
- assert_equal([:a,:b,:c, :d],w.sheet.table.header.to_symbols)
48
- assert_equal(Date.new(2012,2,22),w.sheet.table[1][:a].value)
49
- assert_equal("c",w.sheet.table[2][:a].value)
50
- assert_equal(DateTime.new(2012,1,22,11),w.sheet.table[3][:a].value)
51
- assert_equal(42000,w.sheet.table[3][:b].value)
50
+ assert_equal([:a, :b, :c, :d], w.sheet.table.header.to_symbols)
51
+ assert_equal(Date.new(2012, 2, 22), w.sheet.table[1][:a].value)
52
+ assert_equal("c", w.sheet.table[2][:a].value)
53
+ assert_equal(DateTime.new(2012, 1, 22, 11), w.sheet.table[3][:a].value)
54
+ assert_equal(42000, w.sheet.table[3][:b].value)
52
55
  assert_nil(w.sheet.table[2][:c].value)
53
56
  end
57
+
54
58
  def test_class_read_string
55
- s = File.read File.join(File.dirname(__FILE__), 'artifacts/simple_csv.csv')
56
- w = Workbook::Book.read( s, :csv )
59
+ s = File.read File.join(File.dirname(__FILE__), "artifacts/simple_csv.csv")
60
+ w = Workbook::Book.read(s, :csv)
57
61
  # reads
58
62
  # a,b,c,d
59
63
  # 1,2,3,4
60
64
  # 5,3,2,1
61
65
  # "asdf",123,12,2001-02-02
62
66
  #
63
- assert_equal([:a,:b,:c,:d],w.sheet.table.header.to_symbols)
64
- assert_equal(3,w.sheet.table[2][:b].value)
65
- assert_equal("asdf",w.sheet.table[3][:a].value)
66
- assert_equal(Date.new(2001,2,2),w.sheet.table[3][:d].value)
67
+ assert_equal([:a, :b, :c, :d], w.sheet.table.header.to_symbols)
68
+ assert_equal(3, w.sheet.table[2][:b].value)
69
+ assert_equal("asdf", w.sheet.table[3][:a].value)
70
+ assert_equal(Date.new(2001, 2, 2), w.sheet.table[3][:d].value)
67
71
  end
72
+
68
73
  def test_instance_read_string
69
74
  w = Workbook::Book.new
70
- s = File.read File.join(File.dirname(__FILE__), 'artifacts/simple_csv.csv')
71
- w.read( s, :csv )
75
+ s = File.read File.join(File.dirname(__FILE__), "artifacts/simple_csv.csv")
76
+ w.read(s, :csv)
72
77
  # reads
73
78
  # a,b,c,d
74
79
  # 1,2,3,4
75
80
  # 5,3,2,1
76
81
  # "asdf",123,12,2001-02-02
77
82
  #
78
- assert_equal([:a,:b,:c,:d],w.sheet.table.header.to_symbols)
79
- assert_equal(3,w.sheet.table[2][:b].value)
80
- assert_equal("asdf",w.sheet.table[3][:a].value)
81
- assert_equal(Date.new(2001,2,2),w.sheet.table[3][:d].value)
83
+ assert_equal([:a, :b, :c, :d], w.sheet.table.header.to_symbols)
84
+ assert_equal(3, w.sheet.table[2][:b].value)
85
+ assert_equal("asdf", w.sheet.table[3][:a].value)
86
+ assert_equal(Date.new(2001, 2, 2), w.sheet.table[3][:d].value)
82
87
  end
88
+
83
89
  def test_instance_read_stringio
84
90
  w = Workbook::Book.new
85
- sio = StringIO.new(File.read File.join(File.dirname(__FILE__), 'artifacts/simple_csv.csv'))
86
- w.read( sio, :csv )
91
+ sio = StringIO.new(File.read(File.join(File.dirname(__FILE__), "artifacts/simple_csv.csv")))
92
+ w.read(sio, :csv)
87
93
  # reads
88
94
  # a,b,c,d
89
95
  # 1,2,3,4
90
96
  # 5,3,2,1
91
97
  # "asdf",123,12,2001-02-02
92
98
  #
93
- assert_equal([:a,:b,:c,:d],w.sheet.table.header.to_symbols)
94
- assert_equal(3,w.sheet.table[2][:b].value)
95
- assert_equal("asdf",w.sheet.table[3][:a].value)
96
- assert_equal(Date.new(2001,2,2),w.sheet.table[3][:d].value)
99
+ assert_equal([:a, :b, :c, :d], w.sheet.table.header.to_symbols)
100
+ assert_equal(3, w.sheet.table[2][:b].value)
101
+ assert_equal("asdf", w.sheet.table[3][:a].value)
102
+ assert_equal(Date.new(2001, 2, 2), w.sheet.table[3][:d].value)
97
103
  end
104
+
98
105
  def test_from_string
99
106
  w = Workbook::Book.read("2013-03-19,JV,211,032,1,DBG A,,13,0147,\n", :csv, {converters: []})
100
- assert_equal("2013-03-19,JV,211,032,1,DBG A,,13,0147,\n",w.sheet.table.to_csv)
107
+ assert_equal("2013-03-19,JV,211,032,1,DBG A,,13,0147,\n", w.sheet.table.to_csv)
101
108
  end
109
+
102
110
  def test_semi_colon_separated_csv
103
- w = Workbook::Book.open(File.join(File.dirname(__FILE__), 'artifacts/semicolonseparated_in_csv.csv'))
111
+ w = Workbook::Book.open(File.join(File.dirname(__FILE__), "artifacts/semicolonseparated_in_csv.csv"))
104
112
  assert_equal("artikel,aantal,bedrag,reservering,aanmaaktijd_reservering,gastnummer,titel,voorletters,tussenvoegsels,naam,straat,huisnummer,postcode,woonplaats,email,tel_land,tel_net,tel_abon\nVriend - € 50,1,50.0,123,2016-10-27,7891,asdf,A.,,asdf,asdf ,55,1234 LM,AMSTERDAM,a@example.com,43,,123123\nVriend - € 35,1,35.0,123,2016-11-02,5676,Dasdfr,B.,,asdf,asdf asdf,12,1234 NN,UTRECHT,b@example.com,31,60,123123\n", w.sheet.table.to_csv)
105
113
  end
106
114
  end
@@ -1,21 +1,21 @@
1
- # -*- encoding : utf-8 -*-
2
- require File.join(File.dirname(__FILE__), 'helper')
1
+ # frozen_string_literal: true
2
+
3
+ require File.join(File.dirname(__FILE__), "helper")
3
4
  module Readers
4
5
  class TestOdsWriter < Minitest::Test
5
6
  def test_ods_open
6
-
7
7
  w = Workbook::Book.new
8
- w.import File.join(File.dirname(__FILE__), 'artifacts/book_with_tabs_and_colours.ods')
8
+ w.import File.join(File.dirname(__FILE__), "artifacts/book_with_tabs_and_colours.ods")
9
9
 
10
- assert_equal([:a, :b, :c, :d, :e],w.sheet.table.header.to_symbols)
11
- assert_equal(90588,w.sheet.table[2][:b].value)
10
+ assert_equal([:a, :b, :c, :d, :e], w.sheet.table.header.to_symbols)
11
+ assert_equal(90588, w.sheet.table[2][:b].value)
12
12
  end
13
13
 
14
14
  def test_styling
15
15
  w = Workbook::Book.new
16
- w.import File.join(File.dirname(__FILE__), 'artifacts/book_with_tabs_and_colours.ods')
17
- assert_equal("#ffff99",w.sheet.table[3][:c].format[:background_color])
18
- assert_equal(true,w.sheet.table[0][:e].format.all_names.include?("Heading1"))
16
+ w.import File.join(File.dirname(__FILE__), "artifacts/book_with_tabs_and_colours.ods")
17
+ assert_equal("#ffff99", w.sheet.table[3][:c].format[:background_color])
18
+ assert_equal(true, w.sheet.table[0][:e].format.all_names.include?("Heading1"))
19
19
  # TODO: column styles
20
20
  # assert_equal(8.13671875,w.sheet.table.first[:b].format[:width])
21
21
  # assert_equal(3.85546875,w.sheet.table.first[:a].format[:width])
@@ -24,8 +24,8 @@ module Readers
24
24
 
25
25
  def test_complex_types
26
26
  w = Workbook::Book.new
27
- w.import File.join(File.dirname(__FILE__), 'artifacts/complex_types.ods')
28
- assert_equal(Date.new(2011,11,15), w.sheet.table[2][3].value)
27
+ w.import File.join(File.dirname(__FILE__), "artifacts/complex_types.ods")
28
+ assert_equal(Date.new(2011, 11, 15), w.sheet.table[2][3].value)
29
29
  assert_equal("http://murb.nl", w.sheet.table[3][2].value)
30
30
  assert_equal("Sadfasdfsd > 2", w.sheet.table[4][2].value)
31
31
  assert_equal(1.2, w.sheet.table[3][1].value)
@@ -33,39 +33,38 @@ module Readers
33
33
 
34
34
  def test_excel_standardized_open
35
35
  w = Workbook::Book.new
36
- w.import File.join(File.dirname(__FILE__), 'artifacts/excel_different_types.ods')
37
- assert_equal([:a,:b,:c, :d],w.sheet.table.header.to_symbols[0..3])
38
- assert_equal(Date.new(2012,2,22),w.sheet.table[1][:a].value)
39
- assert_equal("c",w.sheet.table[2][:a].value)
40
- assert_equal(DateTime.new(2012,1,22,11),w.sheet.table[3][:a].value)
41
- assert_equal("42000",w.sheet.table[3][:b].value.to_s)
36
+ w.import File.join(File.dirname(__FILE__), "artifacts/excel_different_types.ods")
37
+ assert_equal([:a, :b, :c, :d], w.sheet.table.header.to_symbols[0..3])
38
+ assert_equal(Date.new(2012, 2, 22), w.sheet.table[1][:a].value)
39
+ assert_equal("c", w.sheet.table[2][:a].value)
40
+ assert_equal(DateTime.new(2012, 1, 22, 11), w.sheet.table[3][:a].value)
41
+ assert_equal("42000", w.sheet.table[3][:b].value.to_s)
42
42
  assert_nil(w.sheet.table[2][:c].value)
43
43
  end
44
44
 
45
45
  def test_sheet_with_combined_cells
46
46
  w = Workbook::Book.new
47
- w.import File.join(File.dirname(__FILE__), 'artifacts/sheet_with_combined_cells.ods')
47
+ w.import File.join(File.dirname(__FILE__), "artifacts/sheet_with_combined_cells.ods")
48
48
  t = w.sheet.table
49
- assert_equal("14 90589",t[1][:a].value)
50
- assert_equal(Workbook::NilValue,t[1][:b].value.class)
51
- assert_equal(:covered,t[1][:b].value.reason)
52
- assert_equal(2,t[1][:a].colspan)
49
+ assert_equal("14 90589", t[1][:a].value)
50
+ assert_equal(Workbook::NilValue, t[1][:b].value.class)
51
+ assert_equal(:covered, t[1][:b].value.reason)
52
+ assert_equal(2, t[1][:a].colspan)
53
53
  assert_nil(t[1][:c].colspan)
54
- assert_equal(2,t["D3"].rowspan)
55
- assert_equal(2,t["D5"].rowspan)
56
- assert_equal(2,t["D5"].colspan)
54
+ assert_equal(2, t["D3"].rowspan)
55
+ assert_equal(2, t["D5"].rowspan)
56
+ assert_equal(2, t["D5"].colspan)
57
57
  end
58
58
 
59
59
  def test_book_with_colspans
60
60
  w = Workbook::Book.new
61
- w.import File.join(File.dirname(__FILE__), 'artifacts/book_with_colspans.ods')
61
+ w.import File.join(File.dirname(__FILE__), "artifacts/book_with_colspans.ods")
62
62
  t = w.sheet.table
63
- assert_equal(2,t["B1"].colspan)
64
- assert_equal(2,t["D1"].colspan)
63
+ assert_equal(2, t["B1"].colspan)
64
+ assert_equal(2, t["D1"].colspan)
65
65
  assert_nil(t["D3"].value)
66
- assert_equal("g",t["A19"].value)
67
- assert_equal(0.03,t["D17"].value)
66
+ assert_equal("g", t["A19"].value)
67
+ assert_equal(0.03, t["D17"].value)
68
68
  end
69
-
70
69
  end
71
70
  end
@@ -1,5 +1,6 @@
1
- # -*- encoding : utf-8 -*-
2
- require File.join(File.dirname(__FILE__), 'helper')
1
+ # frozen_string_literal: true
2
+
3
+ require File.join(File.dirname(__FILE__), "helper")
3
4
  module Readers
4
5
  class TestTxtReader < Minitest::Test
5
6
  # Should one day throw an error..
@@ -18,11 +19,11 @@ module Readers
18
19
  # c,222.0,,0027-12-14T05:21:00+00:00
19
20
  # 2012-01-22T11:00:00+00:00,42000.0,"goh, idd",ls
20
21
 
21
- assert_equal([:a,:b,:c, :d],w.sheet.table.header.to_symbols)
22
- assert_equal(Date.new(2012,2,22),w.sheet.table[1][:a].value)
23
- assert_equal("c",w.sheet.table[2][:a].value)
24
- assert_equal(DateTime.new(2012,1,22,11),w.sheet.table[3][:a].value)
25
- assert_equal(42000,w.sheet.table[3][:b].value)
22
+ assert_equal([:a, :b, :c, :d], w.sheet.table.header.to_symbols)
23
+ assert_equal(Date.new(2012, 2, 22), w.sheet.table[1][:a].value)
24
+ assert_equal("c", w.sheet.table[2][:a].value)
25
+ assert_equal(DateTime.new(2012, 1, 22, 11), w.sheet.table[3][:a].value)
26
+ assert_equal(42000, w.sheet.table[3][:b].value)
26
27
  assert_nil(w.sheet.table[2][:c].value)
27
28
  end
28
29
 
@@ -35,11 +36,11 @@ module Readers
35
36
  # c,222.0,,0027-12-14T05:21:00+00:00
36
37
  # 2012-01-22T11:00:00+00:00,42000.0,"goh, idd",ls
37
38
 
38
- assert_equal([:a,:b,:c, :d],w.sheet.table.header.to_symbols)
39
- assert_equal(Date.new(2012,2,22),w.sheet.table[1][:a].value)
40
- assert_equal("c",w.sheet.table[2][:a].value)
41
- assert_equal(DateTime.new(2012,1,22,11),w.sheet.table[3][:a].value)
42
- assert_equal("42000",w.sheet.table[3][:b].value.to_s)
39
+ assert_equal([:a, :b, :c, :d], w.sheet.table.header.to_symbols)
40
+ assert_equal(Date.new(2012, 2, 22), w.sheet.table[1][:a].value)
41
+ assert_equal("c", w.sheet.table[2][:a].value)
42
+ assert_equal(DateTime.new(2012, 1, 22, 11), w.sheet.table[3][:a].value)
43
+ assert_equal("42000", w.sheet.table[3][:b].value.to_s)
43
44
  assert_nil(w.sheet.table[2][:c].value)
44
45
  end
45
46
 
@@ -53,11 +54,11 @@ module Readers
53
54
  # c,222.0,,0027-12-14T05:21:00+00:00
54
55
  # 2012-01-22T11:00:00+00:00,42000.0,"goh, idd",ls
55
56
 
56
- assert_equal([:a,:b,:c, :d],w.sheet.table.header.to_symbols)
57
- assert_equal(Date.new(2012,2,22),w.sheet.table[1][:a].value)
58
- assert_equal("c",w.sheet.table[2][:a].value)
59
- assert_equal(DateTime.new(2012,1,22,11),w.sheet.table[3][:a].value)
60
- assert_equal(42000,w.sheet.table[3][:b].value)
57
+ assert_equal([:a, :b, :c, :d], w.sheet.table.header.to_symbols)
58
+ assert_equal(Date.new(2012, 2, 22), w.sheet.table[1][:a].value)
59
+ assert_equal("c", w.sheet.table[2][:a].value)
60
+ assert_equal(DateTime.new(2012, 1, 22, 11), w.sheet.table[3][:a].value)
61
+ assert_equal(42000, w.sheet.table[3][:b].value)
61
62
  assert_nil(w.sheet.table[2][:c].value)
62
63
  end
63
64
 
@@ -71,13 +72,12 @@ module Readers
71
72
  # c,222.0,,0027-12-14T05:21:00+00:00
72
73
  # 2012-01-22T11:00:00+00:00,42000.0,"goh, idd",ls
73
74
 
74
- assert_equal([:a,:b,:c, :d],w.sheet.table.header.to_symbols)
75
- assert_equal(Date.new(2012,2,22),w.sheet.table[1][:a].value)
76
- assert_equal("c",w.sheet.table[2][:a].value)
77
- assert_equal(DateTime.new(2012,1,22,11),w.sheet.table[3][:a].value)
78
- assert_equal(42000,w.sheet.table[3][:b].value)
75
+ assert_equal([:a, :b, :c, :d], w.sheet.table.header.to_symbols)
76
+ assert_equal(Date.new(2012, 2, 22), w.sheet.table[1][:a].value)
77
+ assert_equal("c", w.sheet.table[2][:a].value)
78
+ assert_equal(DateTime.new(2012, 1, 22, 11), w.sheet.table[3][:a].value)
79
+ assert_equal(42000, w.sheet.table[3][:b].value)
79
80
  assert_nil(w.sheet.table[2][:c].value)
80
81
  end
81
-
82
82
  end
83
83
  end
@@ -1,24 +1,23 @@
1
- # -*- encoding : utf-8 -*-
2
- require File.join(File.dirname(__FILE__), 'helper')
1
+ # frozen_string_literal: true
2
+
3
+ require File.join(File.dirname(__FILE__), "helper")
3
4
  module Readers
4
5
  class TestXlsWriter < Minitest::Test
5
6
  def test_xls_open
6
7
  w = Workbook::Book.new
7
- w.import File.join(File.dirname(__FILE__), 'artifacts/book_with_tabs_and_colours.xls')
8
- assert_equal([:a, :b, :c, :d, :e],w.sheet.table.header.to_symbols)
9
- assert_equal(90588,w.sheet.table[2][:b].value)
10
- assert_equal("#CCFFCC",w.sheet.table[3][:c].format[:background_color])
11
- assert_equal(8.13671875,w.sheet.table.first[:b].format[:width])
12
- assert_equal(3.85546875,w.sheet.table.first[:a].format[:width])
13
- assert_equal(25.14453125,w.sheet.table.first[:c].format[:width])
14
-
15
-
8
+ w.import File.join(File.dirname(__FILE__), "artifacts/book_with_tabs_and_colours.xls")
9
+ assert_equal([:a, :b, :c, :d, :e], w.sheet.table.header.to_symbols)
10
+ assert_equal(90588, w.sheet.table[2][:b].value)
11
+ assert_equal("#CCFFCC", w.sheet.table[3][:c].format[:background_color])
12
+ assert_equal(8.13671875, w.sheet.table.first[:b].format[:width])
13
+ assert_equal(3.85546875, w.sheet.table.first[:a].format[:width])
14
+ assert_equal(25.14453125, w.sheet.table.first[:c].format[:width])
16
15
  end
17
16
 
18
17
  def test_xls_complex_types
19
18
  w = Workbook::Book.new
20
- w.import File.join(File.dirname(__FILE__), 'artifacts/complex_types.xls')
21
- assert_equal(Date.new(2011,11,15), w.sheet.table[2][3].value)
19
+ w.import File.join(File.dirname(__FILE__), "artifacts/complex_types.xls")
20
+ assert_equal(Date.new(2011, 11, 15), w.sheet.table[2][3].value)
22
21
  assert_equal("http://murb.nl", w.sheet.table[3][2].value)
23
22
  assert_equal("sadfasdfsd!", w.sheet.table[4][2].value)
24
23
  assert_equal(1.2, w.sheet.table[2][1].value)
@@ -34,11 +33,11 @@ module Readers
34
33
  # c,222.0,,0027-12-14T05:21:00+00:00
35
34
  # 2012-01-22T11:00:00+00:00,42000.0,"goh, idd",ls
36
35
 
37
- assert_equal([:a,:b,:c, :d],w.sheet.table.header.to_symbols)
38
- assert_equal(Date.new(2012,2,22),w.sheet.table[1][:a].value)
39
- assert_equal("c",w.sheet.table[2][:a].value)
40
- assert_equal(DateTime.new(2012,1,22,11),w.sheet.table[3][:a].value)
41
- assert_equal(42000,w.sheet.table[3][:b].value)
36
+ assert_equal([:a, :b, :c, :d], w.sheet.table.header.to_symbols)
37
+ assert_equal(Date.new(2012, 2, 22), w.sheet.table[1][:a].value)
38
+ assert_equal("c", w.sheet.table[2][:a].value)
39
+ assert_equal(DateTime.new(2012, 1, 22, 11), w.sheet.table[3][:a].value)
40
+ assert_equal(42000, w.sheet.table[3][:b].value)
42
41
  assert_nil(w.sheet.table[2][:c].value)
43
42
  end
44
43
 
@@ -46,7 +45,7 @@ module Readers
46
45
  w = Workbook::Book.new
47
46
  w.import(File.join(File.dirname(__FILE__), "artifacts/txt_in_xls.xls"))
48
47
  assert_equal([:naam, :nummer, :ilt, :corporate_key, :naam_medewerker, nil, nil, :telefoon, :openingsdatum], w.sheet.table.header.to_symbols)
49
- assert_equal(["dddd", 2222, "i9000", "asd", "Anita", nil, "Betera", "012-3456789", Date.new(2011,10,5)], w.sheet.table[1].collect{|a| a.value})
48
+ assert_equal(["dddd", 2222, "i9000", "asd", "Anita", nil, "Betera", "012-3456789", Date.new(2011, 10, 5)], w.sheet.table[1].collect { |a| a.value })
50
49
  end
51
50
 
52
51
  def test_zip_in_xls_open
@@ -58,13 +57,13 @@ module Readers
58
57
  rescue CSV::MalformedCSVError
59
58
  failed_properly = true
60
59
  end
61
- assert_equal(true,failed_properly)
60
+ assert_equal(true, failed_properly)
62
61
  end
63
62
 
64
63
  def test_multi_sheet_opening
65
- b = Workbook::Book.open(File.join(File.dirname(__FILE__), 'artifacts/simple_sheet_many_sheets.xls'))
66
- assert_equal(["Diff_10", "Diff_9", "Diff_8", "Diff_7", "Diff_6", "Diff_5", "Diff_4", "Diff_3", "Diff_2", "Diff_1"], b.collect{|a| a.name})
67
- assert_equal([10, 9, 8, 7, 6, 5, 4, 3, 2, 1], b.collect{|a| a.table[1][0].value})
64
+ b = Workbook::Book.open(File.join(File.dirname(__FILE__), "artifacts/simple_sheet_many_sheets.xls"))
65
+ assert_equal(["Diff_10", "Diff_9", "Diff_8", "Diff_7", "Diff_6", "Diff_5", "Diff_4", "Diff_3", "Diff_2", "Diff_1"], b.collect { |a| a.name })
66
+ assert_equal([10, 9, 8, 7, 6, 5, 4, 3, 2, 1], b.collect { |a| a.table[1][0].value })
68
67
  end
69
68
  end
70
69
  end
@@ -1,10 +1,11 @@
1
- # -*- encoding : utf-8 -*-
2
- require File.join(File.dirname(__FILE__), 'helper')
1
+ # frozen_string_literal: true
2
+
3
+ require File.join(File.dirname(__FILE__), "helper")
3
4
  module Readers
4
5
  class TestXlsShared < Minitest::Test
5
6
  def test_xls_number_to_time
6
7
  w = Workbook::Book.new
7
- assert_equal(DateTime.new(2011,11,15),w.xls_number_to_time(40862))
8
+ assert_equal(DateTime.new(2011, 11, 15), w.xls_number_to_time(40862))
8
9
  end
9
10
  end
10
- end
11
+ end
@@ -1,75 +1,84 @@
1
- # -*- encoding : utf-8 -*-
2
- require File.join(File.dirname(__FILE__), 'helper')
1
+ # frozen_string_literal: true
2
+
3
+ require File.join(File.dirname(__FILE__), "helper")
3
4
  module Readers
4
5
  class TestXlsxReader < Minitest::Test
5
6
  def test_xlsx_open
6
7
  w = Workbook::Book.new
7
- w.import File.join(File.dirname(__FILE__), 'artifacts/book_with_tabs_and_colours.xlsx')
8
- assert_equal([:a, :b, :c, :d, :e],w.sheet.table.header.to_symbols)
9
- assert_equal([:anders,:dit],w[1].table.header.to_symbols)
10
- assert_equal(90588,w.sheet.table[2][:b].value)
11
- assert_equal(DateTime.new(2011,11,15),w.sheet.table[3][:d].value)
8
+ w.import File.join(File.dirname(__FILE__), "artifacts/book_with_tabs_and_colours.xlsx")
9
+ assert_equal([:a, :b, :c, :d, :e], w.sheet.table.header.to_symbols)
10
+ assert_equal([:anders, :dit], w[1].table.header.to_symbols)
11
+ assert_equal(90588, w.sheet.table[2][:b].value)
12
+ assert_equal(DateTime.new(2011, 11, 15), w.sheet.table[3][:d].value)
12
13
  # assert_equal("#CCFFCC",w.sheet.table[3][:c].format[:background_color]) #colour compatibility turned off for now...
13
- #assert_equal(8,w.sheet.table.first[:b].format[:width].round)
14
+ # assert_equal(8,w.sheet.table.first[:b].format[:width].round)
14
15
  # assert_equal(4,w.sheet.table.first[:a].format[:width].round)
15
16
  # assert_equal(25,w.sheet.table.first[:c].format[:width].round)
16
17
  end
18
+
17
19
  def test_open_native_xlsx
18
20
  w = Workbook::Book.new
19
- w.import File.join(File.dirname(__FILE__), 'artifacts/native_xlsx.xlsx')
20
- assert_equal([:datum_gemeld, :adm_gereed, :callnr],w.last.table.header.to_symbols)
21
- assert_equal("Callnr.",w.sheet.table[0][:callnr].value)
22
- assert_equal("2475617.00",w.sheet.table[3][:callnr].value)
23
- assert_equal("2012-12-03T12:30:00+00:00",w.sheet.table[7][:datum_gemeld].value.to_s)
24
- assert_equal("2012-12-03T09:4",w.sheet.table[6][:datum_gemeld].value.to_s[0..14])
21
+ w.import File.join(File.dirname(__FILE__), "artifacts/native_xlsx.xlsx")
22
+ assert_equal([:datum_gemeld, :adm_gereed, :callnr], w.last.table.header.to_symbols)
23
+ assert_equal("Callnr.", w.sheet.table[0][:callnr].value)
24
+ assert_equal("2475617.00", w.sheet.table[3][:callnr].value)
25
+ assert_equal("2012-12-03T12:30:00+00:00", w.sheet.table[7][:datum_gemeld].value.to_s)
26
+ assert_equal("2012-12-03T09:4", w.sheet.table[6][:datum_gemeld].value.to_s[0..14])
25
27
  end
28
+
26
29
  def test_ms_formatting_to_strftime
27
30
  w = Workbook::Book.new
28
- assert_nil(w.ms_formatting_to_strftime(nil));
29
- assert_nil(w.ms_formatting_to_strftime(""));
31
+ assert_nil(w.ms_formatting_to_strftime(nil))
32
+ assert_nil(w.ms_formatting_to_strftime(""))
30
33
  end
34
+
31
35
  def test_open_integer_xlsx
32
- w = Workbook::Book.open File.join(File.dirname(__FILE__), 'artifacts/integer_test.xlsx')
33
- assert_equal("2",w.sheet.table[1][1].value.to_s)
34
- assert_equal(2,w.sheet.table[1][1].value)
36
+ w = Workbook::Book.open File.join(File.dirname(__FILE__), "artifacts/integer_test.xlsx")
37
+ assert_equal("2", w.sheet.table[1][1].value.to_s)
38
+ assert_equal(2, w.sheet.table[1][1].value)
35
39
  end
40
+
36
41
  def test_different_types_xlsx
37
- w = Workbook::Book.open File.join(File.dirname(__FILE__), 'artifacts/excel_different_types.xlsx')
42
+ w = Workbook::Book.open File.join(File.dirname(__FILE__), "artifacts/excel_different_types.xlsx")
38
43
  t = w.sheet.table
39
- assert_equal("ls",t["D4"].value)
40
- assert_equal(true,t["C3"].value)
41
- assert_equal("c",t["C1"].value)
42
- assert_equal(222,t["B3"].value)
43
- assert_equal(4.23,t["C2"].value)
44
+ assert_equal("ls", t["D4"].value)
45
+ assert_equal(true, t["C3"].value)
46
+ assert_equal("c", t["C1"].value)
47
+ assert_equal(222, t["B3"].value)
48
+ assert_equal(4.23, t["C2"].value)
44
49
  assert(t["A4"].value.is_a?(Date))
45
- assert((DateTime.new(2012,1,22,11)-t["A4"].value) < 0.00001)
46
- assert_equal(42000,t["B4"].value)
47
- assert_equal(42000.22323,t["D2"].value)
50
+ assert((DateTime.new(2012, 1, 22, 11) - t["A4"].value) < 0.00001)
51
+ assert_equal(42000, t["B4"].value)
52
+ assert_equal(42000.22323, t["D2"].value)
48
53
  assert(t["A2"].value.is_a?(Date))
49
- assert((Date.new(2012,2,22)-t["A2"].value) < 0.00001)
50
- assert((Date.new(2014,12,27)-t["B2"].value) < 0.00001)
51
- assert_equal(false,t["E2"].value)
52
- assert_equal(true,t["E3"].value)
53
- assert_equal(true,t["E4"].value)
54
+ assert((Date.new(2012, 2, 22) - t["A2"].value) < 0.00001)
55
+ assert((Date.new(2014, 12, 27) - t["B2"].value) < 0.00001)
56
+ assert_equal(false, t["E2"].value)
57
+ assert_equal(true, t["E3"].value)
58
+ assert_equal(true, t["E4"].value)
54
59
  end
60
+
55
61
  def test_skipping_cells
56
- w = Workbook::Book.open File.join(File.dirname(__FILE__), 'artifacts/skippingcells.xlsx')
62
+ w = Workbook::Book.open File.join(File.dirname(__FILE__), "artifacts/skippingcells.xlsx")
57
63
  t = w.sheet.table
58
64
  assert_equal("a,b,c,d,e,f,g,h,i,j,k,l,m,n\n1,,,,,,,,,,,,,\n,2,,,,,,,,,,,,\n,,3,,,,,,,,,,,\n,,,4,,,,,,,,,,\n,,,,5,,,,,,,,,\n,,,,,6,,,,,,,,\n,,,,,,7,,,,,,,\n,,,,,,,8,,,,,,\n,,,,,,,,9,,,,,\n,,,,,,,,,10,,,,\n,,,,,,,,,,11,,,\n,,,,,,,,,,,12,,\n,,,,,,,,,,,,13,\n,,,,,,,,,,,,,14\na,,,,,,,,,,,,,\n,b,,,,,,,,,,,,\n,,c,,,,,,,,,,,\n,,,d,,,,,,,,,,\n,,,,e,,,,,,,,,\n,,,,,f,,,,,,,,\n,,,,,,g,,,,,,,\n,,,,,,,h,,,,,,\n,,,,,,,,i,,,,,\n,,,,,,,,,j,,,,\n,,,,,,,,,,k,,,\n,,,,,,,,,,,l,,\n,,,,,,,,,,,,m,\n,,,,,,,,,,,,,n\n", t.to_csv)
59
65
  end
66
+
60
67
  def test_bit_table_xlsx
61
- b = Workbook::Book.open File.join(File.dirname(__FILE__), 'artifacts/bigtable.xlsx')
68
+ b = Workbook::Book.open File.join(File.dirname(__FILE__), "artifacts/bigtable.xlsx")
62
69
  assert_equal(553, b.sheet.table.count)
63
70
  end
71
+
64
72
  def test_xlsx_with_empty_start
65
- b = Workbook::Book.open File.join(File.dirname(__FILE__), 'artifacts/xlsx_with_empty_start.xlsx')
73
+ b = Workbook::Book.open File.join(File.dirname(__FILE__), "artifacts/xlsx_with_empty_start.xlsx")
66
74
  t = b.sheet.table
67
75
  assert_nil(t["A3"].value)
68
76
  end
77
+
69
78
  def test_parse_shared_string_file
70
79
  file_contents = "<sst xmlns=\"http://schemas.openxmlformats.org/spreadsheetml/2006/main\" count=\"3095\" uniqueCount=\"1241\"><si><t>Nummer</t></si><si><t>Locatie</t></si><si><r><t>ZR 1</t></r><r><rPr><vertAlign val=\"superscript\"/><sz val=\"11\"/><rFont val=\"Calibri\"/><scheme val=\"minor\"/></rPr><t>e</t></r><r><rPr><sz val=\"11\"/><rFont val=\"Calibri\"/><family val=\"2\"/><scheme val=\"minor\"/></rPr><t xml:space=\"preserve\"> etage</t></r></si><si><t>Kaas</t></si></sst>"
71
80
  result = Workbook::Book.new.parse_shared_string_file(file_contents)
72
- assert_equal(["Nummer", "Locatie", "ZR 1e etage", "Kaas"],result)
81
+ assert_equal(["Nummer", "Locatie", "ZR 1e etage", "Kaas"], result)
73
82
  end
74
83
  end
75
84
  end