workbook 0.8.1 → 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 +7 -0
- data/Gemfile +2 -2
- data/README.md +9 -7
- data/Rakefile +6 -6
- data/lib/workbook/book.rb +73 -62
- data/lib/workbook/cell.rb +58 -13
- data/lib/workbook/column.rb +31 -28
- data/lib/workbook/format.rb +23 -24
- data/lib/workbook/generatetypes.rb +4 -4
- data/lib/workbook/modules/cache.rb +6 -7
- data/lib/workbook/modules/cell.rb +77 -100
- data/lib/workbook/modules/diff_sort.rb +92 -83
- data/lib/workbook/modules/raw_objects_storage.rb +6 -8
- data/lib/workbook/modules/type_parser.rb +30 -22
- data/lib/workbook/nil_value.rb +4 -9
- data/lib/workbook/readers/csv_reader.rb +7 -10
- data/lib/workbook/readers/ods_reader.rb +48 -50
- data/lib/workbook/readers/txt_reader.rb +6 -8
- data/lib/workbook/readers/xls_reader.rb +21 -33
- data/lib/workbook/readers/xls_shared.rb +106 -117
- data/lib/workbook/readers/xlsx_reader.rb +45 -46
- data/lib/workbook/row.rb +99 -84
- data/lib/workbook/sheet.rb +47 -38
- data/lib/workbook/table.rb +96 -72
- data/lib/workbook/template.rb +12 -15
- data/lib/workbook/types/false.rb +0 -1
- data/lib/workbook/types/nil.rb +0 -1
- data/lib/workbook/types/nil_class.rb +1 -1
- data/lib/workbook/types/numeric.rb +1 -1
- data/lib/workbook/types/string.rb +1 -1
- data/lib/workbook/types/time.rb +1 -1
- data/lib/workbook/types/true.rb +0 -1
- data/lib/workbook/types/true_class.rb +1 -1
- data/lib/workbook/version.rb +2 -3
- data/lib/workbook/writers/csv_table_writer.rb +10 -13
- data/lib/workbook/writers/html_writer.rb +34 -38
- data/lib/workbook/writers/json_table_writer.rb +8 -11
- data/lib/workbook/writers/xls_writer.rb +30 -36
- data/lib/workbook/writers/xlsx_writer.rb +45 -29
- data/lib/workbook.rb +16 -15
- data/test/helper.rb +6 -5
- data/test/test_book.rb +41 -38
- data/test/test_column.rb +26 -24
- data/test/test_format.rb +51 -55
- data/test/test_functional.rb +7 -8
- data/test/test_modules_cache.rb +18 -17
- data/test/test_modules_cell.rb +47 -46
- data/test/test_modules_table_diff_sort.rb +55 -64
- data/test/test_modules_type_parser.rb +61 -31
- data/test/test_readers_csv_reader.rb +48 -42
- data/test/test_readers_ods_reader.rb +28 -31
- data/test/test_readers_txt_reader.rb +21 -23
- data/test/test_readers_xls_reader.rb +20 -23
- data/test/test_readers_xls_shared.rb +2 -3
- data/test/test_readers_xlsx_reader.rb +44 -37
- data/test/test_row.rb +105 -109
- data/test/test_sheet.rb +41 -35
- data/test/test_table.rb +82 -60
- data/test/test_template.rb +16 -15
- data/test/test_types_date.rb +4 -6
- data/test/test_writers_csv_writer.rb +24 -0
- data/test/test_writers_html_writer.rb +42 -41
- data/test/test_writers_json_writer.rb +9 -9
- data/test/test_writers_xls_writer.rb +50 -35
- data/test/test_writers_xlsx_writer.rb +62 -34
- data/workbook.gemspec +26 -27
- metadata +92 -27
@@ -1,30 +1,40 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
4
|
-
require File.join(File.dirname(__FILE__), 'helper')
|
3
|
+
require File.join(File.dirname(__FILE__), "helper")
|
5
4
|
|
6
5
|
module Writers
|
7
6
|
class TestXlsWriter < Minitest::Test
|
8
7
|
def test_to_xls
|
9
|
-
b = Workbook::Book.new [[
|
10
|
-
raw = Spreadsheet.open File.join(File.dirname(__FILE__),
|
8
|
+
b = Workbook::Book.new [["a", "b", "c"], [1, 2, 3], [3, 2, BigDecimal("3")]]
|
9
|
+
raw = Spreadsheet.open File.join(File.dirname(__FILE__), "artifacts/simple_sheet.xls")
|
11
10
|
t = Workbook::Template.new
|
12
11
|
t.add_raw raw
|
13
12
|
b.template = t
|
14
13
|
assert_equal(true, b.to_xls.is_a?(Spreadsheet::Workbook))
|
15
14
|
|
16
|
-
assert_equal(
|
15
|
+
assert_equal("untitled document.xls", b.write_to_xls)
|
16
|
+
end
|
17
|
+
|
18
|
+
def test_big_sheet
|
19
|
+
b = Workbook::Book.new
|
20
|
+
1000.times do |row_index|
|
21
|
+
b.sheet.table << [row_index, 1, 2, 3, 4]
|
22
|
+
end
|
23
|
+
filename = b.write_to_xls
|
24
|
+
b = Workbook::Book.open filename
|
25
|
+
assert_equal(1000, b.sheet.table.count)
|
17
26
|
end
|
18
27
|
|
19
28
|
def test_roundtrip
|
20
|
-
b = Workbook::Book.open File.join(File.dirname(__FILE__),
|
21
|
-
assert_equal(3.85546875,b.sheet.table.first[:a].format[:width])
|
29
|
+
b = Workbook::Book.open File.join(File.dirname(__FILE__), "artifacts/simple_sheet.xls")
|
30
|
+
assert_equal(3.85546875, b.sheet.table.first[:a].format[:width])
|
22
31
|
filename = b.write_to_xls
|
23
32
|
b = Workbook::Book.open filename
|
24
|
-
assert_equal(3.85546875,b.sheet.table.first[:a].format[:width])
|
33
|
+
assert_equal(3.85546875, b.sheet.table.first[:a].format[:width])
|
25
34
|
end
|
35
|
+
|
26
36
|
def test_delete_row
|
27
|
-
b = Workbook::Book.open File.join(File.dirname(__FILE__),
|
37
|
+
b = Workbook::Book.open File.join(File.dirname(__FILE__), "artifacts/simple_sheet.xls")
|
28
38
|
# a b c d e
|
29
39
|
# 14 90589 a 19 apr 12 23 apr 12
|
30
40
|
# 15 90588 b 15 nov 11 16 jul 12
|
@@ -32,18 +42,19 @@ module Writers
|
|
32
42
|
# 33 90490 d 13 mrt 12 15 mrt 12
|
33
43
|
t = b.sheet.table
|
34
44
|
assert_equal(33, t.last.first.value)
|
35
|
-
t.delete_at(4) #delete last row
|
45
|
+
t.delete_at(4) # delete last row
|
36
46
|
filename = b.write_to_xls
|
37
47
|
b = Workbook::Book.open filename
|
38
48
|
t = b.sheet.table
|
39
49
|
# puts t.to_csv
|
40
|
-
#TODO: NOT true delete... need to work on this...
|
50
|
+
# TODO: NOT true delete... need to work on this...
|
41
51
|
assert_equal(25, t[3].first.value)
|
42
52
|
assert_nil(t[4].first.value)
|
43
53
|
assert_nil(t[4].last.value)
|
44
54
|
end
|
55
|
+
|
45
56
|
def test_pop_row
|
46
|
-
b = Workbook::Book.open File.join(File.dirname(__FILE__),
|
57
|
+
b = Workbook::Book.open File.join(File.dirname(__FILE__), "artifacts/simple_sheet.xls")
|
47
58
|
# a b c d e
|
48
59
|
# 14 90589 a 19 apr 12 23 apr 12
|
49
60
|
# 15 90588 b 15 nov 11 16 jul 12
|
@@ -51,22 +62,22 @@ module Writers
|
|
51
62
|
# 33 90490 d 13 mrt 12 15 mrt 12
|
52
63
|
t = b.sheet.table
|
53
64
|
assert_equal(33, t.last.first.value)
|
54
|
-
t.pop(2) #delete last two row
|
65
|
+
t.pop(2) # delete last two row
|
55
66
|
# puts t.to_csv
|
56
67
|
filename = b.write_to_xls
|
57
68
|
b = Workbook::Book.open filename
|
58
69
|
t = b.sheet.table
|
59
70
|
# puts t.to_csv
|
60
|
-
#TODO: NOT true delete... need to work on this...
|
71
|
+
# TODO: NOT true delete... need to work on this...
|
61
72
|
assert_nil(t[3].first.value)
|
62
73
|
assert_nil(t[4].first.value)
|
63
74
|
assert_nil(t[4].last.value)
|
64
75
|
assert_equal(15, t[2].first.value)
|
65
76
|
assert_nil(t.last.first.value)
|
66
|
-
|
67
77
|
end
|
78
|
+
|
68
79
|
def test_pop_bigtable
|
69
|
-
b = Workbook::Book.open File.join(File.dirname(__FILE__),
|
80
|
+
b = Workbook::Book.open File.join(File.dirname(__FILE__), "artifacts/bigtable.xls")
|
70
81
|
# a b c d e
|
71
82
|
# 14 90589 a 19 apr 12 23 apr 12
|
72
83
|
# 15 90588 b 15 nov 11 16 jul 12
|
@@ -74,68 +85,72 @@ module Writers
|
|
74
85
|
# 33 90490 d 13 mrt 12 15 mrt 12
|
75
86
|
t = b.sheet.table
|
76
87
|
assert_equal(574, t.count)
|
77
|
-
t.pop(300) #delete last two row
|
88
|
+
t.pop(300) # delete last two row
|
89
|
+
assert_equal(274, t.count)
|
78
90
|
assert_equal(274, t.trim.count)
|
79
91
|
filename = b.write_to_xls
|
92
|
+
|
80
93
|
b = Workbook::Book.open filename
|
81
94
|
t = b.sheet.table
|
82
95
|
assert_equal(274, t.trim.count)
|
83
|
-
|
84
|
-
|
85
96
|
end
|
97
|
+
|
86
98
|
def test_cloning_roundtrip
|
87
|
-
b = Workbook::Book.open File.join(File.dirname(__FILE__),
|
99
|
+
b = Workbook::Book.open File.join(File.dirname(__FILE__), "artifacts/book_with_tabs_and_colours.xls")
|
88
100
|
b.sheet.table << b.sheet.table[2]
|
89
|
-
assert_equal(90588,b.sheet.table[5][:b].value)
|
90
|
-
assert_equal("#FFFF00",b.sheet.table[5][:c].format[:background_color])
|
101
|
+
assert_equal(90588, b.sheet.table[5][:b].value)
|
102
|
+
assert_equal("#FFFF00", b.sheet.table[5][:c].format[:background_color])
|
91
103
|
filename = b.write_to_xls
|
92
104
|
b = Workbook::Book.open filename
|
93
|
-
assert_equal(90588,b.sheet.table[5][:b].value)
|
94
|
-
assert_equal("#FFFF00",b.sheet.table[5][:c].format[:background_color])
|
105
|
+
assert_equal(90588, b.sheet.table[5][:b].value)
|
106
|
+
assert_equal("#FFFF00", b.sheet.table[5][:c].format[:background_color])
|
95
107
|
end
|
108
|
+
|
96
109
|
def test_parse_font_family
|
97
110
|
b = Workbook::Book.new
|
98
|
-
assert_equal(:none,b.parse_font_family({:
|
99
|
-
assert_equal(:swiss,b.parse_font_family({:
|
100
|
-
assert_equal(:swiss,b.parse_font_family({:
|
101
|
-
assert_equal(:roman,b.parse_font_family({:
|
102
|
-
assert_equal(:roman,b.parse_font_family({:
|
111
|
+
assert_equal(:none, b.parse_font_family({font_family: "asdfsdf"}))
|
112
|
+
assert_equal(:swiss, b.parse_font_family({font_family: "ArIAL"}))
|
113
|
+
assert_equal(:swiss, b.parse_font_family({font_family: :swiss}))
|
114
|
+
assert_equal(:roman, b.parse_font_family({font_family: "Times"}))
|
115
|
+
assert_equal(:roman, b.parse_font_family({font_family: "roman"}))
|
103
116
|
end
|
104
117
|
|
105
118
|
def test_init_spreadsheet_template
|
106
119
|
b = Workbook::Book.new
|
107
120
|
b.init_spreadsheet_template
|
108
|
-
assert_equal(Spreadsheet::Workbook,b.xls_template.class)
|
121
|
+
assert_equal(Spreadsheet::Workbook, b.xls_template.class)
|
109
122
|
end
|
110
123
|
|
111
124
|
def test_xls_sheet
|
112
125
|
b = Workbook::Book.new
|
113
126
|
b.init_spreadsheet_template
|
114
|
-
assert_equal(Spreadsheet::Worksheet,b.xls_sheet(100).class)
|
127
|
+
assert_equal(Spreadsheet::Worksheet, b.xls_sheet(100).class)
|
115
128
|
end
|
129
|
+
|
116
130
|
def test_strftime_to_ms_format_nil
|
117
131
|
assert_nil(Workbook::Book.new.strftime_to_ms_format(nil))
|
118
132
|
end
|
133
|
+
|
119
134
|
def test_xls_sheet_writer
|
120
135
|
b = Workbook::Book.new
|
121
136
|
b << Workbook::Sheet.new
|
122
137
|
b << Workbook::Sheet.new
|
123
138
|
b[0].name = "A"
|
124
139
|
b[1].name = "B"
|
125
|
-
assert_equal(["A","B"], b.collect{|a| a.name})
|
140
|
+
assert_equal(["A", "B"], b.collect { |a| a.name })
|
126
141
|
filename = b.write_to_xls
|
127
142
|
b = Workbook::Book.open filename
|
128
|
-
assert_equal(["A","B"], b.collect{|a| a.name})
|
143
|
+
assert_equal(["A", "B"], b.collect { |a| a.name })
|
129
144
|
end
|
145
|
+
|
130
146
|
def test_removal_of_sheets_in_excel_when_using_template
|
131
|
-
b = Workbook::Book.open File.join(File.dirname(__FILE__),
|
147
|
+
b = Workbook::Book.open File.join(File.dirname(__FILE__), "artifacts/simple_sheet_many_sheets.xls")
|
132
148
|
assert_equal(10, b.count)
|
133
149
|
b.pop(4)
|
134
150
|
assert_equal(6, b.count)
|
135
151
|
filename = b.write_to_xls
|
136
152
|
b = Workbook::Book.open filename
|
137
153
|
assert_equal(6, b.count)
|
138
|
-
|
139
154
|
end
|
140
155
|
end
|
141
156
|
end
|
@@ -1,40 +1,46 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
4
|
-
require File.join(File.dirname(__FILE__), 'helper')
|
3
|
+
require File.join(File.dirname(__FILE__), "helper")
|
5
4
|
|
6
5
|
module Writers
|
7
6
|
class TestXlsxWriter < Minitest::Test
|
8
7
|
def test_empty_to_xlsx
|
9
|
-
b = Workbook::Book.new [[
|
8
|
+
b = Workbook::Book.new [["a", "b", "c"], [1, 2, 3], [3, 2, BigDecimal("3")]]
|
10
9
|
assert_equal(true, b.to_xlsx.is_a?(Axlsx::Package))
|
11
10
|
dimensions = b.sheet.table.dimensions
|
12
|
-
assert_equal(
|
13
|
-
b = Workbook::Book.open
|
11
|
+
assert_equal("untitled document.xlsx", b.write_to_xlsx)
|
12
|
+
b = Workbook::Book.open "untitled document.xlsx"
|
14
13
|
assert_equal(dimensions, b.sheet.table.dimensions)
|
15
14
|
end
|
16
15
|
|
17
16
|
def test_roundtrip
|
18
|
-
b = Workbook::Book.open File.join(File.dirname(__FILE__),
|
19
|
-
assert_equal(14,b[0][0]["A2"])
|
20
|
-
assert_equal(DateTime.new(2011,11,15),b[0][0]["D3"].value)
|
17
|
+
b = Workbook::Book.open File.join(File.dirname(__FILE__), "artifacts/simple_sheet.xlsx")
|
18
|
+
assert_equal(14, b[0][0]["A2"])
|
19
|
+
assert_equal(DateTime.new(2011, 11, 15), b[0][0]["D3"].value)
|
21
20
|
# puts b.sheet.table.to_csv
|
22
21
|
filename = b.write_to_xlsx
|
23
22
|
b = Workbook::Book.open filename
|
24
|
-
assert_equal(14,b[0][0]["A2"].value)
|
25
|
-
assert_equal(DateTime.new(2011,11,15),b[0][0]["D3"].value)
|
23
|
+
assert_equal(14, b[0][0]["A2"].value)
|
24
|
+
assert_equal(DateTime.new(2011, 11, 15), b[0][0]["D3"].value)
|
26
25
|
end
|
26
|
+
|
27
27
|
def test_roundtrip_with_modification
|
28
|
-
b = Workbook::Book.open File.join(File.dirname(__FILE__),
|
29
|
-
b[0][0]["A2"]= 12
|
30
|
-
assert_equal(DateTime.new(2011,11,15),b[0][0]["D3"].value)
|
28
|
+
b = Workbook::Book.open File.join(File.dirname(__FILE__), "artifacts/simple_sheet.xlsx")
|
29
|
+
b[0][0]["A2"] = 12
|
30
|
+
assert_equal(DateTime.new(2011, 11, 15), b[0][0]["D3"].value)
|
31
31
|
filename = b.write_to_xlsx
|
32
32
|
b = Workbook::Book.open filename
|
33
|
-
assert_equal(12,b[0][0]["A2"].value)
|
34
|
-
assert_equal(DateTime.new(2011,11,15),b[0][0]["D3"].value)
|
33
|
+
assert_equal(12, b[0][0]["A2"].value)
|
34
|
+
assert_equal(DateTime.new(2011, 11, 15), b[0][0]["D3"].value)
|
35
|
+
end
|
36
|
+
|
37
|
+
def test_stream_xlsx
|
38
|
+
b = Workbook::Book.open File.join(File.dirname(__FILE__), "artifacts/simple_sheet.xlsx")
|
39
|
+
assert(b.stream_xlsx.start_with?("PK"))
|
35
40
|
end
|
41
|
+
|
36
42
|
def test_delete_row
|
37
|
-
b = Workbook::Book.open File.join(File.dirname(__FILE__),
|
43
|
+
b = Workbook::Book.open File.join(File.dirname(__FILE__), "artifacts/simple_sheet.xlsx")
|
38
44
|
# a b c d e
|
39
45
|
# 14 90589 a 19 apr 12 23 apr 12
|
40
46
|
# 15 90588 b 15 nov 11 16 jul 12
|
@@ -42,16 +48,17 @@ module Writers
|
|
42
48
|
# 33 90490 d 13 mrt 12 15 mrt 12
|
43
49
|
t = b.sheet.table
|
44
50
|
assert_equal(33, t.last.first.value)
|
45
|
-
t.delete_at(4) #delete last row
|
51
|
+
t.delete_at(4) # delete last row
|
46
52
|
filename = b.write_to_xlsx
|
47
53
|
b = Workbook::Book.open filename
|
48
54
|
t = b.sheet.table
|
49
|
-
#TODO: NOT true delete... need to work on this...
|
55
|
+
# TODO: NOT true delete... need to work on this...
|
50
56
|
assert_equal(25, t[3].first.value)
|
51
57
|
assert_nil(t[4])
|
52
58
|
end
|
59
|
+
|
53
60
|
def test_pop_row
|
54
|
-
b = Workbook::Book.open File.join(File.dirname(__FILE__),
|
61
|
+
b = Workbook::Book.open File.join(File.dirname(__FILE__), "artifacts/simple_sheet.xlsx")
|
55
62
|
# a b c d e
|
56
63
|
# 14 90589 a 19 apr 12 23 apr 12
|
57
64
|
# 15 90588 b 15 nov 11 16 jul 12
|
@@ -67,8 +74,9 @@ module Writers
|
|
67
74
|
assert_nil(t[4])
|
68
75
|
assert_equal(15, t[2].first.value)
|
69
76
|
end
|
77
|
+
|
70
78
|
def test_pop_bigtable
|
71
|
-
b = Workbook::Book.open File.join(File.dirname(__FILE__),
|
79
|
+
b = Workbook::Book.open File.join(File.dirname(__FILE__), "artifacts/bigtable.xlsx")
|
72
80
|
t = b.sheet.table
|
73
81
|
assert_equal(553, t.count)
|
74
82
|
t.pop(300)
|
@@ -81,40 +89,60 @@ module Writers
|
|
81
89
|
|
82
90
|
# Uncommented colour testing, this is broken since the switch to roo/axlsx
|
83
91
|
def test_cloning_roundtrip
|
84
|
-
b = Workbook::Book.open File.join(File.dirname(__FILE__),
|
92
|
+
b = Workbook::Book.open File.join(File.dirname(__FILE__), "artifacts/book_with_tabs_and_colours.xlsx")
|
85
93
|
b.sheet.table << b.sheet.table[2]
|
86
|
-
assert_equal(90588,b.sheet.table[5][:b].value)
|
94
|
+
assert_equal(90588, b.sheet.table[5][:b].value)
|
87
95
|
# assert_equal("#FFFF00",b.sheet.table[2][:c].format[:background_color])
|
88
96
|
# assert_equal("#FFFF00",b.sheet.table[5][:c].format[:background_color])
|
89
97
|
filename = b.write_to_xls
|
90
98
|
b = Workbook::Book.open filename
|
91
|
-
assert_equal(90588,b.sheet.table[5][:b].value)
|
99
|
+
assert_equal(90588, b.sheet.table[5][:b].value)
|
92
100
|
# assert_equal("#FF00FF",b.sheet.table[5][:c].format[:background_color])
|
93
101
|
end
|
94
102
|
|
95
103
|
def test_format_to_xlsx_format
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
104
|
+
# TODO: breaks
|
105
|
+
# b = Workbook::Book.new
|
106
|
+
# ws.
|
107
|
+
# xlsx_format = b.format_to_xlsx_format(Workbook::Format.new({font_weight: "bold", color: "#FF0000", text_decoration: "underline"}))
|
108
|
+
# # p Axlsx::Styles.cellStyles.inspect
|
109
|
+
# assert_equal(true, xlsx_format[:b])
|
110
|
+
# assert_equal(true, xlsx_format[:u])
|
111
|
+
# assert_equal("FFFF0000", xlsx_format[:fg_color])
|
100
112
|
end
|
101
113
|
|
102
114
|
def test_formats_to_xlsx_format
|
103
115
|
b = Workbook::Book.new
|
104
116
|
b.template.set_default_formats!
|
105
117
|
b.formats_to_xlsx_format
|
106
|
-
raw_keys = b.template.create_or_find_format_by(:header).raws
|
107
|
-
|
118
|
+
# raw_keys = b.template.create_or_find_format_by(:header).raws
|
119
|
+
end
|
120
|
+
|
121
|
+
def test_string_outputs
|
122
|
+
given = [["test", "0001", "001.9", "1,9", "001,9"]]
|
123
|
+
b = Workbook::Book.new(given)
|
124
|
+
assert_equal(given[0], b.sheet.table[0].map(&:value))
|
125
|
+
|
126
|
+
filename = b.write_to_xlsx
|
127
|
+
|
128
|
+
b = Workbook::Book.open filename
|
129
|
+
t = b.sheet.table
|
130
|
+
|
131
|
+
3.times do |time|
|
132
|
+
assert_equal(given[0][time], t[0][time].value)
|
133
|
+
end
|
108
134
|
end
|
109
135
|
|
136
|
+
# TODO: Formatting doesn't actually work
|
110
137
|
def test_format_to_xlsx_integrated
|
111
|
-
b = Workbook::Book.new [[:a
|
138
|
+
b = Workbook::Book.new [[:a, :b], [1, 2], [3, 4]]
|
112
139
|
c2 = b.sheet.table[2][1]
|
113
140
|
c2.format = Workbook::Format.new({font_weight: "bold", color: "#CC5500", font_style: :italic, text_decoration: :underline})
|
114
|
-
|
115
|
-
|
116
|
-
|
141
|
+
b.write_to_xlsx("untitled document.xlsx")
|
142
|
+
written_book = Workbook::Book.open("untitled document.xlsx")
|
143
|
+
written_cell = written_book.sheet.table["B3"]
|
144
|
+
assert_equal(4, written_cell.value)
|
145
|
+
# assert_equal("bold", written_cell.format)
|
117
146
|
end
|
118
|
-
|
119
147
|
end
|
120
148
|
end
|
data/workbook.gemspec
CHANGED
@@ -1,37 +1,36 @@
|
|
1
|
-
|
2
|
-
lib = File.expand_path('../lib', __FILE__)
|
1
|
+
lib = File.expand_path("../lib", __FILE__)
|
3
2
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
3
|
|
5
4
|
require "workbook/version"
|
6
|
-
require
|
5
|
+
require "date"
|
7
6
|
|
8
7
|
Gem::Specification.new do |s|
|
9
|
-
s.name
|
10
|
-
s.rubyforge_project = 'workbook'
|
8
|
+
s.name = "workbook"
|
11
9
|
s.license = "MIT"
|
12
|
-
s.version
|
13
|
-
s.
|
14
|
-
s.summary = "Workbook is a datastructure to contain books of tables (an anlogy used in e.g. Excel)"
|
10
|
+
s.version = Workbook::VERSION
|
11
|
+
s.summary = "Workbook is a datastructure to contain books of tables (an anlogy used in e.g. Excel)"
|
15
12
|
s.description = "Workbook contains workbooks, as in a table, contains rows, contains cells, reads/writes excel, ods and csv and tab separated files, and offers basic diffing and sorting capabilities."
|
16
|
-
s.authors
|
17
|
-
s.add_development_dependency
|
18
|
-
s.add_development_dependency("rake",
|
19
|
-
s.add_development_dependency(
|
20
|
-
s.
|
21
|
-
s.
|
22
|
-
s.
|
23
|
-
|
24
|
-
s.add_dependency(
|
25
|
-
s.add_dependency(
|
13
|
+
s.authors = ["Maarten Brouwers"]
|
14
|
+
s.add_development_dependency "ruby-prof", "~> 0.14"
|
15
|
+
s.add_development_dependency("rake", "~> 12.0")
|
16
|
+
s.add_development_dependency("minitest", "~> 5.4")
|
17
|
+
s.add_development_dependency("byebug", "> 10")
|
18
|
+
s.add_development_dependency("standard", "~> 0.1.0")
|
19
|
+
s.add_development_dependency("simplecov", "~> 0.17.0")
|
20
|
+
s.add_dependency("spreadsheet", "> 1.2")
|
21
|
+
s.add_dependency("rchardet", ">= 1.8.0")
|
22
|
+
s.add_dependency("json", "> 2.3")
|
23
|
+
s.add_dependency("rubyzip", "> 1.2", ">= 1.2.1")
|
24
|
+
s.add_dependency("caxlsx", "> 3.0")
|
25
|
+
s.add_dependency("nokogiri", "> 1.10")
|
26
26
|
|
27
|
-
|
28
|
-
s.
|
29
|
-
s.
|
30
|
-
s.
|
27
|
+
|
28
|
+
s.platform = Gem::Platform::RUBY
|
29
|
+
s.files = `git ls-files`.split($/)
|
30
|
+
s.test_files = s.files.grep(%r{^(test|spec|features)/})
|
31
|
+
s.executables = s.files.grep(%r{^bin/}).map { |f| File.basename(f) }
|
31
32
|
s.require_paths = ["lib"]
|
32
|
-
s.email
|
33
|
-
s.homepage
|
34
|
-
|
33
|
+
s.email = ["gem@murb.nl"]
|
34
|
+
s.homepage =
|
35
|
+
"http://murb.nl/blog?tags=workbook"
|
35
36
|
end
|
36
|
-
|
37
|
-
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: workbook
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.8.
|
4
|
+
version: 0.8.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Maarten Brouwers
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2023-03-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: ruby-prof
|
@@ -53,75 +53,137 @@ dependencies:
|
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '5.4'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
|
-
name:
|
56
|
+
name: byebug
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '10'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '10'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: standard
|
57
71
|
requirement: !ruby/object:Gem::Requirement
|
58
72
|
requirements:
|
59
73
|
- - "~>"
|
60
74
|
- !ruby/object:Gem::Version
|
61
|
-
version:
|
62
|
-
type: :
|
75
|
+
version: 0.1.0
|
76
|
+
type: :development
|
63
77
|
prerelease: false
|
64
78
|
version_requirements: !ruby/object:Gem::Requirement
|
65
79
|
requirements:
|
66
80
|
- - "~>"
|
67
81
|
- !ruby/object:Gem::Version
|
68
|
-
version:
|
82
|
+
version: 0.1.0
|
69
83
|
- !ruby/object:Gem::Dependency
|
70
|
-
name:
|
84
|
+
name: simplecov
|
71
85
|
requirement: !ruby/object:Gem::Requirement
|
72
86
|
requirements:
|
73
87
|
- - "~>"
|
74
88
|
- !ruby/object:Gem::Version
|
75
|
-
version:
|
76
|
-
type: :
|
89
|
+
version: 0.17.0
|
90
|
+
type: :development
|
77
91
|
prerelease: false
|
78
92
|
version_requirements: !ruby/object:Gem::Requirement
|
79
93
|
requirements:
|
80
94
|
- - "~>"
|
81
95
|
- !ruby/object:Gem::Version
|
82
|
-
version:
|
96
|
+
version: 0.17.0
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: spreadsheet
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - ">"
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '1.2'
|
104
|
+
type: :runtime
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - ">"
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '1.2'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: rchardet
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - ">="
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: 1.8.0
|
118
|
+
type: :runtime
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - ">="
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: 1.8.0
|
83
125
|
- !ruby/object:Gem::Dependency
|
84
126
|
name: json
|
85
127
|
requirement: !ruby/object:Gem::Requirement
|
86
128
|
requirements:
|
87
|
-
- - "
|
129
|
+
- - ">"
|
88
130
|
- !ruby/object:Gem::Version
|
89
|
-
version: '2.
|
131
|
+
version: '2.3'
|
90
132
|
type: :runtime
|
91
133
|
prerelease: false
|
92
134
|
version_requirements: !ruby/object:Gem::Requirement
|
93
135
|
requirements:
|
94
|
-
- - "
|
136
|
+
- - ">"
|
95
137
|
- !ruby/object:Gem::Version
|
96
|
-
version: '2.
|
138
|
+
version: '2.3'
|
97
139
|
- !ruby/object:Gem::Dependency
|
98
|
-
name:
|
140
|
+
name: rubyzip
|
99
141
|
requirement: !ruby/object:Gem::Requirement
|
100
142
|
requirements:
|
101
|
-
- - "
|
143
|
+
- - ">"
|
144
|
+
- !ruby/object:Gem::Version
|
145
|
+
version: '1.2'
|
146
|
+
- - ">="
|
102
147
|
- !ruby/object:Gem::Version
|
103
|
-
version:
|
148
|
+
version: 1.2.1
|
104
149
|
type: :runtime
|
105
150
|
prerelease: false
|
106
151
|
version_requirements: !ruby/object:Gem::Requirement
|
107
152
|
requirements:
|
108
|
-
- - "
|
153
|
+
- - ">"
|
154
|
+
- !ruby/object:Gem::Version
|
155
|
+
version: '1.2'
|
156
|
+
- - ">="
|
109
157
|
- !ruby/object:Gem::Version
|
110
|
-
version:
|
158
|
+
version: 1.2.1
|
159
|
+
- !ruby/object:Gem::Dependency
|
160
|
+
name: caxlsx
|
161
|
+
requirement: !ruby/object:Gem::Requirement
|
162
|
+
requirements:
|
163
|
+
- - ">"
|
164
|
+
- !ruby/object:Gem::Version
|
165
|
+
version: '3.0'
|
166
|
+
type: :runtime
|
167
|
+
prerelease: false
|
168
|
+
version_requirements: !ruby/object:Gem::Requirement
|
169
|
+
requirements:
|
170
|
+
- - ">"
|
171
|
+
- !ruby/object:Gem::Version
|
172
|
+
version: '3.0'
|
111
173
|
- !ruby/object:Gem::Dependency
|
112
174
|
name: nokogiri
|
113
175
|
requirement: !ruby/object:Gem::Requirement
|
114
176
|
requirements:
|
115
|
-
- - "
|
177
|
+
- - ">"
|
116
178
|
- !ruby/object:Gem::Version
|
117
|
-
version: '1.
|
179
|
+
version: '1.10'
|
118
180
|
type: :runtime
|
119
181
|
prerelease: false
|
120
182
|
version_requirements: !ruby/object:Gem::Requirement
|
121
183
|
requirements:
|
122
|
-
- - "
|
184
|
+
- - ">"
|
123
185
|
- !ruby/object:Gem::Version
|
124
|
-
version: '1.
|
186
|
+
version: '1.10'
|
125
187
|
description: Workbook contains workbooks, as in a table, contains rows, contains cells,
|
126
188
|
reads/writes excel, ods and csv and tab separated files, and offers basic diffing
|
127
189
|
and sorting capabilities.
|
@@ -132,6 +194,7 @@ executables:
|
|
132
194
|
extensions: []
|
133
195
|
extra_rdoc_files: []
|
134
196
|
files:
|
197
|
+
- ".codeclimate.yml"
|
135
198
|
- ".gitignore"
|
136
199
|
- ".ruby-version"
|
137
200
|
- ".travis.yml"
|
@@ -235,6 +298,7 @@ files:
|
|
235
298
|
- test/test_table.rb
|
236
299
|
- test/test_template.rb
|
237
300
|
- test/test_types_date.rb
|
301
|
+
- test/test_writers_csv_writer.rb
|
238
302
|
- test/test_writers_html_writer.rb
|
239
303
|
- test/test_writers_json_writer.rb
|
240
304
|
- test/test_writers_xls_writer.rb
|
@@ -244,7 +308,7 @@ homepage: http://murb.nl/blog?tags=workbook
|
|
244
308
|
licenses:
|
245
309
|
- MIT
|
246
310
|
metadata: {}
|
247
|
-
post_install_message:
|
311
|
+
post_install_message:
|
248
312
|
rdoc_options: []
|
249
313
|
require_paths:
|
250
314
|
- lib
|
@@ -259,8 +323,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
259
323
|
- !ruby/object:Gem::Version
|
260
324
|
version: '0'
|
261
325
|
requirements: []
|
262
|
-
rubygems_version: 3.
|
263
|
-
signing_key:
|
326
|
+
rubygems_version: 3.4.6
|
327
|
+
signing_key:
|
264
328
|
specification_version: 4
|
265
329
|
summary: Workbook is a datastructure to contain books of tables (an anlogy used in
|
266
330
|
e.g. Excel)
|
@@ -316,6 +380,7 @@ test_files:
|
|
316
380
|
- test/test_table.rb
|
317
381
|
- test/test_template.rb
|
318
382
|
- test/test_types_date.rb
|
383
|
+
- test/test_writers_csv_writer.rb
|
319
384
|
- test/test_writers_html_writer.rb
|
320
385
|
- test/test_writers_json_writer.rb
|
321
386
|
- test/test_writers_xls_writer.rb
|