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.
- checksums.yaml +4 -4
- data/.codeclimate.yml +21 -0
- data/.gitignore +4 -1
- data/.ruby-version +1 -1
- data/.travis.yml +4 -4
- data/CHANGELOG.md +16 -0
- data/Gemfile +4 -2
- data/README.md +9 -7
- data/Rakefile +9 -7
- data/lib/workbook/book.rb +74 -61
- data/lib/workbook/cell.rb +59 -12
- data/lib/workbook/column.rb +33 -29
- data/lib/workbook/format.rb +24 -23
- data/lib/workbook/generatetypes.rb +6 -5
- data/lib/workbook/modules/cache.rb +8 -7
- data/lib/workbook/modules/cell.rb +78 -99
- data/lib/workbook/modules/diff_sort.rb +93 -82
- data/lib/workbook/modules/raw_objects_storage.rb +7 -7
- data/lib/workbook/modules/type_parser.rb +31 -21
- data/lib/workbook/nil_value.rb +5 -9
- data/lib/workbook/readers/csv_reader.rb +7 -9
- data/lib/workbook/readers/ods_reader.rb +49 -49
- data/lib/workbook/readers/txt_reader.rb +7 -7
- data/lib/workbook/readers/xls_reader.rb +22 -32
- data/lib/workbook/readers/xls_shared.rb +107 -116
- data/lib/workbook/readers/xlsx_reader.rb +47 -46
- data/lib/workbook/row.rb +100 -83
- data/lib/workbook/sheet.rb +48 -37
- data/lib/workbook/table.rb +97 -71
- data/lib/workbook/template.rb +13 -14
- data/lib/workbook/types/date.rb +2 -1
- data/lib/workbook/types/false.rb +1 -1
- data/lib/workbook/types/false_class.rb +2 -1
- data/lib/workbook/types/nil.rb +1 -1
- data/lib/workbook/types/nil_class.rb +3 -2
- data/lib/workbook/types/numeric.rb +3 -2
- data/lib/workbook/types/string.rb +3 -2
- data/lib/workbook/types/time.rb +3 -2
- data/lib/workbook/types/true.rb +1 -1
- data/lib/workbook/types/true_class.rb +3 -2
- data/lib/workbook/version.rb +3 -2
- data/lib/workbook/writers/csv_table_writer.rb +11 -12
- data/lib/workbook/writers/html_writer.rb +35 -37
- data/lib/workbook/writers/json_table_writer.rb +9 -10
- data/lib/workbook/writers/xls_writer.rb +31 -35
- data/lib/workbook/writers/xlsx_writer.rb +46 -28
- data/lib/workbook.rb +17 -14
- data/test/helper.rb +8 -5
- data/test/test_book.rb +43 -38
- data/test/test_column.rb +29 -25
- data/test/test_format.rb +53 -55
- data/test/test_functional.rb +9 -8
- data/test/test_modules_cache.rb +20 -17
- data/test/test_modules_cell.rb +49 -46
- data/test/test_modules_table_diff_sort.rb +56 -63
- data/test/test_modules_type_parser.rb +63 -31
- data/test/test_readers_csv_reader.rb +50 -42
- data/test/test_readers_ods_reader.rb +30 -31
- data/test/test_readers_txt_reader.rb +23 -23
- data/test/test_readers_xls_reader.rb +22 -23
- data/test/test_readers_xls_shared.rb +5 -4
- data/test/test_readers_xlsx_reader.rb +46 -37
- data/test/test_row.rb +107 -109
- data/test/test_sheet.rb +43 -35
- data/test/test_table.rb +84 -60
- data/test/test_template.rb +18 -15
- data/test/test_types_date.rb +7 -7
- data/test/test_writers_csv_writer.rb +24 -0
- data/test/test_writers_html_writer.rb +44 -41
- data/test/test_writers_json_writer.rb +11 -9
- data/test/test_writers_xls_writer.rb +52 -35
- data/test/test_writers_xlsx_writer.rb +64 -34
- data/workbook.gemspec +26 -27
- metadata +93 -27
@@ -1,24 +1,26 @@
|
|
1
|
-
#
|
2
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require File.join(File.dirname(__FILE__), "helper")
|
3
4
|
module Readers
|
4
|
-
class
|
5
|
+
class TestCsvReader < Minitest::Test
|
5
6
|
def test_open
|
6
7
|
w = Workbook::Book.new
|
7
|
-
w.import File.join(File.dirname(__FILE__),
|
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
|
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__),
|
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
|
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__),
|
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
|
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__),
|
56
|
-
w = Workbook::Book.read(
|
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
|
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__),
|
71
|
-
w.read(
|
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
|
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
|
86
|
-
w.read(
|
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
|
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__),
|
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
|
-
#
|
2
|
-
|
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__),
|
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__),
|
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__),
|
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__),
|
37
|
-
assert_equal([:a
|
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__),
|
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__),
|
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
|
-
#
|
2
|
-
|
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
|
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
|
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
|
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
|
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
|
-
#
|
2
|
-
|
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__),
|
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__),
|
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
|
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__),
|
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
|
-
#
|
2
|
-
|
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
|
-
#
|
2
|
-
|
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__),
|
8
|
-
assert_equal([:a, :b, :c, :d, :e],w.sheet.table.header.to_symbols)
|
9
|
-
assert_equal([:anders
|
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__),
|
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__),
|
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__),
|
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__),
|
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__),
|
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__),
|
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
|