caxlsx 3.0.2 → 3.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/CHANGELOG.md +31 -8
- data/README.md +4 -0
- data/examples/{image1.jpeg → assets/image1.jpeg} +0 -0
- data/examples/generate.rb +15 -0
- data/lib/axlsx/drawing/bar_3D_chart.rb +5 -8
- data/lib/axlsx/drawing/bar_chart.rb +13 -18
- data/lib/axlsx/drawing/bar_series.rb +18 -1
- data/lib/axlsx/drawing/pie_series.rb +1 -1
- data/lib/axlsx/package.rb +44 -6
- data/lib/axlsx/util/constants.rb +2 -1
- data/lib/axlsx/util/mime_type_utils.rb +1 -1
- data/lib/axlsx/util/validators.rb +1 -1
- data/lib/axlsx/util/zip_command.rb +73 -0
- data/lib/axlsx/version.rb +1 -1
- data/lib/axlsx/workbook/worksheet/cell.rb +9 -3
- data/lib/axlsx/workbook/worksheet/data_validation.rb +4 -4
- data/lib/axlsx/workbook/worksheet/pivot_table.rb +7 -2
- data/lib/axlsx/workbook/worksheet/pivot_table_cache_definition.rb +1 -1
- data/lib/axlsx/workbook/worksheet/row.rb +6 -4
- data/lib/axlsx/workbook/worksheet/table.rb +1 -1
- data/lib/axlsx/workbook/worksheet/worksheet.rb +7 -1
- data/lib/axlsx.rb +7 -5
- data/test/drawing/tc_bar_3D_chart.rb +26 -11
- data/test/drawing/tc_bar_chart.rb +26 -11
- data/test/drawing/tc_bar_series.rb +10 -1
- data/test/drawing/tc_drawing.rb +2 -2
- data/test/drawing/tc_hyperlink.rb +1 -1
- data/test/drawing/tc_one_cell_anchor.rb +1 -1
- data/test/drawing/tc_pic.rb +4 -4
- data/test/drawing/tc_pie_series.rb +2 -1
- data/test/fixtures/image1.gif +0 -0
- data/test/fixtures/image1.jpeg +0 -0
- data/test/fixtures/image1.jpg +0 -0
- data/test/fixtures/image1.png +0 -0
- data/test/fixtures/image1_fake.jpg +0 -0
- data/test/tc_helper.rb +0 -2
- data/test/tc_package.rb +80 -13
- data/test/util/tc_mime_type_utils.rb +1 -1
- data/test/util/tc_validators.rb +1 -1
- data/test/workbook/worksheet/tc_cell.rb +38 -0
- data/test/workbook/worksheet/tc_pivot_table.rb +8 -0
- data/test/workbook/worksheet/tc_pivot_table_cache_definition.rb +8 -0
- data/test/workbook/worksheet/tc_row.rb +21 -0
- data/test/workbook/worksheet/tc_table.rb +10 -0
- data/test/workbook/worksheet/tc_worksheet.rb +16 -18
- metadata +116 -137
- data/examples/2010_comments.rb +0 -17
- data/examples/anchor_swapping.rb +0 -28
- data/examples/auto_filter.rb +0 -25
- data/examples/basic_charts.rb +0 -58
- data/examples/chart_colors.rb +0 -88
- data/examples/colored_links.rb +0 -45
- data/examples/conditional_formatting/example_conditional_formatting.rb +0 -89
- data/examples/conditional_formatting/getting_barred.rb +0 -37
- data/examples/conditional_formatting/hitting_the_high_notes.rb +0 -37
- data/examples/conditional_formatting/scaled_colors.rb +0 -39
- data/examples/conditional_formatting/stop_and_go.rb +0 -37
- data/examples/data_validation.rb +0 -67
- data/examples/example.rb +0 -900
- data/examples/extractive.rb +0 -45
- data/examples/ios_preview.rb +0 -14
- data/examples/merge_cells.rb +0 -17
- data/examples/no_grid_with_borders.rb +0 -18
- data/examples/page_setup.rb +0 -11
- data/examples/pivot_table.rb +0 -39
- data/examples/pivot_test.rb +0 -63
- data/examples/sheet_protection.rb +0 -10
- data/examples/skydrive/real_example.rb +0 -63
- data/examples/split.rb +0 -16
- data/examples/styles.rb +0 -66
- data/examples/underline.rb +0 -13
- data/examples/wrap_text.rb +0 -21
@@ -1,89 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby -w -s
|
2
|
-
# -*- coding: utf-8 -*-
|
3
|
-
$LOAD_PATH.unshift "#{File.dirname(__FILE__)}/../lib"
|
4
|
-
require 'axlsx'
|
5
|
-
|
6
|
-
p = Axlsx::Package.new
|
7
|
-
book = p.workbook
|
8
|
-
|
9
|
-
# define your regular styles
|
10
|
-
percent = book.styles.add_style(:format_code => "0.00%", :border => Axlsx::STYLE_THIN_BORDER)
|
11
|
-
money = book.styles.add_style(:format_code => '0,000', :border => Axlsx::STYLE_THIN_BORDER)
|
12
|
-
status = book.styles.add_style(:border => Axlsx::STYLE_THIN_BORDER)
|
13
|
-
|
14
|
-
# define the style for conditional formatting
|
15
|
-
profitable = book.styles.add_style( :fg_color => "428751", :type => :dxf )
|
16
|
-
unprofitable = book.styles.add_style( :fg_color => "FF0000", :type => :dxf )
|
17
|
-
|
18
|
-
book.add_worksheet(:name => "Cell Is") do |ws|
|
19
|
-
|
20
|
-
# Generate 20 rows of data
|
21
|
-
ws.add_row ["Previous Year Quarterly Profits (JPY)"]
|
22
|
-
ws.add_row ["Quarter", "Profit", "% of Total"]
|
23
|
-
offset = 3
|
24
|
-
rows = 20
|
25
|
-
offset.upto(rows + offset) do |i|
|
26
|
-
ws.add_row ["Q#{i}", 10000*((rows/2-i) * (rows/2-i)), "=100*B#{i}/SUM(B3:B#{rows+offset})"], :style=>[nil, money, percent]
|
27
|
-
end
|
28
|
-
|
29
|
-
# Apply conditional formatting to range B3:B100 in the worksheet
|
30
|
-
ws.add_conditional_formatting("B3:B100", { :type => :cellIs, :operator => :greaterThan, :formula => "100000", :dxfId => profitable, :priority => 1 })
|
31
|
-
# Apply conditional using the between operator; NOTE: supply an array to :formula for between/notBetween
|
32
|
-
ws.add_conditional_formatting("C3:C100", { :type => :cellIs, :operator => :between, :formula => ["0.00%","100.00%"], :dxfId => unprofitable, :priority => 1 })
|
33
|
-
end
|
34
|
-
|
35
|
-
book.add_worksheet(:name => "Color Scale") do |ws|
|
36
|
-
ws.add_row ["Previous Year Quarterly Profits (JPY)"]
|
37
|
-
ws.add_row ["Quarter", "Profit", "% of Total"]
|
38
|
-
offset = 3
|
39
|
-
rows = 20
|
40
|
-
offset.upto(rows + offset) do |i|
|
41
|
-
ws.add_row ["Q#{i}", 10000*((rows/2-i) * (rows/2-i)), "=100*B#{i}/SUM(B3:B#{rows+offset})"], :style=>[nil, money, percent]
|
42
|
-
end
|
43
|
-
# Apply conditional formatting to range B3:B100 in the worksheet
|
44
|
-
color_scale = Axlsx::ColorScale.new
|
45
|
-
ws.add_conditional_formatting("B3:B100", { :type => :colorScale, :operator => :greaterThan, :formula => "100000", :dxfId => profitable, :priority => 1, :color_scale => color_scale })
|
46
|
-
end
|
47
|
-
|
48
|
-
|
49
|
-
book.add_worksheet(:name => "Data Bar") do |ws|
|
50
|
-
ws.add_row ["Previous Year Quarterly Profits (JPY)"]
|
51
|
-
ws.add_row ["Quarter", "Profit", "% of Total"]
|
52
|
-
offset = 3
|
53
|
-
rows = 20
|
54
|
-
offset.upto(rows + offset) do |i|
|
55
|
-
ws.add_row ["Q#{i}", 10000*((rows/2-i) * (rows/2-i)), "=100*B#{i}/SUM(B3:B#{rows+offset})"], :style=>[nil, money, percent]
|
56
|
-
end
|
57
|
-
# Apply conditional formatting to range B3:B100 in the worksheet
|
58
|
-
data_bar = Axlsx::DataBar.new
|
59
|
-
ws.add_conditional_formatting("B3:B100", { :type => :dataBar, :dxfId => profitable, :priority => 1, :data_bar => data_bar })
|
60
|
-
end
|
61
|
-
|
62
|
-
book.add_worksheet(:name => "Icon Set") do |ws|
|
63
|
-
ws.add_row ["Previous Year Quarterly Profits (JPY)"]
|
64
|
-
ws.add_row ["Quarter", "Profit", "% of Total"]
|
65
|
-
offset = 3
|
66
|
-
rows = 20
|
67
|
-
offset.upto(rows + offset) do |i|
|
68
|
-
ws.add_row ["Q#{i}", 10000*((rows/2-i) * (rows/2-i)), "=100*B#{i}/SUM(B3:B#{rows+offset})"], :style=>[nil, money, percent]
|
69
|
-
end
|
70
|
-
# Apply conditional formatting to range B3:B100 in the worksheet
|
71
|
-
icon_set = Axlsx::IconSet.new
|
72
|
-
ws.add_conditional_formatting("B3:B100", { :type => :iconSet, :dxfId => profitable, :priority => 1, :icon_set => icon_set })
|
73
|
-
end
|
74
|
-
|
75
|
-
book.add_worksheet(:name => "Contains Text") do |ws|
|
76
|
-
ws.add_row ["Previous Year Quarterly Profits (JPY)"]
|
77
|
-
ws.add_row ["Quarter", "Profit", "% of Total", "Status"]
|
78
|
-
offset = 3
|
79
|
-
rows = 20
|
80
|
-
offset.upto(rows + offset) do |i|
|
81
|
-
ws.add_row ["Q#{i}", 10000*((rows/2-i) * (rows/2-i)), "=100*B#{i}/SUM(B3:B#{rows+offset})", (10000*((rows/2-i) * (rows/2-i))) > 100000 ? "PROFIT" : "LOSS"], :style=>[nil, money, percent, status]
|
82
|
-
end
|
83
|
-
|
84
|
-
# Apply conditional formatting to range D3:D100 in the worksheet
|
85
|
-
ws.add_conditional_formatting("D3:D100", { :type => :containsText, :operator => :equal, :text => "PROFIT", :dxfId => profitable, :priority => 1 })
|
86
|
-
ws.add_conditional_formatting("D3:D100", { :type => :containsText, :operator => :equal, :text => "LOSS", :dxfId => unprofitable, :priority => 1 })
|
87
|
-
end
|
88
|
-
|
89
|
-
p.serialize('example_conditional_formatting.xlsx')
|
@@ -1,37 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby -w -s
|
2
|
-
# -*- coding: utf-8 -*-
|
3
|
-
$LOAD_PATH.unshift "#{File.dirname(__FILE__)}/../lib"
|
4
|
-
require 'axlsx'
|
5
|
-
p = Axlsx::Package.new
|
6
|
-
p.workbook do |wb|
|
7
|
-
# define your regular styles
|
8
|
-
styles = wb.styles
|
9
|
-
title = styles.add_style :sz => 15, :b => true, :u => true
|
10
|
-
default = styles.add_style :border => Axlsx::STYLE_THIN_BORDER
|
11
|
-
header = styles.add_style :bg_color => '00', :fg_color => 'FF', :b => true
|
12
|
-
money = styles.add_style :format_code => '#,###,##0', :border => Axlsx::STYLE_THIN_BORDER
|
13
|
-
percent = styles.add_style :num_fmt => Axlsx::NUM_FMT_PERCENT, :border => Axlsx::STYLE_THIN_BORDER
|
14
|
-
|
15
|
-
# define the style for conditional formatting - its the :dxf bit that counts!
|
16
|
-
profitable = styles.add_style :fg_color => 'FF428751', :sz => 12, :type => :dxf, :b => true
|
17
|
-
|
18
|
-
wb.add_worksheet(:name => 'Data Bar Conditional Formatting') do |ws|
|
19
|
-
ws.add_row ['A$$le Q1 Revenue Historical Analysis (USD)'], :style => title
|
20
|
-
ws.add_row
|
21
|
-
ws.add_row ['Quarter', 'Profit', '% of Total'], :style => header
|
22
|
-
ws.add_row ['Q1-2010', '15680000000', '=B4/SUM(B4:B7)'], :style => [default, money, percent]
|
23
|
-
ws.add_row ['Q1-2011', '26740000000', '=B5/SUM(B4:B7)'], :style => [default, money, percent]
|
24
|
-
ws.add_row ['Q1-2012', '46330000000', '=B6/SUM(B4:B7)'], :style => [default, money, percent]
|
25
|
-
ws.add_row ['Q1-2013(est)', '72230000000', '=B7/SUM(B4:B7)'], :style => [default, money, percent]
|
26
|
-
|
27
|
-
ws.merge_cells 'A1:C1'
|
28
|
-
|
29
|
-
# Apply conditional formatting to range B4:B7 in the worksheet
|
30
|
-
data_bar = Axlsx::DataBar.new
|
31
|
-
ws.add_conditional_formatting 'B4:B7', { :type => :dataBar,
|
32
|
-
:dxfId => profitable,
|
33
|
-
:priority => 1,
|
34
|
-
:data_bar => data_bar }
|
35
|
-
end
|
36
|
-
end
|
37
|
-
p.serialize 'getting_barred.xlsx'
|
@@ -1,37 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby -w -s
|
2
|
-
# -*- coding: utf-8 -*-
|
3
|
-
$LOAD_PATH.unshift "#{File.dirname(__FILE__)}/../lib"
|
4
|
-
require 'axlsx'
|
5
|
-
p = Axlsx::Package.new
|
6
|
-
p.workbook do |wb|
|
7
|
-
# define your regular styles
|
8
|
-
styles = wb.styles
|
9
|
-
title = styles.add_style :sz => 15, :b => true, :u => true
|
10
|
-
default = styles.add_style :border => Axlsx::STYLE_THIN_BORDER
|
11
|
-
header = styles.add_style :bg_color => '00', :fg_color => 'FF', :b => true
|
12
|
-
money = styles.add_style :format_code => '###,###,###,##0', :border => Axlsx::STYLE_THIN_BORDER
|
13
|
-
percent = styles.add_style :num_fmt => Axlsx::NUM_FMT_PERCENT, :border => Axlsx::STYLE_THIN_BORDER
|
14
|
-
|
15
|
-
# define the style for conditional formatting - its the :dxf bit that counts!
|
16
|
-
profitable = styles.add_style :fg_color => 'FF428751', :sz => 12, :type => :dxf, :b => true
|
17
|
-
|
18
|
-
wb.add_worksheet(:name => 'The High Notes') do |ws|
|
19
|
-
ws.add_row ['A$$le Q1 Revenue Historical Analysis (USD)'], :style => title
|
20
|
-
ws.add_row
|
21
|
-
ws.add_row ['Quarter', 'Profit', '% of Total'], :style => header
|
22
|
-
ws.add_row ['Q1-2010', '15680000000', '=B4/SUM(B4:B7)'], :style => [default, money, percent]
|
23
|
-
ws.add_row ['Q1-2011', '26740000000', '=B5/SUM(B4:B7)'], :style => [default, money, percent]
|
24
|
-
ws.add_row ['Q1-2012', '46330000000', '=B6/SUM(B4:B7)'], :style => [default, money, percent]
|
25
|
-
ws.add_row ['Q1-2013(est)', '72230000000', '=B7/SUM(B4:B7)'], :style => [default, money, percent]
|
26
|
-
|
27
|
-
ws.merge_cells 'A1:C1'
|
28
|
-
|
29
|
-
# Apply conditional formatting to range B4:B7 in the worksheet
|
30
|
-
ws.add_conditional_formatting 'B4:B7', { :type => :cellIs,
|
31
|
-
:operator => :greaterThan,
|
32
|
-
:formula => '27000000000',
|
33
|
-
:dxfId => profitable,
|
34
|
-
:priority => 1 }
|
35
|
-
end
|
36
|
-
end
|
37
|
-
p.serialize 'the_high_notes.xlsx'
|
@@ -1,39 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby -w -s
|
2
|
-
# -*- coding: utf-8 -*-
|
3
|
-
$LOAD_PATH.unshift "#{File.dirname(__FILE__)}/../lib"
|
4
|
-
require 'axlsx'
|
5
|
-
p = Axlsx::Package.new
|
6
|
-
p.workbook do |wb|
|
7
|
-
# define your regular styles
|
8
|
-
styles = wb.styles
|
9
|
-
title = styles.add_style :sz => 15, :b => true, :u => true
|
10
|
-
default = styles.add_style :border => Axlsx::STYLE_THIN_BORDER
|
11
|
-
header = styles.add_style :bg_color => '00', :fg_color => 'FF', :b => true
|
12
|
-
money = styles.add_style :format_code => '#,###,##0', :border => Axlsx::STYLE_THIN_BORDER
|
13
|
-
percent = styles.add_style :num_fmt => Axlsx::NUM_FMT_PERCENT, :border => Axlsx::STYLE_THIN_BORDER
|
14
|
-
|
15
|
-
# define the style for conditional formatting - its the :dxf bit that counts!
|
16
|
-
profitable = styles.add_style :fg_color => 'FF428751', :sz => 12, :type => :dxf, :b => true
|
17
|
-
|
18
|
-
wb.add_worksheet(:name => 'Scaled Colors') do |ws|
|
19
|
-
ws.add_row ['A$$le Q1 Revenue Historical Analysis (USD)'], :style => title
|
20
|
-
ws.add_row
|
21
|
-
ws.add_row ['Quarter', 'Profit', '% of Total'], :style => header
|
22
|
-
ws.add_row ['Q1-2010', '15680000000', '=B4/SUM(B4:B7)'], :style => [default, money, percent]
|
23
|
-
ws.add_row ['Q1-2011', '26740000000', '=B5/SUM(B4:B7)'], :style => [default, money, percent]
|
24
|
-
ws.add_row ['Q1-2012', '46330000000', '=B6/SUM(B4:B7)'], :style => [default, money, percent]
|
25
|
-
ws.add_row ['Q1-2013(est)', '72230000000', '=B7/SUM(B4:B7)'], :style => [default, money, percent]
|
26
|
-
|
27
|
-
ws.merge_cells 'A1:C1'
|
28
|
-
|
29
|
-
# Apply conditional formatting to range B4:B7 in the worksheet
|
30
|
-
color_scale = Axlsx::ColorScale.new
|
31
|
-
ws.add_conditional_formatting 'B4:B7', { :type => :colorScale,
|
32
|
-
:operator => :greaterThan,
|
33
|
-
:formula => '27000000000',
|
34
|
-
:dxfId => profitable,
|
35
|
-
:priority => 1,
|
36
|
-
:color_scale => color_scale }
|
37
|
-
end
|
38
|
-
end
|
39
|
-
p.serialize 'scaled_colors.xlsx'
|
@@ -1,37 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby -w -s
|
2
|
-
# -*- coding: utf-8 -*-
|
3
|
-
$LOAD_PATH.unshift "#{File.dirname(__FILE__)}/../lib"
|
4
|
-
require 'axlsx'
|
5
|
-
p = Axlsx::Package.new
|
6
|
-
p.workbook do |wb|
|
7
|
-
# define your regular styles
|
8
|
-
styles = wb.styles
|
9
|
-
title = styles.add_style :sz => 15, :b => true, :u => true
|
10
|
-
default = styles.add_style :border => Axlsx::STYLE_THIN_BORDER
|
11
|
-
header = styles.add_style :bg_color => '00', :fg_color => 'FF', :b => true
|
12
|
-
money = styles.add_style :format_code => '#,###,##0', :border => Axlsx::STYLE_THIN_BORDER
|
13
|
-
percent = styles.add_style :num_fmt => Axlsx::NUM_FMT_PERCENT, :border => Axlsx::STYLE_THIN_BORDER
|
14
|
-
|
15
|
-
# define the style for conditional formatting - its the :dxf bit that counts!
|
16
|
-
profitable = styles.add_style :fg_color => 'FF428751', :sz => 12, :type => :dxf, :b => true
|
17
|
-
|
18
|
-
wb.add_worksheet(:name => 'Downtown traffic') do |ws|
|
19
|
-
ws.add_row ['A$$le Q1 Revenue Historical Analysis (USD)'], :style => title
|
20
|
-
ws.add_row
|
21
|
-
ws.add_row ['Quarter', 'Profit', '% of Total'], :style => header
|
22
|
-
ws.add_row ['Q1-2010', '15680000000', '=B4/SUM(B4:B7)'], :style => [default, money, percent]
|
23
|
-
ws.add_row ['Q1-2011', '26740000000', '=B5/SUM(B4:B7)'], :style => [default, money, percent]
|
24
|
-
ws.add_row ['Q1-2012', '46330000000', '=B6/SUM(B4:B7)'], :style => [default, money, percent]
|
25
|
-
ws.add_row ['Q1-2013(est)', '72230000000', '=B7/SUM(B4:B7)'], :style => [default, money, percent]
|
26
|
-
|
27
|
-
ws.merge_cells 'A1:C1'
|
28
|
-
|
29
|
-
# Apply conditional formatting to range B3:B7 in the worksheet
|
30
|
-
icon_set = Axlsx::IconSet.new
|
31
|
-
ws.add_conditional_formatting 'B3:B7', { :type => :iconSet,
|
32
|
-
:dxfId => profitable,
|
33
|
-
:priority => 1,
|
34
|
-
:icon_set => icon_set }
|
35
|
-
end
|
36
|
-
end
|
37
|
-
p.serialize 'stop_and_go.xlsx'
|
data/examples/data_validation.rb
DELETED
@@ -1,67 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby -w -s
|
2
|
-
# -*- coding: utf-8 -*-
|
3
|
-
$LOAD_PATH.unshift "#{File.dirname(__FILE__)}/../lib"
|
4
|
-
require 'axlsx'
|
5
|
-
|
6
|
-
p = Axlsx::Package.new
|
7
|
-
p.workbook.add_worksheet do |ws|
|
8
|
-
|
9
|
-
ws.add_row ["between", "lessThan", "bound list", "raw list"]
|
10
|
-
|
11
|
-
4.times do |i|
|
12
|
-
ws.add_row [nil, nil, nil, nil, (i+1) * 2]
|
13
|
-
end
|
14
|
-
|
15
|
-
ws.add_data_validation("A2:A5", {
|
16
|
-
:type => :whole,
|
17
|
-
:operator => :between,
|
18
|
-
:formula1 => '5',
|
19
|
-
:formula2 => '10',
|
20
|
-
:showErrorMessage => true,
|
21
|
-
:errorTitle => 'Wrong input',
|
22
|
-
:error => 'Only values between 5 and 10',
|
23
|
-
:errorStyle => :information,
|
24
|
-
:showInputMessage => true,
|
25
|
-
:promptTitle => 'Be careful!',
|
26
|
-
:prompt => %{We really want a value between 5 and 10,
|
27
|
-
but it is OK if you want to break the rules.
|
28
|
-
}})
|
29
|
-
|
30
|
-
ws.add_data_validation("B1:B5", {
|
31
|
-
:type => :textLength,
|
32
|
-
:operator => :lessThan,
|
33
|
-
:formula1 => '10',
|
34
|
-
:showErrorMessage => true,
|
35
|
-
:errorTitle => 'Text is too long',
|
36
|
-
:error => 'Max text length is 10 characters',
|
37
|
-
:errorStyle => :stop,
|
38
|
-
:showInputMessage => true,
|
39
|
-
:promptTitle => 'Text length',
|
40
|
-
:prompt => 'Max text length is 10 characters'})
|
41
|
-
|
42
|
-
ws.add_data_validation("C2:C5", {
|
43
|
-
:type => :list,
|
44
|
-
:formula1 => 'E2:E5',
|
45
|
-
:showDropDown => false,
|
46
|
-
:showErrorMessage => true,
|
47
|
-
:errorTitle => '',
|
48
|
-
:error => 'Only values from E2:E5',
|
49
|
-
:errorStyle => :stop,
|
50
|
-
:showInputMessage => true,
|
51
|
-
:promptTitle => '',
|
52
|
-
:prompt => 'Only values from E2:E5'})
|
53
|
-
|
54
|
-
ws.add_data_validation("D2:D5", {
|
55
|
-
:type => :list,
|
56
|
-
:formula1 => '"Red, Orange, NavyBlue"',
|
57
|
-
:showDropDown => false,
|
58
|
-
:showErrorMessage => true,
|
59
|
-
:errorTitle => '',
|
60
|
-
:error => 'Please use the dropdown selector to choose the value',
|
61
|
-
:errorStyle => :stop,
|
62
|
-
:showInputMessage => true,
|
63
|
-
:prompt => '& Choose the value from the dropdown'})
|
64
|
-
|
65
|
-
end
|
66
|
-
|
67
|
-
p.serialize 'data_validation.xlsx'
|