caxlsx 3.0.2 → 3.0.3
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 +5 -5
- data/CHANGELOG.md +7 -0
- data/examples/{image1.jpeg → assets/image1.jpeg} +0 -0
- data/examples/generate.rb +15 -0
- data/lib/axlsx.rb +1 -0
- data/lib/axlsx/drawing/pie_series.rb +1 -1
- data/lib/axlsx/package.rb +17 -4
- data/lib/axlsx/util/constants.rb +2 -1
- data/lib/axlsx/util/zip_command.rb +73 -0
- data/lib/axlsx/version.rb +1 -1
- data/lib/axlsx/workbook/worksheet/cell.rb +4 -2
- 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_package.rb +29 -12
- data/test/util/tc_mime_type_utils.rb +1 -1
- data/test/workbook/worksheet/tc_cell.rb +31 -0
- metadata +18 -39
- 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
data/examples/2010_comments.rb
DELETED
@@ -1,17 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby -w -s
|
2
|
-
# -*- coding: utf-8 -*-
|
3
|
-
$LOAD_PATH.unshift "#{File.dirname(__FILE__)}/../lib"
|
4
|
-
|
5
|
-
#```ruby
|
6
|
-
require 'axlsx'
|
7
|
-
p = Axlsx::Package.new
|
8
|
-
p.workbook.add_worksheet(:name => 'Excel 2010 comments') do |sheet|
|
9
|
-
sheet.add_row ['Cell with visible comment']
|
10
|
-
sheet.add_row
|
11
|
-
sheet.add_row
|
12
|
-
sheet.add_row ['Cell with hidden comment']
|
13
|
-
|
14
|
-
sheet.add_comment :ref => 'A1', :author => 'XXX', :text => 'Visibile'
|
15
|
-
sheet.add_comment :ref => 'A4', :author => 'XXX', :text => 'Hidden', :visible => false
|
16
|
-
end
|
17
|
-
p.serialize('excel_2010_comment_test.xlsx')
|
data/examples/anchor_swapping.rb
DELETED
@@ -1,28 +0,0 @@
|
|
1
|
-
$LOAD_PATH.unshift "#{File.dirname(__FILE__)}/../lib"
|
2
|
-
require 'axlsx'
|
3
|
-
xls = Axlsx::Package.new
|
4
|
-
wb = xls.workbook
|
5
|
-
wb.add_worksheet do |ws|
|
6
|
-
img = File.expand_path('../image1.jpeg', __FILE__)
|
7
|
-
ws.add_image(:image_src => img) do |image|
|
8
|
-
image.start_at 2, 2
|
9
|
-
image.end_at 5, 5
|
10
|
-
end
|
11
|
-
end
|
12
|
-
wb.add_worksheet do |ws|
|
13
|
-
img = File.expand_path('../image1.jpeg', __FILE__)
|
14
|
-
ws.add_image(:image_src => img, :start_at => "B2") do |image|
|
15
|
-
image.width = 70
|
16
|
-
image.height = 50
|
17
|
-
end
|
18
|
-
end
|
19
|
-
wb.add_worksheet do |ws|
|
20
|
-
img = File.expand_path('../image1.jpeg', __FILE__)
|
21
|
-
ws.add_image(:image_src => img, :start_at => [1,1]) do |image|
|
22
|
-
image.end_at "E7"
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
xls.serialize 'anchor.xlsx'
|
data/examples/auto_filter.rb
DELETED
@@ -1,25 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby -w -s
|
2
|
-
# -*- coding: utf-8 -*-
|
3
|
-
|
4
|
-
$LOAD_PATH.unshift "#{File.dirname(__FILE__)}/../lib"
|
5
|
-
require 'axlsx'
|
6
|
-
Axlsx::Package.new do |p|
|
7
|
-
p.workbook.add_worksheet(:name => "Table") do |sheet|
|
8
|
-
sheet.add_row ["Build Matrix"]
|
9
|
-
sheet.add_row ["Build", "Duration", "Finished", "Rvm"]
|
10
|
-
sheet.add_row ["19.1", "1 min 32 sec", "about 10 hours ago", "1.8.7"]
|
11
|
-
sheet.add_row ["19.2", "1 min 28 sec", "about 10 hours ago", "1.9.2"]
|
12
|
-
sheet.add_row ["19.3", "1 min 35 sec", "about 10 hours ago", "1.9.3"]
|
13
|
-
sheet.auto_filter = 'A2:D5'
|
14
|
-
sheet.auto_filter.add_column 3, :filters, :filter_items => ['1.9.2']
|
15
|
-
end
|
16
|
-
p.workbook.add_worksheet(:name => "Table 2") do |sheet|
|
17
|
-
sheet.add_row ["Build Matrix"]
|
18
|
-
sheet.add_row ["Build", "Duration", "Finished", "Rvm"]
|
19
|
-
sheet.add_row ["19.1", "1 min 32 sec", "about 10 hours ago", "1.8.7"]
|
20
|
-
sheet.add_row ["19.2", "1 min 28 sec", "about 10 hours ago", "1.9.2"]
|
21
|
-
sheet.add_row ["19.3", "1 min 35 sec", "about 10 hours ago", "1.9.3"]
|
22
|
-
sheet.auto_filter = 'A2:D5'
|
23
|
-
sheet.auto_filter.add_column 3, :filters, :filter_items => ['1.9.2']
|
24
|
-
end
|
25
|
-
end.serialize('auto_filter.xlsx')
|
data/examples/basic_charts.rb
DELETED
@@ -1,58 +0,0 @@
|
|
1
|
-
$LOAD_PATH.unshift "#{File.dirname(__FILE__)}/../lib"
|
2
|
-
require 'axlsx'
|
3
|
-
p = Axlsx::Package.new
|
4
|
-
wb = p.workbook
|
5
|
-
|
6
|
-
# Pie Chart
|
7
|
-
wb.add_worksheet(:name => "Pie Chart") do |sheet|
|
8
|
-
sheet.add_row ["First", "Second", "Third", "Fourth"]
|
9
|
-
sheet.add_row [1, 2, 3, 4]
|
10
|
-
sheet.add_chart(Axlsx::Pie3DChart, :start_at => [0,2], :end_at => [5, 15], :title=> 'dark corner here') do |chart|
|
11
|
-
chart.add_series :data => sheet["A2:D2"], :labels => sheet["A1:D1"]
|
12
|
-
chart.d_lbls.show_val = true
|
13
|
-
chart.d_lbls.show_percent = true
|
14
|
-
chart.d_lbls.d_lbl_pos = :outEnd
|
15
|
-
chart.d_lbls.show_leader_lines = true
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
19
|
-
# line chart
|
20
|
-
wb.add_worksheet(:name => "Line Chart") do |sheet|
|
21
|
-
sheet.add_row ['1', '2', '3', '4']
|
22
|
-
sheet.add_row [1, 2, 3, '=sum(A2:C2)']
|
23
|
-
sheet.add_chart(Axlsx::Line3DChart, :start_at => [0,2], :end_at => [5, 15], :title => "Chart") do |chart|
|
24
|
-
chart.add_series :data => sheet["A2:D2"], :labels => sheet["A1:D1"], :title => 'bob'
|
25
|
-
chart.d_lbls.show_val = true
|
26
|
-
chart.d_lbls.show_cat_name = true
|
27
|
-
chart.catAxis.tick_lbl_pos = :none
|
28
|
-
|
29
|
-
end
|
30
|
-
end
|
31
|
-
|
32
|
-
# bar chart
|
33
|
-
wb.add_worksheet(:name => "Bar Chart") do |sheet|
|
34
|
-
sheet.add_row ["A Simple Bar Chart"]
|
35
|
-
sheet.add_row ["First", "Second", "Third"]
|
36
|
-
sheet.add_row [1, 2, 3]
|
37
|
-
sheet.add_chart(Axlsx::Bar3DChart, :start_at => "A4", :end_at => "F17") do |chart|
|
38
|
-
chart.add_series :data => sheet["A3:C3"], :labels => sheet["A2:C2"], :title => sheet["A1"]
|
39
|
-
chart.valAxis.label_rotation = -45
|
40
|
-
chart.catAxis.label_rotation = 45
|
41
|
-
chart.d_lbls.d_lbl_pos = :outEnd
|
42
|
-
chart.d_lbls.show_val = true
|
43
|
-
|
44
|
-
chart.catAxis.tick_lbl_pos = :none
|
45
|
-
end
|
46
|
-
end
|
47
|
-
|
48
|
-
# specifying colors and title
|
49
|
-
wb.add_worksheet(:name => "Colored Pie Chart") do |sheet|
|
50
|
-
sheet.add_row ["First", "Second", "Third", "Fourth"]
|
51
|
-
sheet.add_row [1, 2, 3, "=PRODUCT(A2:C2)"]
|
52
|
-
sheet.add_chart(Axlsx::Pie3DChart, :start_at => [0,2], :end_at => [5, 15], :title => "example 3: Pie Chart") do |chart|
|
53
|
-
chart.add_series :data => sheet["A2:D2"], :labels => ["A1:D1"], :colors => ['FF0000', '00FF00', '0000FF']
|
54
|
-
end
|
55
|
-
end
|
56
|
-
|
57
|
-
p.serialize('basic_charts.xlsx')
|
58
|
-
|
data/examples/chart_colors.rb
DELETED
@@ -1,88 +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
|
-
wb = p.workbook
|
8
|
-
|
9
|
-
##Generating A Bar Chart
|
10
|
-
|
11
|
-
wb.add_worksheet(:name => "Bar Chart") do |sheet|
|
12
|
-
sheet.add_row ["A Simple Bar Chart"]
|
13
|
-
sheet.add_row ["First", "Second", "Third"]
|
14
|
-
sheet.add_row [1,2,3.5]
|
15
|
-
sheet.add_chart(Axlsx::Bar3DChart, :start_at => "A4", :end_at => "F17", :title => sheet["A1"]) do |chart|
|
16
|
-
chart.add_series :data => sheet["A3:C3"], :labels => sheet["A2:C2"], :colors => ['FF0000', '00FF00', '0000FF'], :color => "000000"
|
17
|
-
chart.valAxis.label_rotation = -45
|
18
|
-
chart.catAxis.label_rotation = 45
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
|
-
##Generating A Bar Chart without data in the sheet
|
23
|
-
|
24
|
-
wb.add_worksheet(:name => "Hard Bar Chart") do |sheet|
|
25
|
-
sheet.add_chart(Axlsx::Bar3DChart, :start_at => "A4", :end_at => "F17", :title => "hard code chart") do |chart|
|
26
|
-
chart.add_series :data => [1,3,5], :labels => ['a', 'b', 'c'], :colors => ['FF0000', '00FF00', '0000FF']
|
27
|
-
chart.valAxis.label_rotation = -45
|
28
|
-
chart.catAxis.label_rotation = 45
|
29
|
-
end
|
30
|
-
end
|
31
|
-
|
32
|
-
|
33
|
-
##Generating A Pie Chart
|
34
|
-
|
35
|
-
wb.add_worksheet(:name => "Pie Chart") do |sheet|
|
36
|
-
sheet.add_row ["First", "Second", "Third", "Fourth"]
|
37
|
-
sheet.add_row [1, 2, 3, "=PRODUCT(A2:C2)"]
|
38
|
-
sheet.add_chart(Axlsx::Pie3DChart, :start_at => [0,2], :end_at => [5, 15], :title => "example 3: Pie Chart") do |chart|
|
39
|
-
chart.add_series :data => sheet["A2:D2"], :labels => sheet["A1:D1"], :colors => ['FF0000', '00FF00', '0000FF', '000000']
|
40
|
-
end
|
41
|
-
end
|
42
|
-
|
43
|
-
# Line Chart
|
44
|
-
|
45
|
-
wb.add_worksheet(:name => "Line Chart") do |sheet|
|
46
|
-
sheet.add_row ["First", 1, 5, 7, 9]
|
47
|
-
sheet.add_row ["Second", 5, 2, 14, 9]
|
48
|
-
sheet.add_chart(Axlsx::Line3DChart, :title => "example 6: Line Chart", :rotX => 30, :rotY => 30) do |chart|
|
49
|
-
chart.start_at 0, 2
|
50
|
-
chart.end_at 10, 15
|
51
|
-
chart.add_series :data => sheet["B1:E1"], :title => sheet["A1"], :color => "FF0000"
|
52
|
-
chart.add_series :data => sheet["B2:E2"], :title => sheet["A2"], :color => "00FF00"
|
53
|
-
end
|
54
|
-
end
|
55
|
-
|
56
|
-
wb.add_worksheet(:name => 'Line Chart with Axis colors') do |sheet|
|
57
|
-
sheet.add_row ["First", 1, 5, 7, 9]
|
58
|
-
sheet.add_row ["Second", 5, 2, 14, 9]
|
59
|
-
sheet.add_chart(Axlsx::Line3DChart, :title => "example 7: Flat Line Chart", :rot_x => 0, :perspective => 0) do |chart|
|
60
|
-
chart.valAxis.color = "FFFF00"
|
61
|
-
chart.catAxis.color = "00FFFF"
|
62
|
-
chart.serAxis.delete = true
|
63
|
-
chart.start_at 0, 2
|
64
|
-
chart.end_at 10, 15
|
65
|
-
chart.add_series :data => sheet["B1:E1"], :title => sheet["A1"], :color => "FF0000"
|
66
|
-
chart.add_series :data => sheet["B2:E2"], :title => sheet["A2"], :color => "00FF00"
|
67
|
-
end
|
68
|
-
|
69
|
-
end
|
70
|
-
|
71
|
-
##Generating A Scatter Chart
|
72
|
-
|
73
|
-
wb.add_worksheet(:name => "Scatter Chart") do |sheet|
|
74
|
-
sheet.add_row ["First", 1, 5, 7, 9]
|
75
|
-
sheet.add_row ["", 1, 25, 49, 81]
|
76
|
-
sheet.add_row ["Second", 5, 2, 14, 9]
|
77
|
-
sheet.add_row ["", 5, 10, 15, 20]
|
78
|
-
sheet.add_chart(Axlsx::ScatterChart, :title => "example 7: Scatter Chart") do |chart|
|
79
|
-
chart.start_at 0, 4
|
80
|
-
chart.end_at 10, 19
|
81
|
-
chart.add_series :xData => sheet["B1:E1"], :yData => sheet["B2:E2"], :title => sheet["A1"], :color => '00FF00'
|
82
|
-
chart.add_series :xData => sheet["B3:E3"], :yData => sheet["B4:E4"], :title => sheet["A3"], :color => 'FF0000'
|
83
|
-
end
|
84
|
-
end
|
85
|
-
|
86
|
-
|
87
|
-
p.validate.each { |e| puts e.message }
|
88
|
-
p.serialize 'chart_colors.xlsx'
|
data/examples/colored_links.rb
DELETED
@@ -1,45 +0,0 @@
|
|
1
|
-
require 'axlsx'
|
2
|
-
|
3
|
-
p = Axlsx::Package.new
|
4
|
-
wb = p.workbook
|
5
|
-
|
6
|
-
# Each style only needs to be declared once in the workbook.
|
7
|
-
s = wb.styles
|
8
|
-
title_cell = s.add_style sz: 14, alignment: { horizontal: :center }
|
9
|
-
black_cell = s.add_style sz: 10, alignment: { horizontal: :center }
|
10
|
-
blue_link = s.add_style fg_color: '0000FF'
|
11
|
-
|
12
|
-
# Create summary sheet
|
13
|
-
sum_sheet = wb.add_worksheet name: 'Summary'
|
14
|
-
sum_sheet.add_row ['Test Results'], sz: 16
|
15
|
-
sum_sheet.add_row
|
16
|
-
sum_sheet.add_row
|
17
|
-
sum_sheet.add_row ['Note: Blue cells below are links to the Log sheet'], sz: 10
|
18
|
-
sum_sheet.add_row
|
19
|
-
sum_sheet.add_row ['ID', 'Type', 'Match', 'Mismatch', 'Diffs', 'Errors', 'Result'], style: title_cell
|
20
|
-
|
21
|
-
sum_sheet.column_widths 10, 10, 1 0, 11, 10, 10, 10
|
22
|
-
|
23
|
-
# Starting data row in summary spreadsheet (after header info)
|
24
|
-
current_row = 7
|
25
|
-
|
26
|
-
# Create Log Sheet
|
27
|
-
log_sheet = wb.add_worksheet name: 'Log'
|
28
|
-
log_sheet.column_widths 10
|
29
|
-
log_sheet.add_row ['Log Detail'], sz: 16
|
30
|
-
log_sheet.add_row
|
31
|
-
|
32
|
-
# Add rows to summary sheet
|
33
|
-
(1..10).each do |sid|
|
34
|
-
sum_sheet.add_row [sid, 'test', '1', '2', '3', '4', '5'], style: black_cell
|
35
|
-
|
36
|
-
if sid.odd?
|
37
|
-
link = "A#{current_row}"
|
38
|
-
sum_sheet[link].style = blue_link
|
39
|
-
sum_sheet.add_hyperlink location: "'Log'!A#{current_row}", target: :sheet, ref: link
|
40
|
-
end
|
41
|
-
|
42
|
-
current_row += 1
|
43
|
-
end
|
44
|
-
|
45
|
-
p.serialize 'where_is_my_color.xlsx'
|
@@ -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'
|