workbook 0.8.1 → 0.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.codeclimate.yml +21 -0
- data/.gitignore +4 -1
- data/.ruby-version +1 -1
- data/.travis.yml +4 -4
- data/CHANGELOG.md +8 -0
- data/Gemfile +2 -2
- data/README.md +9 -7
- data/Rakefile +6 -6
- data/json_test.json +1 -0
- 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 +51 -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/artifacts/currency_test.ods +0 -0
- 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 +55 -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 +36 -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 +35 -41
- 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 +16 -9
- data/test/test_writers_xls_writer.rb +50 -35
- data/test/test_writers_xlsx_writer.rb +62 -34
- data/workbook.gemspec +25 -27
- metadata +96 -42
@@ -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,35 @@
|
|
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("
|
19
|
-
s.add_development_dependency(
|
20
|
-
s.
|
21
|
-
s.
|
22
|
-
s.add_dependency("
|
23
|
-
|
24
|
-
s.add_dependency(
|
25
|
-
s.add_dependency(
|
13
|
+
s.authors = ["Maarten Brouwers"]
|
14
|
+
s.add_development_dependency("rake", "> 12.0")
|
15
|
+
s.add_development_dependency("minitest", "> 5.4")
|
16
|
+
s.add_development_dependency("byebug", "> 10")
|
17
|
+
s.add_development_dependency("standard", "> 1.0")
|
18
|
+
s.add_development_dependency("simplecov", "> 0.17.0")
|
19
|
+
s.add_dependency("spreadsheet", "> 1.2")
|
20
|
+
s.add_dependency("rchardet", ">= 1.8.0")
|
21
|
+
s.add_dependency("json", "> 2.3")
|
22
|
+
s.add_dependency("rubyzip", "> 1.2", ">= 1.2.1")
|
23
|
+
s.add_dependency("caxlsx", "> 3.0")
|
24
|
+
s.add_dependency("nokogiri", "> 1.10")
|
26
25
|
|
27
|
-
|
28
|
-
s.
|
29
|
-
s.
|
30
|
-
s.
|
26
|
+
|
27
|
+
s.platform = Gem::Platform::RUBY
|
28
|
+
s.files = `git ls-files`.split($/)
|
29
|
+
s.test_files = s.files.grep(%r{^(test|spec|features)/})
|
30
|
+
s.executables = s.files.grep(%r{^bin/}).map { |f| File.basename(f) }
|
31
31
|
s.require_paths = ["lib"]
|
32
|
-
s.email
|
33
|
-
s.homepage
|
34
|
-
|
32
|
+
s.email = ["gem@murb.nl"]
|
33
|
+
s.homepage =
|
34
|
+
"http://murb.nl/blog?tags=workbook"
|
35
35
|
end
|
36
|
-
|
37
|
-
|