axlsx 2.1.0.pre → 3.0.0.pre
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +5 -0
- data/README.md +17 -20
- data/Rakefile +0 -1
- data/examples/conditional_formatting/example_conditional_formatting.rb +15 -0
- data/examples/example.rb +31 -1
- data/lib/axlsx.rb +9 -4
- data/lib/axlsx/drawing/area_chart.rb +99 -0
- data/lib/axlsx/drawing/area_series.rb +110 -0
- data/lib/axlsx/drawing/bar_chart.rb +143 -0
- data/lib/axlsx/drawing/chart.rb +8 -1
- data/lib/axlsx/drawing/d_lbls.rb +3 -3
- data/lib/axlsx/drawing/drawing.rb +3 -0
- data/lib/axlsx/drawing/line_series.rb +18 -1
- data/lib/axlsx/drawing/num_val.rb +3 -1
- data/lib/axlsx/drawing/one_cell_anchor.rb +2 -1
- data/lib/axlsx/drawing/pic.rb +24 -17
- data/lib/axlsx/drawing/scaling.rb +2 -2
- data/lib/axlsx/drawing/scatter_series.rb +16 -2
- data/lib/axlsx/drawing/str_val.rb +3 -1
- data/lib/axlsx/drawing/title.rb +19 -1
- data/lib/axlsx/drawing/two_cell_anchor.rb +6 -1
- data/lib/axlsx/drawing/view_3D.rb +2 -2
- data/lib/axlsx/package.rb +7 -16
- data/lib/axlsx/rels/relationships.rb +5 -2
- data/lib/axlsx/stylesheet/num_fmt.rb +9 -0
- data/lib/axlsx/stylesheet/styles.rb +1 -1
- data/lib/axlsx/util/constants.rb +8 -5
- data/lib/axlsx/util/mime_type_utils.rb +11 -0
- data/lib/axlsx/util/simple_typed_list.rb +1 -1
- data/lib/axlsx/util/validators.rb +14 -9
- data/lib/axlsx/version.rb +1 -1
- data/lib/axlsx/workbook/workbook.rb +19 -1
- data/lib/axlsx/workbook/workbook_view.rb +5 -3
- data/lib/axlsx/workbook/worksheet/cell.rb +26 -19
- data/lib/axlsx/workbook/worksheet/cell_serializer.rb +15 -5
- data/lib/axlsx/workbook/worksheet/cfvos.rb +3 -0
- data/lib/axlsx/workbook/worksheet/cols.rb +5 -2
- data/lib/axlsx/workbook/worksheet/merged_cells.rb +2 -0
- data/lib/axlsx/workbook/worksheet/outline_pr.rb +33 -0
- data/lib/axlsx/workbook/worksheet/pivot_table.rb +36 -13
- data/lib/axlsx/workbook/worksheet/protected_ranges.rb +4 -1
- data/lib/axlsx/workbook/worksheet/rich_text.rb +23 -3
- data/lib/axlsx/workbook/worksheet/rich_text_run.rb +28 -32
- data/lib/axlsx/workbook/worksheet/row.rb +7 -0
- data/lib/axlsx/workbook/worksheet/sheet_pr.rb +21 -3
- data/lib/axlsx/workbook/worksheet/tables.rb +3 -0
- data/lib/axlsx/workbook/worksheet/worksheet.rb +8 -51
- data/lib/axlsx/workbook/worksheet/worksheet_drawing.rb +10 -10
- data/test/axlsx.qcachegrind +2226 -0
- data/test/drawing/tc_area_chart.rb +39 -0
- data/test/drawing/tc_area_series.rb +71 -0
- data/test/drawing/tc_bar_chart.rb +71 -0
- data/test/drawing/tc_chart.rb +23 -10
- data/test/drawing/tc_drawing.rb +2 -2
- data/test/drawing/tc_line_series.rb +38 -5
- data/test/drawing/tc_pic.rb +11 -19
- data/test/drawing/tc_scatter_series.rb +16 -5
- data/test/drawing/tc_str_val.rb +9 -0
- data/test/drawing/tc_title.rb +5 -0
- data/test/stylesheet/tc_styles.rb +2 -2
- data/test/tc_axlsx.rb +31 -0
- data/test/tc_helper.rb +3 -1
- data/test/tc_package.rb +12 -0
- data/test/util/tc_mime_type_utils.rb +13 -0
- data/test/util/tc_simple_typed_list.rb +1 -1
- data/test/util/tc_validators.rb +34 -10
- data/test/workbook/tc_shared_strings_table.rb +16 -1
- data/test/workbook/tc_workbook.rb +22 -1
- data/test/workbook/worksheet/tc_cell.rb +53 -11
- data/test/workbook/worksheet/tc_outline_pr.rb +19 -0
- data/test/workbook/worksheet/tc_pivot_table.rb +21 -6
- data/test/workbook/worksheet/tc_rich_text_run.rb +11 -11
- data/test/workbook/worksheet/tc_row.rb +5 -0
- data/test/workbook/worksheet/tc_sheet_pr.rb +26 -4
- data/test/workbook/worksheet/tc_table.rb +2 -3
- data/test/workbook/worksheet/tc_worksheet.rb +53 -38
- metadata +72 -20
- data/examples/IMAGE1UP.JPEG +0 -0
- data/lib/axlsx/util/string.rb +0 -7
@@ -0,0 +1,19 @@
|
|
1
|
+
require 'tc_helper.rb'
|
2
|
+
|
3
|
+
class TestOutlinePr < Test::Unit::TestCase
|
4
|
+
def setup
|
5
|
+
@outline_pr = Axlsx::OutlinePr.new(:summary_below => false, :summary_right => true, :apply_styles => false)
|
6
|
+
end
|
7
|
+
|
8
|
+
def test_summary_below
|
9
|
+
assert_equal false, @outline_pr.summary_below
|
10
|
+
end
|
11
|
+
|
12
|
+
def test_summary_right
|
13
|
+
assert_equal true, @outline_pr.summary_right
|
14
|
+
end
|
15
|
+
|
16
|
+
def test_apply_styles
|
17
|
+
assert_equal false, @outline_pr.apply_styles
|
18
|
+
end
|
19
|
+
end
|
@@ -67,6 +67,26 @@ class TestPivotTable < Test::Unit::TestCase
|
|
67
67
|
assert_equal([{:ref=>"Sales", :subtotal => 'average'}], pivot_table.data)
|
68
68
|
end
|
69
69
|
|
70
|
+
def test_add_pivot_table_with_style_info
|
71
|
+
style_info_data = { :name=>"PivotStyleMedium9", :showRowHeaders=>"1", :showLastColumn=>"0"}
|
72
|
+
pivot_table = @ws.add_pivot_table('G5:G6', 'A1:E5', {:style_info=>style_info_data}) do |pt|
|
73
|
+
pt.rows = ['Year', 'Month']
|
74
|
+
pt.columns = ['Type']
|
75
|
+
pt.data = ['Sales']
|
76
|
+
pt.pages = ['Region']
|
77
|
+
end
|
78
|
+
assert_equal(style_info_data, pivot_table.style_info)
|
79
|
+
shared_test_pivot_table_xml_validity(pivot_table)
|
80
|
+
end
|
81
|
+
|
82
|
+
def test_add_pivot_table_with_row_without_subtotals
|
83
|
+
pivot_table = @ws.add_pivot_table('G5:G6', 'A1:D5', {:no_subtotals_on_headers=>['Year']}) do |pt|
|
84
|
+
pt.data = ['Sales']
|
85
|
+
pt.rows = ['Year','Month']
|
86
|
+
end
|
87
|
+
assert_equal(['Year'], pivot_table.no_subtotals_on_headers)
|
88
|
+
end
|
89
|
+
|
70
90
|
def test_header_indices
|
71
91
|
pivot_table = @ws.add_pivot_table('G5:G6', 'A1:E5')
|
72
92
|
assert_equal(0, pivot_table.header_index_of('Year' ))
|
@@ -97,12 +117,7 @@ class TestPivotTable < Test::Unit::TestCase
|
|
97
117
|
end
|
98
118
|
|
99
119
|
def test_to_xml_string
|
100
|
-
pivot_table = @ws.add_pivot_table('G5:G6', 'A1:
|
101
|
-
shared_test_pivot_table_xml_validity(pivot_table)
|
102
|
-
end
|
103
|
-
|
104
|
-
def test_to_xml_string_with_configuration
|
105
|
-
pivot_table = @ws.add_pivot_table('G5:G6', 'A1:E5') do |pt|
|
120
|
+
pivot_table = @ws.add_pivot_table('G5:G6', 'A1:E5', {:no_subtotals_on_headers=>['Year']}) do |pt|
|
106
121
|
pt.rows = ['Year', 'Month']
|
107
122
|
pt.columns = ['Type']
|
108
123
|
pt.data = ['Sales']
|
@@ -7,7 +7,7 @@ class RichTextRun < Test::Unit::TestCase
|
|
7
7
|
@p.workbook.styles.add_style :sz => 20
|
8
8
|
@rtr = Axlsx::RichTextRun.new('hihihi', b: true, i: false)
|
9
9
|
@rtr2 = Axlsx::RichTextRun.new('hihi2hi2', b: false, i: true)
|
10
|
-
@rt = Axlsx::RichText.new
|
10
|
+
@rt = Axlsx::RichText.new
|
11
11
|
@rt.runs << @rtr
|
12
12
|
@rt.runs << @rtr2
|
13
13
|
@row = @ws.add_row [@rt]
|
@@ -19,7 +19,7 @@ class RichTextRun < Test::Unit::TestCase
|
|
19
19
|
assert_equal(@rtr.b, true)
|
20
20
|
assert_equal(@rtr.i, false)
|
21
21
|
end
|
22
|
-
|
22
|
+
|
23
23
|
def test_font_size_with_custom_style_and_no_sz
|
24
24
|
@c.style = @c.row.worksheet.workbook.styles.add_style :bg_color => 'FF00FF'
|
25
25
|
sz = @rtr.send(:font_size)
|
@@ -41,12 +41,12 @@ class RichTextRun < Test::Unit::TestCase
|
|
41
41
|
sz2 = @rtr2.send(:font_size)
|
42
42
|
assert_equal(sz2, 52)
|
43
43
|
end
|
44
|
-
|
44
|
+
|
45
45
|
def test_rtr_with_sz
|
46
46
|
@rtr.sz = 25
|
47
47
|
assert_equal(25, @rtr.send(:font_size))
|
48
48
|
end
|
49
|
-
|
49
|
+
|
50
50
|
def test_color
|
51
51
|
assert_raise(ArgumentError) { @rtr.color = -1.1 }
|
52
52
|
assert_nothing_raised { @rtr.color = "FF00FF00" }
|
@@ -129,9 +129,9 @@ class RichTextRun < Test::Unit::TestCase
|
|
129
129
|
end
|
130
130
|
|
131
131
|
def test_family
|
132
|
-
assert_raise(ArgumentError) { @
|
133
|
-
assert_nothing_raised { @
|
134
|
-
assert_equal(@
|
132
|
+
assert_raise(ArgumentError) { @rtr.family = 0 }
|
133
|
+
assert_nothing_raised { @rtr.family = 1 }
|
134
|
+
assert_equal(@rtr.family, 1)
|
135
135
|
end
|
136
136
|
|
137
137
|
def test_b
|
@@ -139,11 +139,11 @@ class RichTextRun < Test::Unit::TestCase
|
|
139
139
|
assert_nothing_raised { @c.b = false }
|
140
140
|
assert_equal(@c.b, false)
|
141
141
|
end
|
142
|
-
|
142
|
+
|
143
143
|
def test_multiline_autowidth
|
144
144
|
wrap = @p.workbook.styles.add_style({:alignment => {:wrap_text => true}})
|
145
145
|
awtr = Axlsx::RichTextRun.new('I\'m bold' + "\n", :b => true)
|
146
|
-
rt = Axlsx::RichText.new
|
146
|
+
rt = Axlsx::RichText.new
|
147
147
|
rt.runs << awtr
|
148
148
|
@ws.add_row [rt], :style => wrap
|
149
149
|
ar = [0]
|
@@ -151,7 +151,7 @@ class RichTextRun < Test::Unit::TestCase
|
|
151
151
|
assert_equal(ar.length, 2)
|
152
152
|
assert_equal(ar.last, 0)
|
153
153
|
end
|
154
|
-
|
154
|
+
|
155
155
|
def test_to_xml
|
156
156
|
schema = Nokogiri::XML::Schema(File.open(Axlsx::SML_XSD))
|
157
157
|
doc = Nokogiri::XML(@ws.to_xml_string)
|
@@ -161,7 +161,7 @@ class RichTextRun < Test::Unit::TestCase
|
|
161
161
|
errors.push error
|
162
162
|
end
|
163
163
|
assert(errors.empty?, "error free validation")
|
164
|
-
|
164
|
+
|
165
165
|
assert(doc.xpath('//rPr/b[@val=1]'))
|
166
166
|
assert(doc.xpath('//rPr/i[@val=0]'))
|
167
167
|
assert(doc.xpath('//rPr/b[@val=0]'))
|
@@ -27,6 +27,11 @@ class TestRow < Test::Unit::TestCase
|
|
27
27
|
r.cells.each { |c| assert_equal(c.style,1) }
|
28
28
|
end
|
29
29
|
|
30
|
+
def test_color
|
31
|
+
r = @ws.add_row([1,2,3,4,5])
|
32
|
+
r.color = "FF00FF00"
|
33
|
+
r.cells.each { |c| assert_equal(c.color.rgb, "FF00FF00") }
|
34
|
+
end
|
30
35
|
|
31
36
|
def test_index
|
32
37
|
assert_equal(@row.row_index, @row.worksheet.rows.index(@row))
|
@@ -5,23 +5,45 @@ class TestSheetPr < Test::Unit::TestCase
|
|
5
5
|
|
6
6
|
def setup
|
7
7
|
worksheet = Axlsx::Package.new.workbook.add_worksheet
|
8
|
-
@options = {
|
8
|
+
@options = {
|
9
9
|
:sync_horizontal => false,
|
10
10
|
:sync_vertical => false,
|
11
|
-
:
|
11
|
+
:transition_evaluation => true,
|
12
12
|
:transition_entry => true,
|
13
13
|
:published => false,
|
14
14
|
:filter_mode => true,
|
15
15
|
:enable_format_conditions_calculation => false,
|
16
16
|
:code_name => '007',
|
17
|
-
:sync_ref => 'foo'
|
17
|
+
:sync_ref => 'foo',
|
18
|
+
:tab_color => 'FFFF6666'
|
18
19
|
}
|
19
20
|
@sheet_pr = Axlsx::SheetPr.new(worksheet, @options)
|
20
21
|
end
|
21
22
|
|
22
23
|
def test_initialization
|
23
24
|
@options.each do |key, value|
|
24
|
-
|
25
|
+
if key==:tab_color
|
26
|
+
stored_value = @sheet_pr.send(key)
|
27
|
+
assert_equal Axlsx::Color, stored_value.class
|
28
|
+
assert_equal value, stored_value.rgb
|
29
|
+
else
|
30
|
+
assert_equal value, @sheet_pr.send(key)
|
31
|
+
end
|
25
32
|
end
|
26
33
|
end
|
34
|
+
|
35
|
+
def test_to_xml_string
|
36
|
+
doc = Nokogiri::XML(@sheet_pr.to_xml_string)
|
37
|
+
assert_equal(doc.xpath("//sheetPr[@syncHorizontal='0']").size, 1)
|
38
|
+
assert_equal(doc.xpath("//sheetPr[@syncVertical='0']").size, 1)
|
39
|
+
assert_equal(doc.xpath("//sheetPr[@transitionEvaluation='1']").size, 1)
|
40
|
+
assert_equal(doc.xpath("//sheetPr[@transitionEntry='1']").size, 1)
|
41
|
+
assert_equal(doc.xpath("//sheetPr[@published='0']").size, 1)
|
42
|
+
assert_equal(doc.xpath("//sheetPr[@filterMode='1']").size, 1)
|
43
|
+
assert_equal(doc.xpath("//sheetPr[@enableFormatConditionsCalculation='0']").size, 1)
|
44
|
+
assert_equal(doc.xpath("//sheetPr[@codeName='007']").size, 1)
|
45
|
+
assert_equal(doc.xpath("//sheetPr[@syncRef='foo']").size, 1)
|
46
|
+
assert_equal(doc.xpath("//sheetPr/tabColor[@rgb='FFFF6666']").size, 1)
|
47
|
+
assert_equal(doc.xpath("//sheetPr/pageSetUpPr[@fitToPage='0']").size, 1)
|
48
|
+
end
|
27
49
|
end
|
@@ -47,9 +47,9 @@ class TestTable < Test::Unit::TestCase
|
|
47
47
|
|
48
48
|
def test_relationships
|
49
49
|
assert(@ws.relationships.empty?)
|
50
|
-
|
50
|
+
@ws.add_table("A1:D5")
|
51
51
|
assert_equal(@ws.relationships.size, 1, "adding a table adds a relationship")
|
52
|
-
|
52
|
+
@ws.add_table("F1:J5")
|
53
53
|
assert_equal(@ws.relationships.size, 2, "adding a table adds a relationship")
|
54
54
|
end
|
55
55
|
|
@@ -64,5 +64,4 @@ class TestTable < Test::Unit::TestCase
|
|
64
64
|
end
|
65
65
|
assert(errors.empty?, "error free validation")
|
66
66
|
end
|
67
|
-
|
68
67
|
end
|
@@ -93,7 +93,7 @@ class TestWorksheet < Test::Unit::TestCase
|
|
93
93
|
page_setup = {:fit_to_height => 1, :fit_to_width => 1, :orientation => :landscape, :paper_width => "210mm", :paper_height => "297mm", :scale => 80}
|
94
94
|
print_options = {:grid_lines => true, :headings => true, :horizontal_centered => true, :vertical_centered => true}
|
95
95
|
header_footer = {:different_first => false, :different_odd_even => false, :odd_header => 'Header'}
|
96
|
-
optioned = @ws.workbook.add_worksheet(:name => 'bob', :page_margins => page_margins, :page_setup => page_setup, :print_options => print_options, :header_footer => header_footer
|
96
|
+
optioned = @ws.workbook.add_worksheet(:name => 'bob', :page_margins => page_margins, :page_setup => page_setup, :print_options => print_options, :header_footer => header_footer)
|
97
97
|
page_margins.keys.each do |key|
|
98
98
|
assert_equal(page_margins[key], optioned.page_margins.send(key))
|
99
99
|
end
|
@@ -107,23 +107,21 @@ class TestWorksheet < Test::Unit::TestCase
|
|
107
107
|
assert_equal(header_footer[key], optioned.header_footer.send(key))
|
108
108
|
end
|
109
109
|
assert_equal(optioned.name, 'bob')
|
110
|
-
assert_equal(optioned.selected, true)
|
111
|
-
assert_equal(optioned.show_gridlines, false)
|
112
110
|
|
113
111
|
end
|
114
112
|
|
115
113
|
|
116
|
-
def test_use_gridlines
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
end
|
114
|
+
# def test_use_gridlines
|
115
|
+
# assert_raise(ArgumentError) { @ws.show_gridlines = -1.1 }
|
116
|
+
# assert_nothing_raised { @ws.show_gridlines = false }
|
117
|
+
# assert_equal(@ws.show_gridlines, false)
|
118
|
+
# end
|
121
119
|
|
122
|
-
def test_selected
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
end
|
120
|
+
# def test_selected
|
121
|
+
# assert_raise(ArgumentError) { @ws.selected = -1.1 }
|
122
|
+
# assert_nothing_raised { @ws.selected = true }
|
123
|
+
# assert_equal(@ws.selected, true)
|
124
|
+
# end
|
127
125
|
|
128
126
|
def test_rels_pn
|
129
127
|
assert_equal(@ws.rels_pn, "worksheets/_rels/sheet1.xml.rels")
|
@@ -266,11 +264,11 @@ class TestWorksheet < Test::Unit::TestCase
|
|
266
264
|
end
|
267
265
|
end
|
268
266
|
|
269
|
-
def test_to_xml_string_fit_to_page
|
270
|
-
|
271
|
-
|
272
|
-
|
273
|
-
end
|
267
|
+
# def test_to_xml_string_fit_to_page
|
268
|
+
# @ws.page_setup.fit_to_width = 1
|
269
|
+
# doc = Nokogiri::XML(@ws.to_xml_string)
|
270
|
+
# assert_equal(doc.xpath('//xmlns:worksheet/xmlns:sheetPr/xmlns:pageSetUpPr[@fitToPage=1]').size, 1)
|
271
|
+
# end
|
274
272
|
|
275
273
|
def test_to_xml_string_dimensions
|
276
274
|
@ws.add_row [1,2,3]
|
@@ -278,22 +276,22 @@ class TestWorksheet < Test::Unit::TestCase
|
|
278
276
|
assert_equal(doc.xpath('//xmlns:worksheet/xmlns:dimension[@ref="A1:C1"]').size, 1)
|
279
277
|
end
|
280
278
|
|
281
|
-
def test_fit_to_page_assignation_does_nothing
|
282
|
-
|
283
|
-
|
284
|
-
end
|
279
|
+
# def test_fit_to_page_assignation_does_nothing
|
280
|
+
# @ws.fit_to_page = true
|
281
|
+
# assert_equal(@ws.fit_to_page?, false)
|
282
|
+
# end
|
285
283
|
|
286
|
-
def test_to_xml_string_selected
|
287
|
-
|
288
|
-
|
289
|
-
|
290
|
-
end
|
284
|
+
# def test_to_xml_string_selected
|
285
|
+
# @ws.selected = true
|
286
|
+
# doc = Nokogiri::XML(@ws.to_xml_string)
|
287
|
+
# assert_equal(doc.xpath('//xmlns:worksheet/xmlns:sheetViews/xmlns:sheetView[@tabSelected=1]').size, 1)
|
288
|
+
# end
|
291
289
|
|
292
|
-
def test_to_xml_string_show_gridlines
|
293
|
-
|
294
|
-
|
295
|
-
|
296
|
-
end
|
290
|
+
# def test_to_xml_string_show_gridlines
|
291
|
+
# @ws.show_gridlines = false
|
292
|
+
# doc = Nokogiri::XML(@ws.to_xml_string)
|
293
|
+
# assert_equal(doc.xpath('//xmlns:worksheet/xmlns:sheetViews/xmlns:sheetView[@showGridLines=0]').size, 1)
|
294
|
+
# end
|
297
295
|
|
298
296
|
def test_to_xml_string_auto_fit_data
|
299
297
|
@ws.add_row [1, "two"]
|
@@ -323,6 +321,13 @@ class TestWorksheet < Test::Unit::TestCase
|
|
323
321
|
assert_equal(doc.xpath('//xmlns:worksheet/xmlns:mergeCells/xmlns:mergeCell[@ref="E1:F1"]').size, 1)
|
324
322
|
end
|
325
323
|
|
324
|
+
def test_to_xml_string_merge_cells_row
|
325
|
+
row = @ws.add_row [1, "two"]
|
326
|
+
@ws.merge_cells row
|
327
|
+
doc = Nokogiri::XML(@ws.to_xml_string)
|
328
|
+
assert_equal(doc.xpath('//xmlns:worksheet/xmlns:mergeCells/xmlns:mergeCell[@ref="A1:B1"]').size, 1)
|
329
|
+
end
|
330
|
+
|
326
331
|
def test_to_xml_string_row_breaks
|
327
332
|
@ws.add_page_break("A1")
|
328
333
|
doc = Nokogiri::XML(@ws.to_xml_string)
|
@@ -432,15 +437,15 @@ class TestWorksheet < Test::Unit::TestCase
|
|
432
437
|
def test_relationships
|
433
438
|
@ws.add_row [1,2,3]
|
434
439
|
assert(@ws.relationships.empty?, "No Drawing relationship until you add a chart")
|
435
|
-
|
440
|
+
@ws.add_chart Axlsx::Pie3DChart
|
436
441
|
assert_equal(@ws.relationships.size, 1, "adding a chart creates the relationship")
|
437
|
-
|
442
|
+
@ws.add_chart Axlsx::Pie3DChart
|
438
443
|
assert_equal(@ws.relationships.size, 1, "multiple charts still only result in one relationship")
|
439
|
-
|
444
|
+
@ws.add_comment :text => 'builder', :author => 'bob', :ref => @ws.rows.last.cells.last
|
440
445
|
assert_equal(@ws.relationships.size, 3, "adding a comment adds 2 relationships")
|
441
|
-
|
446
|
+
@ws.add_comment :text => 'not that is a comment!', :author => 'travis', :ref => "A1"
|
442
447
|
assert_equal(@ws.relationships.size, 3, "adding multiple comments in the same worksheet should not add any additional comment relationships")
|
443
|
-
|
448
|
+
@ws.add_pivot_table 'G5:G6', 'A1:D10'
|
444
449
|
assert_equal(@ws.relationships.size, 4, "adding a pivot table adds 1 relationship")
|
445
450
|
end
|
446
451
|
|
@@ -476,7 +481,7 @@ class TestWorksheet < Test::Unit::TestCase
|
|
476
481
|
@ws.column_widths nil, 0.5
|
477
482
|
assert_equal(@ws.column_info[1].width, 0.5, 'eat my width')
|
478
483
|
assert_raise(ArgumentError, 'only accept unsigned ints') { @ws.column_widths 2, 7, -1 }
|
479
|
-
assert_raise(ArgumentError, 'only accept Integer
|
484
|
+
assert_raise(ArgumentError, 'only accept Integer or Float') { @ws.column_widths 2, 7, "-1" }
|
480
485
|
end
|
481
486
|
|
482
487
|
def test_protect_range
|
@@ -574,4 +579,14 @@ class TestWorksheet < Test::Unit::TestCase
|
|
574
579
|
assert_equal(1, @wb.worksheets.size)
|
575
580
|
end
|
576
581
|
|
582
|
+
def test_worksheet_only_includes_outline_pr_when_set
|
583
|
+
doc = Nokogiri::XML(@ws.to_xml_string)
|
584
|
+
assert_equal(doc.xpath('//xmlns:worksheet/xmlns:sheetPr/xmlns:outlinePr').size, 0)
|
585
|
+
|
586
|
+
@ws.sheet_pr.outline_pr.summary_below = false
|
587
|
+
@ws.sheet_pr.outline_pr.summary_right = true
|
588
|
+
doc = Nokogiri::XML(@ws.to_xml_string)
|
589
|
+
assert_equal(doc.xpath('//xmlns:worksheet/xmlns:sheetPr/xmlns:outlinePr').size, 1)
|
590
|
+
assert_equal(doc.xpath('//xmlns:worksheet/xmlns:sheetPr/xmlns:outlinePr[@summaryBelow=0][@summaryRight=1]').size, 1)
|
591
|
+
end
|
577
592
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: axlsx
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 3.0.0.pre
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Randy Morgan
|
@@ -9,92 +9,130 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2018-02-14 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: nokogiri
|
16
16
|
requirement: !ruby/object:Gem::Requirement
|
17
17
|
requirements:
|
18
|
+
- - "~>"
|
19
|
+
- !ruby/object:Gem::Version
|
20
|
+
version: '1.8'
|
18
21
|
- - ">="
|
19
22
|
- !ruby/object:Gem::Version
|
20
|
-
version: 1.
|
23
|
+
version: 1.8.2
|
21
24
|
type: :runtime
|
22
25
|
prerelease: false
|
23
26
|
version_requirements: !ruby/object:Gem::Requirement
|
24
27
|
requirements:
|
28
|
+
- - "~>"
|
29
|
+
- !ruby/object:Gem::Version
|
30
|
+
version: '1.8'
|
25
31
|
- - ">="
|
26
32
|
- !ruby/object:Gem::Version
|
27
|
-
version: 1.
|
33
|
+
version: 1.8.2
|
28
34
|
- !ruby/object:Gem::Dependency
|
29
35
|
name: rubyzip
|
30
36
|
requirement: !ruby/object:Gem::Requirement
|
31
37
|
requirements:
|
32
38
|
- - "~>"
|
33
39
|
- !ruby/object:Gem::Version
|
34
|
-
version: 1.
|
40
|
+
version: '1.2'
|
41
|
+
- - ">="
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: 1.2.1
|
35
44
|
type: :runtime
|
36
45
|
prerelease: false
|
37
46
|
version_requirements: !ruby/object:Gem::Requirement
|
38
47
|
requirements:
|
39
48
|
- - "~>"
|
40
49
|
- !ruby/object:Gem::Version
|
41
|
-
version: 1.
|
50
|
+
version: '1.2'
|
51
|
+
- - ">="
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: 1.2.1
|
42
54
|
- !ruby/object:Gem::Dependency
|
43
55
|
name: htmlentities
|
44
56
|
requirement: !ruby/object:Gem::Requirement
|
45
57
|
requirements:
|
46
58
|
- - "~>"
|
47
59
|
- !ruby/object:Gem::Version
|
48
|
-
version: 4.3
|
60
|
+
version: '4.3'
|
61
|
+
- - ">="
|
62
|
+
- !ruby/object:Gem::Version
|
63
|
+
version: 4.3.4
|
49
64
|
type: :runtime
|
50
65
|
prerelease: false
|
51
66
|
version_requirements: !ruby/object:Gem::Requirement
|
52
67
|
requirements:
|
53
68
|
- - "~>"
|
54
69
|
- !ruby/object:Gem::Version
|
55
|
-
version: 4.3
|
70
|
+
version: '4.3'
|
71
|
+
- - ">="
|
72
|
+
- !ruby/object:Gem::Version
|
73
|
+
version: 4.3.4
|
74
|
+
- !ruby/object:Gem::Dependency
|
75
|
+
name: mimemagic
|
76
|
+
requirement: !ruby/object:Gem::Requirement
|
77
|
+
requirements:
|
78
|
+
- - "~>"
|
79
|
+
- !ruby/object:Gem::Version
|
80
|
+
version: '0.3'
|
81
|
+
type: :runtime
|
82
|
+
prerelease: false
|
83
|
+
version_requirements: !ruby/object:Gem::Requirement
|
84
|
+
requirements:
|
85
|
+
- - "~>"
|
86
|
+
- !ruby/object:Gem::Version
|
87
|
+
version: '0.3'
|
56
88
|
- !ruby/object:Gem::Dependency
|
57
89
|
name: yard
|
58
90
|
requirement: !ruby/object:Gem::Requirement
|
59
91
|
requirements:
|
60
|
-
- - "
|
92
|
+
- - "~>"
|
61
93
|
- !ruby/object:Gem::Version
|
62
|
-
version:
|
94
|
+
version: 0.9.8
|
63
95
|
type: :development
|
64
96
|
prerelease: false
|
65
97
|
version_requirements: !ruby/object:Gem::Requirement
|
66
98
|
requirements:
|
67
|
-
- - "
|
99
|
+
- - "~>"
|
68
100
|
- !ruby/object:Gem::Version
|
69
|
-
version:
|
101
|
+
version: 0.9.8
|
70
102
|
- !ruby/object:Gem::Dependency
|
71
103
|
name: kramdown
|
72
104
|
requirement: !ruby/object:Gem::Requirement
|
73
105
|
requirements:
|
106
|
+
- - "~>"
|
107
|
+
- !ruby/object:Gem::Version
|
108
|
+
version: '1.16'
|
74
109
|
- - ">="
|
75
110
|
- !ruby/object:Gem::Version
|
76
|
-
version:
|
111
|
+
version: 1.16.2
|
77
112
|
type: :development
|
78
113
|
prerelease: false
|
79
114
|
version_requirements: !ruby/object:Gem::Requirement
|
80
115
|
requirements:
|
116
|
+
- - "~>"
|
117
|
+
- !ruby/object:Gem::Version
|
118
|
+
version: '1.16'
|
81
119
|
- - ">="
|
82
120
|
- !ruby/object:Gem::Version
|
83
|
-
version:
|
121
|
+
version: 1.16.2
|
84
122
|
- !ruby/object:Gem::Dependency
|
85
123
|
name: timecop
|
86
124
|
requirement: !ruby/object:Gem::Requirement
|
87
125
|
requirements:
|
88
126
|
- - "~>"
|
89
127
|
- !ruby/object:Gem::Version
|
90
|
-
version: 0.
|
128
|
+
version: 0.8.1
|
91
129
|
type: :development
|
92
130
|
prerelease: false
|
93
131
|
version_requirements: !ruby/object:Gem::Requirement
|
94
132
|
requirements:
|
95
133
|
- - "~>"
|
96
134
|
- !ruby/object:Gem::Version
|
97
|
-
version: 0.
|
135
|
+
version: 0.8.1
|
98
136
|
description: " xlsx spreadsheet generation with charts, images, automated column
|
99
137
|
width, customizable styles and full schema validation. Axlsx helps you create beautiful
|
100
138
|
Office Open XML Spreadsheet documents ( Excel, Google Spreadsheets, Numbers, LibreOffice)
|
@@ -114,7 +152,6 @@ files:
|
|
114
152
|
- README.md
|
115
153
|
- Rakefile
|
116
154
|
- examples/2010_comments.rb
|
117
|
-
- examples/IMAGE1UP.JPEG
|
118
155
|
- examples/anchor_swapping.rb
|
119
156
|
- examples/auto_filter.rb
|
120
157
|
- examples/basic_charts.rb
|
@@ -148,10 +185,13 @@ files:
|
|
148
185
|
- lib/axlsx/content_type/override.rb
|
149
186
|
- lib/axlsx/doc_props/app.rb
|
150
187
|
- lib/axlsx/doc_props/core.rb
|
188
|
+
- lib/axlsx/drawing/area_chart.rb
|
189
|
+
- lib/axlsx/drawing/area_series.rb
|
151
190
|
- lib/axlsx/drawing/ax_data_source.rb
|
152
191
|
- lib/axlsx/drawing/axes.rb
|
153
192
|
- lib/axlsx/drawing/axis.rb
|
154
193
|
- lib/axlsx/drawing/bar_3D_chart.rb
|
194
|
+
- lib/axlsx/drawing/bar_chart.rb
|
155
195
|
- lib/axlsx/drawing/bar_series.rb
|
156
196
|
- lib/axlsx/drawing/bubble_chart.rb
|
157
197
|
- lib/axlsx/drawing/bubble_series.rb
|
@@ -210,12 +250,12 @@ files:
|
|
210
250
|
- lib/axlsx/stylesheet/xf.rb
|
211
251
|
- lib/axlsx/util/accessors.rb
|
212
252
|
- lib/axlsx/util/constants.rb
|
253
|
+
- lib/axlsx/util/mime_type_utils.rb
|
213
254
|
- lib/axlsx/util/options_parser.rb
|
214
255
|
- lib/axlsx/util/parser.rb
|
215
256
|
- lib/axlsx/util/serialized_attributes.rb
|
216
257
|
- lib/axlsx/util/simple_typed_list.rb
|
217
258
|
- lib/axlsx/util/storage.rb
|
218
|
-
- lib/axlsx/util/string.rb
|
219
259
|
- lib/axlsx/util/validators.rb
|
220
260
|
- lib/axlsx/version.rb
|
221
261
|
- lib/axlsx/workbook/defined_name.rb
|
@@ -249,6 +289,7 @@ files:
|
|
249
289
|
- lib/axlsx/workbook/worksheet/header_footer.rb
|
250
290
|
- lib/axlsx/workbook/worksheet/icon_set.rb
|
251
291
|
- lib/axlsx/workbook/worksheet/merged_cells.rb
|
292
|
+
- lib/axlsx/workbook/worksheet/outline_pr.rb
|
252
293
|
- lib/axlsx/workbook/worksheet/page_margins.rb
|
253
294
|
- lib/axlsx/workbook/worksheet/page_set_up_pr.rb
|
254
295
|
- lib/axlsx/workbook/worksheet/page_setup.rb
|
@@ -313,15 +354,19 @@ files:
|
|
313
354
|
- lib/schema/vml-wordprocessingDrawing.xsd
|
314
355
|
- lib/schema/wml.xsd
|
315
356
|
- lib/schema/xml.xsd
|
357
|
+
- test/axlsx.qcachegrind
|
316
358
|
- test/benchmark.rb
|
317
359
|
- test/content_type/tc_content_type.rb
|
318
360
|
- test/content_type/tc_default.rb
|
319
361
|
- test/content_type/tc_override.rb
|
320
362
|
- test/doc_props/tc_app.rb
|
321
363
|
- test/doc_props/tc_core.rb
|
364
|
+
- test/drawing/tc_area_chart.rb
|
365
|
+
- test/drawing/tc_area_series.rb
|
322
366
|
- test/drawing/tc_axes.rb
|
323
367
|
- test/drawing/tc_axis.rb
|
324
368
|
- test/drawing/tc_bar_3D_chart.rb
|
369
|
+
- test/drawing/tc_bar_chart.rb
|
325
370
|
- test/drawing/tc_bar_series.rb
|
326
371
|
- test/drawing/tc_bubble_chart.rb
|
327
372
|
- test/drawing/tc_bubble_series.rb
|
@@ -383,6 +428,7 @@ files:
|
|
383
428
|
- test/tc_axlsx.rb
|
384
429
|
- test/tc_helper.rb
|
385
430
|
- test/tc_package.rb
|
431
|
+
- test/util/tc_mime_type_utils.rb
|
386
432
|
- test/util/tc_serialized_attributes.rb
|
387
433
|
- test/util/tc_simple_typed_list.rb
|
388
434
|
- test/util/tc_validators.rb
|
@@ -406,6 +452,7 @@ files:
|
|
406
452
|
- test/workbook/worksheet/tc_date_time_converter.rb
|
407
453
|
- test/workbook/worksheet/tc_header_footer.rb
|
408
454
|
- test/workbook/worksheet/tc_icon_set.rb
|
455
|
+
- test/workbook/worksheet/tc_outline_pr.rb
|
409
456
|
- test/workbook/worksheet/tc_page_margins.rb
|
410
457
|
- test/workbook/worksheet/tc_page_set_up_pr.rb
|
411
458
|
- test/workbook/worksheet/tc_page_setup.rb
|
@@ -447,20 +494,24 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
447
494
|
version: 1.3.1
|
448
495
|
requirements: []
|
449
496
|
rubyforge_project:
|
450
|
-
rubygems_version: 2.
|
497
|
+
rubygems_version: 2.6.13
|
451
498
|
signing_key:
|
452
499
|
specification_version: 4
|
453
500
|
summary: Excel OOXML (xlsx) with charts, styles, images and autowidth columns.
|
454
501
|
test_files:
|
502
|
+
- test/axlsx.qcachegrind
|
455
503
|
- test/benchmark.rb
|
456
504
|
- test/content_type/tc_content_type.rb
|
457
505
|
- test/content_type/tc_default.rb
|
458
506
|
- test/content_type/tc_override.rb
|
459
507
|
- test/doc_props/tc_app.rb
|
460
508
|
- test/doc_props/tc_core.rb
|
509
|
+
- test/drawing/tc_area_chart.rb
|
510
|
+
- test/drawing/tc_area_series.rb
|
461
511
|
- test/drawing/tc_axes.rb
|
462
512
|
- test/drawing/tc_axis.rb
|
463
513
|
- test/drawing/tc_bar_3D_chart.rb
|
514
|
+
- test/drawing/tc_bar_chart.rb
|
464
515
|
- test/drawing/tc_bar_series.rb
|
465
516
|
- test/drawing/tc_bubble_chart.rb
|
466
517
|
- test/drawing/tc_bubble_series.rb
|
@@ -522,6 +573,7 @@ test_files:
|
|
522
573
|
- test/tc_axlsx.rb
|
523
574
|
- test/tc_helper.rb
|
524
575
|
- test/tc_package.rb
|
576
|
+
- test/util/tc_mime_type_utils.rb
|
525
577
|
- test/util/tc_serialized_attributes.rb
|
526
578
|
- test/util/tc_simple_typed_list.rb
|
527
579
|
- test/util/tc_validators.rb
|
@@ -545,6 +597,7 @@ test_files:
|
|
545
597
|
- test/workbook/worksheet/tc_date_time_converter.rb
|
546
598
|
- test/workbook/worksheet/tc_header_footer.rb
|
547
599
|
- test/workbook/worksheet/tc_icon_set.rb
|
600
|
+
- test/workbook/worksheet/tc_outline_pr.rb
|
548
601
|
- test/workbook/worksheet/tc_page_margins.rb
|
549
602
|
- test/workbook/worksheet/tc_page_set_up_pr.rb
|
550
603
|
- test/workbook/worksheet/tc_page_setup.rb
|
@@ -566,4 +619,3 @@ test_files:
|
|
566
619
|
- test/workbook/worksheet/tc_table_style_info.rb
|
567
620
|
- test/workbook/worksheet/tc_worksheet.rb
|
568
621
|
- test/workbook/worksheet/tc_worksheet_hyperlink.rb
|
569
|
-
has_rdoc: axlsx
|