spreadsheet 1.3.3 → 1.3.4
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/lib/parseexcel/parseexcel.rb +66 -58
- data/lib/parseexcel/parser.rb +1 -1
- data/lib/parseexcel.rb +1 -1
- data/lib/spreadsheet/column.rb +11 -9
- data/lib/spreadsheet/compatibility.rb +3 -1
- data/lib/spreadsheet/datatypes.rb +149 -147
- data/lib/spreadsheet/encodings.rb +20 -16
- data/lib/spreadsheet/errors.rb +2 -2
- data/lib/spreadsheet/excel/error.rb +23 -22
- data/lib/spreadsheet/excel/internals/biff5.rb +11 -11
- data/lib/spreadsheet/excel/internals/biff8.rb +13 -13
- data/lib/spreadsheet/excel/internals.rb +451 -451
- data/lib/spreadsheet/excel/offset.rb +32 -31
- data/lib/spreadsheet/excel/password_hash.rb +18 -18
- data/lib/spreadsheet/excel/reader/biff5.rb +34 -35
- data/lib/spreadsheet/excel/reader/biff8.rb +234 -222
- data/lib/spreadsheet/excel/reader.rb +1320 -1274
- data/lib/spreadsheet/excel/rgb.rb +91 -91
- data/lib/spreadsheet/excel/row.rb +99 -91
- data/lib/spreadsheet/excel/sst_entry.rb +40 -38
- data/lib/spreadsheet/excel/workbook.rb +86 -76
- data/lib/spreadsheet/excel/worksheet.rb +125 -107
- data/lib/spreadsheet/excel/writer/biff8.rb +56 -55
- data/lib/spreadsheet/excel/writer/format.rb +273 -256
- data/lib/spreadsheet/excel/writer/n_worksheet.rb +837 -798
- data/lib/spreadsheet/excel/writer/workbook.rb +671 -635
- data/lib/spreadsheet/excel/writer/worksheet.rb +898 -861
- data/lib/spreadsheet/excel/writer.rb +1 -1
- data/lib/spreadsheet/excel.rb +18 -11
- data/lib/spreadsheet/font.rb +30 -26
- data/lib/spreadsheet/format.rb +74 -59
- data/lib/spreadsheet/link.rb +7 -5
- data/lib/spreadsheet/note.rb +6 -6
- data/lib/spreadsheet/noteObject.rb +5 -5
- data/lib/spreadsheet/row.rb +33 -23
- data/lib/spreadsheet/version.rb +1 -1
- data/lib/spreadsheet/workbook.rb +27 -13
- data/lib/spreadsheet/worksheet.rb +102 -68
- data/lib/spreadsheet/writer.rb +3 -0
- data/lib/spreadsheet.rb +12 -15
- data/test/excel/reader.rb +8 -8
- data/test/excel/row.rb +35 -31
- data/test/excel/writer/workbook.rb +18 -16
- data/test/excel/writer/worksheet.rb +10 -8
- data/test/font.rb +44 -32
- data/test/format.rb +38 -33
- data/test/integration.rb +627 -598
- data/test/row.rb +5 -3
- data/test/suite.rb +7 -7
- data/test/workbook.rb +15 -14
- data/test/workbook_protection.rb +5 -5
- data/test/worksheet.rb +36 -34
- metadata +48 -6
data/test/row.rb
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
# TestRow -- Spreadsheet -- 08.01.2009 -- hwyss@ywesee.com
|
3
3
|
|
4
|
-
$: << File.expand_path(
|
4
|
+
$: << File.expand_path("../../lib", File.dirname(__FILE__))
|
5
5
|
|
6
|
-
require
|
7
|
-
require
|
6
|
+
require "test/unit"
|
7
|
+
require "spreadsheet"
|
8
8
|
|
9
9
|
module Spreadsheet
|
10
10
|
class TestRow < Test::Unit::TestCase
|
@@ -13,12 +13,14 @@ module Spreadsheet
|
|
13
13
|
@worksheet = Excel::Worksheet.new
|
14
14
|
@workbook.add_worksheet @worksheet
|
15
15
|
end
|
16
|
+
|
16
17
|
def test_formatted
|
17
18
|
row = Row.new @worksheet, 0, [nil, 1]
|
18
19
|
assert_equal 2, row.formatted.size
|
19
20
|
row.set_format 3, Format.new
|
20
21
|
assert_equal 4, row.formatted.size
|
21
22
|
end
|
23
|
+
|
22
24
|
def test_concat
|
23
25
|
row = Row.new @worksheet, 0, [nil, 1, nil]
|
24
26
|
assert_equal [nil, 1, nil], row
|
data/test/suite.rb
CHANGED
@@ -1,9 +1,9 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
# suite.rb -- spreadsheet -- 22.12.2011 -- jsaak@napalm.hu
|
3
|
-
require
|
4
|
-
require
|
5
|
-
require
|
6
|
-
require
|
3
|
+
require "rubygems"
|
4
|
+
require "bundler"
|
5
|
+
require "find"
|
6
|
+
require "simplecov"
|
7
7
|
SimpleCov.start
|
8
8
|
|
9
9
|
$VERBOSE = true
|
@@ -13,8 +13,8 @@ here = File.dirname(__FILE__)
|
|
13
13
|
$: << here
|
14
14
|
|
15
15
|
Find.find(here) do |file|
|
16
|
-
next if File.basename(file) ==
|
17
|
-
if
|
18
|
-
require file[here.size+1
|
16
|
+
next if File.basename(file) == "suite.rb"
|
17
|
+
if /\.rb$/o.match?(file)
|
18
|
+
require file[here.size + 1..]
|
19
19
|
end
|
20
20
|
end
|
data/test/workbook.rb
CHANGED
@@ -1,32 +1,34 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
# TestWorkbook -- Spreadsheet -- 24.09.2008 -- hwyss@ywesee.com
|
3
3
|
|
4
|
-
$: << File.expand_path(
|
4
|
+
$: << File.expand_path("../lib", File.dirname(__FILE__))
|
5
5
|
|
6
|
-
require
|
7
|
-
require
|
8
|
-
require
|
9
|
-
require
|
6
|
+
require "test/unit"
|
7
|
+
require "spreadsheet"
|
8
|
+
require "fileutils"
|
9
|
+
require "stringio"
|
10
10
|
|
11
11
|
module Spreadsheet
|
12
12
|
class TestWorkbook < Test::Unit::TestCase
|
13
13
|
def setup
|
14
|
-
@io = StringIO.new
|
14
|
+
@io = StringIO.new ""
|
15
15
|
@book = Workbook.new
|
16
16
|
end
|
17
|
+
|
17
18
|
def test_writer__default_excel
|
18
19
|
assert_instance_of Excel::Writer::Workbook, @book.writer(@io)
|
19
20
|
end
|
21
|
+
|
20
22
|
def test_sheet_count
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
23
|
+
@worksheet1 = Excel::Worksheet.new
|
24
|
+
@book.add_worksheet @worksheet1
|
25
|
+
assert_equal 1, @book.sheet_count
|
26
|
+
@worksheet2 = Excel::Worksheet.new
|
27
|
+
@book.add_worksheet @worksheet2
|
28
|
+
assert_equal 2, @book.sheet_count
|
27
29
|
end
|
28
|
-
def test_add_format
|
29
30
|
|
31
|
+
def test_add_format
|
30
32
|
assert_equal 1, @book.formats.length # Received a default format
|
31
33
|
|
32
34
|
f1 = Format.new
|
@@ -50,6 +52,5 @@ module Spreadsheet
|
|
50
52
|
assert_equal(changed_count, original_count + 1)
|
51
53
|
assert_equal(original_count, @book.sheet_count)
|
52
54
|
end
|
53
|
-
|
54
55
|
end
|
55
56
|
end
|
data/test/workbook_protection.rb
CHANGED
@@ -1,9 +1,9 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
|
-
$: << File.expand_path(
|
3
|
+
$: << File.expand_path("../lib", File.dirname(__FILE__))
|
4
4
|
|
5
|
-
require
|
6
|
-
require
|
5
|
+
require "test/unit"
|
6
|
+
require "spreadsheet"
|
7
7
|
|
8
8
|
module Spreadsheet
|
9
9
|
module Excel
|
@@ -11,8 +11,8 @@ module Spreadsheet
|
|
11
11
|
def test_password_hashing
|
12
12
|
hashing_module = Spreadsheet::Excel::Password
|
13
13
|
# Some examples found on the web
|
14
|
-
assert_equal(0xFEF1, hashing_module.password_hash(
|
15
|
-
assert_equal(hashing_module.password_hash(
|
14
|
+
assert_equal(0xFEF1, hashing_module.password_hash("abcdefghij"))
|
15
|
+
assert_equal(hashing_module.password_hash("test"), hashing_module.password_hash("zzyw"))
|
16
16
|
end
|
17
17
|
end
|
18
18
|
end
|
data/test/worksheet.rb
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
# TestWorksheet -- Spreadheet -- 30.09.2008 -- hwyss@ywesee.com
|
3
3
|
|
4
|
-
$: << File.expand_path(
|
4
|
+
$: << File.expand_path("../lib", File.dirname(__FILE__))
|
5
5
|
|
6
|
-
require
|
7
|
-
require
|
6
|
+
require "test/unit"
|
7
|
+
require "spreadsheet"
|
8
8
|
|
9
9
|
module Spreadsheet
|
10
10
|
class TestWorksheet < Test::Unit::TestCase
|
@@ -12,49 +12,52 @@ module Spreadsheet
|
|
12
12
|
@book = Workbook.new
|
13
13
|
@sheet = @book.create_worksheet
|
14
14
|
end
|
15
|
+
|
15
16
|
def test_cell_writer
|
16
|
-
assert_nil @sheet[0,0]
|
17
|
+
assert_nil @sheet[0, 0]
|
17
18
|
assert_equal 0, @sheet.column_count
|
18
19
|
assert_equal 0, @sheet.row_count
|
19
|
-
@sheet[0,0] =
|
20
|
-
assert_equal
|
20
|
+
@sheet[0, 0] = "foo"
|
21
|
+
assert_equal "foo", @sheet[0, 0]
|
21
22
|
assert_equal 1, @sheet.column_count
|
22
23
|
assert_equal 1, @sheet.row_count
|
23
|
-
@sheet[1,0] =
|
24
|
+
@sheet[1, 0] = "bar"
|
24
25
|
assert_equal 1, @sheet.column_count
|
25
26
|
assert_equal 2, @sheet.row_count
|
26
|
-
@sheet[0,1] =
|
27
|
+
@sheet[0, 1] = "bar"
|
27
28
|
assert_equal 2, @sheet.column_count
|
28
29
|
assert_equal 2, @sheet.row_count
|
29
|
-
@sheet[1,0] = nil
|
30
|
+
@sheet[1, 0] = nil
|
30
31
|
assert_equal 2, @sheet.column_count
|
31
32
|
assert_equal 2, @sheet.row_count
|
32
|
-
@sheet[0,1] = nil
|
33
|
+
@sheet[0, 1] = nil
|
33
34
|
assert_equal 2, @sheet.column_count
|
34
35
|
assert_equal 2, @sheet.row_count
|
35
36
|
end
|
37
|
+
|
36
38
|
def test_column_count
|
37
39
|
assert_equal 0, @sheet.column_count
|
38
|
-
@sheet.replace_row 3, nil, nil, 1, 2,
|
40
|
+
@sheet.replace_row 3, nil, nil, 1, 2, "foo, bar"
|
39
41
|
assert_equal 3, @sheet.column_count
|
40
|
-
@sheet.replace_row 8, nil,
|
42
|
+
@sheet.replace_row 8, nil, "something", 4, 7, nil
|
41
43
|
assert_equal 4, @sheet.column_count
|
42
|
-
@sheet.replace_row 5, 4,
|
44
|
+
@sheet.replace_row 5, 4, "something", 4, 7, nil
|
43
45
|
assert_equal 5, @sheet.column_count
|
44
|
-
@sheet.replace_row 5, nil,
|
46
|
+
@sheet.replace_row 5, nil, "something", 4, 7, nil
|
45
47
|
assert_equal 4, @sheet.column_count
|
46
48
|
@sheet.replace_row 3
|
47
49
|
assert_equal 4, @sheet.column_count
|
48
50
|
end
|
51
|
+
|
49
52
|
def test_row_count
|
50
53
|
assert_equal 0, @sheet.row_count
|
51
|
-
@sheet.replace_row 3, nil, nil, 1, 2,
|
54
|
+
@sheet.replace_row 3, nil, nil, 1, 2, "foo, bar"
|
52
55
|
assert_equal 1, @sheet.row_count
|
53
|
-
@sheet.replace_row 8, nil,
|
56
|
+
@sheet.replace_row 8, nil, "something", 4, 7, nil
|
54
57
|
assert_equal 6, @sheet.row_count
|
55
|
-
@sheet.replace_row 5, 4,
|
58
|
+
@sheet.replace_row 5, 4, "something", 4, 7, nil
|
56
59
|
assert_equal 6, @sheet.row_count
|
57
|
-
@sheet.replace_row 5, nil,
|
60
|
+
@sheet.replace_row 5, nil, "something", 4, 7, nil
|
58
61
|
assert_equal 6, @sheet.row_count
|
59
62
|
@sheet.replace_row 3
|
60
63
|
assert_equal 6, @sheet.row_count
|
@@ -67,6 +70,7 @@ module Spreadsheet
|
|
67
70
|
@sheet.delete_row 2
|
68
71
|
assert_equal 3, @sheet.row_count
|
69
72
|
end
|
73
|
+
|
70
74
|
def test_modify_column
|
71
75
|
assert_equal 10, @sheet.column(0).width
|
72
76
|
@sheet.column(1).width = 20
|
@@ -76,6 +80,7 @@ module Spreadsheet
|
|
76
80
|
assert_equal 30, @sheet.column(0).width
|
77
81
|
assert_equal 20, @sheet.column(1).width
|
78
82
|
end
|
83
|
+
|
79
84
|
def test_format_dates!
|
80
85
|
rowi = -1
|
81
86
|
|
@@ -83,30 +88,29 @@ module Spreadsheet
|
|
83
88
|
# No dates = no new formats
|
84
89
|
assert_equal 1, @book.formats.length # Default format
|
85
90
|
|
86
|
-
@sheet.row(rowi+=1).concat(["Hello", "World"])
|
91
|
+
@sheet.row(rowi += 1).concat(["Hello", "World"])
|
87
92
|
@sheet.format_dates!
|
88
93
|
# No dates = no new formats
|
89
94
|
assert_equal 1, @book.formats.length
|
90
95
|
|
91
|
-
@sheet.row(rowi+=1).concat([Date.new(2010,1,1)])
|
96
|
+
@sheet.row(rowi += 1).concat([Date.new(2010, 1, 1)])
|
92
97
|
@sheet.format_dates!
|
93
98
|
# 1 date = 1 new format
|
94
99
|
assert_equal 2, @book.formats.length
|
95
100
|
|
96
|
-
@sheet.row(rowi+=1).concat([Date.new(2011,1,1)])
|
97
|
-
@sheet.row(rowi+=1).concat([Date.new(2012,1,1)])
|
98
|
-
@sheet.row(rowi+=1).concat([Date.new(2013,1,1)])
|
101
|
+
@sheet.row(rowi += 1).concat([Date.new(2011, 1, 1)])
|
102
|
+
@sheet.row(rowi += 1).concat([Date.new(2012, 1, 1)])
|
103
|
+
@sheet.row(rowi += 1).concat([Date.new(2013, 1, 1)])
|
99
104
|
@sheet.format_dates!
|
100
105
|
# 4 dates = only 1 new format across them:
|
101
106
|
assert_equal 3, @book.formats.length
|
102
107
|
|
103
|
-
@sheet.row(rowi+=1).concat([Date.new(2014,1,1)])
|
108
|
+
@sheet.row(rowi += 1).concat([Date.new(2014, 1, 1)])
|
104
109
|
@sheet.row(rowi).default_format = Format.new
|
105
|
-
@sheet.row(rowi
|
110
|
+
@sheet.row(rowi + 1).concat([Date.new(2015, 1, 1)])
|
106
111
|
@sheet.format_dates!
|
107
112
|
# 6 dates = 2 new formats across them:
|
108
113
|
assert_equal 6, @book.formats.length
|
109
|
-
|
110
114
|
end
|
111
115
|
|
112
116
|
def test_freeze_panel!
|
@@ -118,20 +122,19 @@ module Spreadsheet
|
|
118
122
|
assert_equal 2, @sheet.froze_top
|
119
123
|
assert_equal 3, @sheet.froze_left
|
120
124
|
assert_equal true, @sheet.has_frozen_panel?
|
121
|
-
|
122
125
|
end
|
123
126
|
|
124
127
|
def test_each_with_skip
|
125
|
-
@sheet[0, 0] =
|
126
|
-
@sheet[1, 0] =
|
128
|
+
@sheet[0, 0] = "foo"
|
129
|
+
@sheet[1, 0] = "bar"
|
127
130
|
|
128
131
|
assert_equal @sheet.each(1).count, 1
|
129
|
-
assert_equal @sheet.each(1).first[0],
|
132
|
+
assert_equal @sheet.each(1).first[0], "bar"
|
130
133
|
end
|
131
134
|
|
132
135
|
def test_each_with_index
|
133
|
-
@sheet[0, 0] =
|
134
|
-
@sheet[1, 0] =
|
136
|
+
@sheet[0, 0] = "foo"
|
137
|
+
@sheet[1, 0] = "bar"
|
135
138
|
|
136
139
|
@sheet.each.with_index do |row, index|
|
137
140
|
assert_equal row[0], @sheet[index, 0]
|
@@ -140,8 +143,7 @@ module Spreadsheet
|
|
140
143
|
|
141
144
|
def test_name
|
142
145
|
worksheet = Worksheet.new(name: '\a/b*c?d:e[f]')
|
143
|
-
assert_equal
|
146
|
+
assert_equal "_a_b_c_d_e_f_", worksheet.name
|
144
147
|
end
|
145
|
-
|
146
148
|
end
|
147
149
|
end
|
metadata
CHANGED
@@ -1,15 +1,29 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: spreadsheet
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.3.
|
4
|
+
version: 1.3.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Hannes F. Wyss, Masaomi Hatakeyama, Zeno R.R. Davatz
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2025-03-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: logger
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
13
27
|
- !ruby/object:Gem::Dependency
|
14
28
|
name: bigdecimal
|
15
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -80,6 +94,34 @@ dependencies:
|
|
80
94
|
- - ">="
|
81
95
|
- !ruby/object:Gem::Version
|
82
96
|
version: '0'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: debug
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - ">="
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0'
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - ">="
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: standard
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - ">="
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0'
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - ">="
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '0'
|
83
125
|
description: As of version 0.6.0, only Microsoft Excel compatible spreadsheets are
|
84
126
|
supported
|
85
127
|
email: hannes.wyss@gmail.com, mhatakeyama@ywesee.com, zdavatz@ywesee.com
|
@@ -180,7 +222,7 @@ licenses:
|
|
180
222
|
metadata:
|
181
223
|
changelog_uri: https://github.com/zdavatz/spreadsheet/blob/master/History.md
|
182
224
|
funding_uri: https://github.com/sponsors/zdavatz
|
183
|
-
post_install_message:
|
225
|
+
post_install_message:
|
184
226
|
rdoc_options: []
|
185
227
|
require_paths:
|
186
228
|
- lib
|
@@ -188,7 +230,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
188
230
|
requirements:
|
189
231
|
- - ">="
|
190
232
|
- !ruby/object:Gem::Version
|
191
|
-
version: '
|
233
|
+
version: '2.6'
|
192
234
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
193
235
|
requirements:
|
194
236
|
- - ">="
|
@@ -196,7 +238,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
196
238
|
version: '0'
|
197
239
|
requirements: []
|
198
240
|
rubygems_version: 3.5.3
|
199
|
-
signing_key:
|
241
|
+
signing_key:
|
200
242
|
specification_version: 4
|
201
243
|
summary: The Spreadsheet Library is designed to read and write Spreadsheet Documents
|
202
244
|
test_files:
|