write_xlsx 0.51.0 → 0.54.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +39 -0
- data/Gemfile +4 -14
- data/LICENSE.txt +3 -1
- data/README.rdoc +5 -0
- data/Rakefile +4 -71
- data/examples/chart_radar.rb +127 -0
- data/examples/chart_secondary_axis.rb +1 -1
- data/lib/write_xlsx/chart/area.rb +7 -18
- data/lib/write_xlsx/chart/bar.rb +20 -23
- data/lib/write_xlsx/chart/column.rb +7 -20
- data/lib/write_xlsx/chart/radar.rb +94 -0
- data/lib/write_xlsx/chart/stock.rb +6 -0
- data/lib/write_xlsx/chart.rb +317 -116
- data/lib/write_xlsx/package/xml_writer_simple.rb +2 -2
- data/lib/write_xlsx/version.rb +5 -0
- data/test/chart/test_write_a_latin.rb +22 -0
- data/test/chart/test_write_auto.rb +1 -1
- data/test/chart/test_write_ax_id.rb +1 -1
- data/test/chart/test_write_ax_pos.rb +1 -1
- data/test/chart/test_write_cross_ax.rb +1 -1
- data/test/chart/test_write_crosses.rb +1 -1
- data/test/chart/test_write_d_lbls.rb +18 -18
- data/test/chart/test_write_idx.rb +1 -1
- data/test/chart/test_write_label_align.rb +1 -1
- data/test/chart/test_write_label_offset.rb +1 -1
- data/test/chart/test_write_lang.rb +1 -1
- data/test/chart/test_write_layout.rb +1 -1
- data/test/chart/test_write_legend.rb +1 -1
- data/test/chart/test_write_legend_pos.rb +1 -1
- data/test/chart/test_write_major_gridlines.rb +2 -2
- data/test/chart/test_write_marker.rb +1 -1
- data/test/chart/test_write_marker_size.rb +1 -1
- data/test/chart/test_write_marker_value.rb +1 -1
- data/test/chart/test_write_num_cache.rb +1 -1
- data/test/chart/test_write_number_format.rb +40 -2
- data/test/chart/test_write_order.rb +1 -1
- data/test/chart/test_write_orientation.rb +1 -1
- data/test/chart/test_write_page_margins.rb +1 -1
- data/test/chart/test_write_page_setup.rb +1 -1
- data/test/chart/test_write_plot_vis_only.rb +1 -1
- data/test/chart/test_write_pt_count.rb +1 -1
- data/test/chart/test_write_style.rb +1 -1
- data/test/chart/test_write_symbol.rb +1 -1
- data/test/chart/test_write_tick_lbl_pos.rb +1 -1
- data/test/drawing/test_write_a_graphic_frame_locks.rb +1 -1
- data/test/drawing/test_write_c_chart.rb +1 -1
- data/test/drawing/test_write_c_nv_graphic_frame_pr.rb +2 -2
- data/test/drawing/test_write_c_nv_pr.rb +1 -1
- data/test/drawing/test_write_ext.rb +1 -1
- data/test/drawing/test_write_pos.rb +1 -1
- data/test/drawing/test_write_xfrm_extension.rb +1 -1
- data/test/drawing/test_write_xfrm_offset.rb +1 -1
- data/test/helper.rb +1 -1
- data/test/package/content_types/test_write_default.rb +1 -1
- data/test/package/content_types/test_write_override.rb +1 -1
- data/test/package/table/test_write_auto_filter.rb +1 -1
- data/test/package/table/test_write_table_column.rb +1 -1
- data/test/package/table/test_write_table_style_info.rb +1 -1
- data/test/package/vml/test_write_fill.rb +1 -1
- data/test/package/vml/test_write_idmap.rb +1 -1
- data/test/package/vml/test_write_move_with_cells.rb +1 -1
- data/test/package/vml/test_write_path.rb +2 -2
- data/test/package/vml/test_write_shadow.rb +1 -1
- data/test/package/vml/test_write_shapelayout.rb +1 -1
- data/test/package/vml/test_write_shapetype.rb +1 -1
- data/test/package/vml/test_write_size_with_cells.rb +1 -1
- data/test/package/vml/test_write_stroke.rb +1 -1
- data/test/perl_output/chart_radar.xlsx +0 -0
- data/test/perl_output/chart_secondary_axis.xlsx +0 -0
- data/test/regression/test_chart_axis22.rb +45 -0
- data/test/regression/test_chart_axis23.rb +46 -0
- data/test/regression/test_chart_axis24.rb +46 -0
- data/test/regression/test_chart_font01.rb +54 -0
- data/test/regression/test_chart_font02.rb +56 -0
- data/test/regression/test_chart_font03.rb +59 -0
- data/test/regression/test_chart_font04.rb +57 -0
- data/test/regression/test_chart_font05.rb +54 -0
- data/test/regression/test_chart_font06.rb +84 -0
- data/test/regression/test_chart_radar01.rb +39 -0
- data/test/regression/test_chart_radar02.rb +43 -0
- data/test/regression/test_chart_radar03.rb +43 -0
- data/test/regression/test_escapes04.rb +30 -0
- data/test/regression/test_escapes05.rb +31 -0
- data/test/regression/test_rich_string01.rb +1 -1
- data/test/regression/test_rich_string02.rb +1 -1
- data/test/regression/test_rich_string03.rb +1 -1
- data/test/regression/test_rich_string04.rb +1 -1
- data/test/regression/test_rich_string05.rb +1 -1
- data/test/regression/test_rich_string06.rb +1 -1
- data/test/regression/test_rich_string07.rb +1 -1
- data/test/regression/test_rich_string08.rb +1 -1
- data/test/regression/test_rich_string09.rb +1 -1
- data/test/regression/test_rich_string10.rb +1 -1
- data/test/regression/test_rich_string11.rb +1 -1
- data/test/regression/test_shape_connect01.rb +1 -1
- data/test/regression/test_shape_connect02.rb +1 -1
- data/test/regression/test_shape_connect03.rb +1 -1
- data/test/regression/test_shape_connect04.rb +1 -1
- data/test/regression/xlsx_files/chart_axis22.xlsx +0 -0
- data/test/regression/xlsx_files/chart_axis23.xlsx +0 -0
- data/test/regression/xlsx_files/chart_axis24.xlsx +0 -0
- data/test/regression/xlsx_files/chart_font01.xlsx +0 -0
- data/test/regression/xlsx_files/chart_font02.xlsx +0 -0
- data/test/regression/xlsx_files/chart_font03.xlsx +0 -0
- data/test/regression/xlsx_files/chart_font04.xlsx +0 -0
- data/test/regression/xlsx_files/chart_font05.xlsx +0 -0
- data/test/regression/xlsx_files/chart_font06.xlsx +0 -0
- data/test/regression/xlsx_files/chart_radar01.xlsx +0 -0
- data/test/regression/xlsx_files/chart_radar02.xlsx +0 -0
- data/test/regression/xlsx_files/chart_radar03.xlsx +0 -0
- data/test/regression/xlsx_files/escapes04.xlsx +0 -0
- data/test/regression/xlsx_files/escapes05.xlsx +0 -0
- data/test/test_example_match.rb +119 -1
- data/test/test_xml_writer_simple.rb +4 -4
- data/test/worksheet/test_write_autofilter.rb +21 -21
- data/test/worksheet/test_write_brk.rb +1 -1
- data/test/worksheet/test_write_col_breaks.rb +2 -2
- data/test/worksheet/test_write_col_info.rb +6 -6
- data/test/worksheet/test_write_custom_filter.rb +1 -1
- data/test/worksheet/test_write_custom_filters.rb +2 -2
- data/test/worksheet/test_write_dimension.rb +9 -9
- data/test/worksheet/test_write_ext.rb +1 -1
- data/test/worksheet/test_write_ext_lst.rb +1 -1
- data/test/worksheet/test_write_filter.rb +1 -1
- data/test/worksheet/test_write_filter_column.rb +1 -1
- data/test/worksheet/test_write_filters.rb +3 -3
- data/test/worksheet/test_write_hyperlink.rb +4 -4
- data/test/worksheet/test_write_hyperlinks.rb +2 -2
- data/test/worksheet/test_write_legacy_drawing.rb +1 -1
- data/test/worksheet/test_write_merge_cell.rb +1 -1
- data/test/worksheet/test_write_mx_plv.rb +1 -1
- data/test/worksheet/test_write_page_margins.rb +11 -11
- data/test/worksheet/test_write_page_set_up_pr.rb +1 -1
- data/test/worksheet/test_write_page_setup.rb +4 -4
- data/test/worksheet/test_write_pane.rb +14 -14
- data/test/worksheet/test_write_phonetic_pr.rb +1 -1
- data/test/worksheet/test_write_print_options.rb +5 -5
- data/test/worksheet/test_write_row_breaks.rb +2 -2
- data/test/worksheet/test_write_row_element.rb +1 -1
- data/test/worksheet/test_write_selection.rb +1 -1
- data/test/worksheet/test_write_sheet_calc_pr.rb +1 -1
- data/test/worksheet/test_write_sheet_data.rb +1 -1
- data/test/worksheet/test_write_sheet_format_pr.rb +1 -1
- data/test/worksheet/test_write_sheet_pr.rb +3 -3
- data/test/worksheet/test_write_sheet_protection.rb +18 -18
- data/test/worksheet/test_write_sheet_view.rb +6 -6
- data/test/worksheet/test_write_sheet_view1.rb +6 -6
- data/test/worksheet/test_write_sheet_view2.rb +5 -5
- data/test/worksheet/test_write_sheet_view3.rb +8 -8
- data/test/worksheet/test_write_sheet_view4.rb +8 -8
- data/test/worksheet/test_write_sheet_view5.rb +7 -7
- data/test/worksheet/test_write_sheet_view6.rb +4 -4
- data/test/worksheet/test_write_sheet_view7.rb +6 -6
- data/test/worksheet/test_write_sheet_view8.rb +4 -4
- data/test/worksheet/test_write_sheet_view9.rb +4 -4
- data/test/worksheet/test_write_tab_color.rb +1 -1
- data/write_xlsx.gemspec +18 -935
- metadata +881 -32
- data/VERSION +0 -1
- data/test/chart/test_write_num_fmt.rb +0 -16
data/.gitignore
ADDED
@@ -0,0 +1,39 @@
|
|
1
|
+
*.gem
|
2
|
+
.bundle
|
3
|
+
.config
|
4
|
+
.yardoc
|
5
|
+
Gemfile.lock
|
6
|
+
InstalledFiles
|
7
|
+
_yardoc
|
8
|
+
coverage
|
9
|
+
doc/
|
10
|
+
lib/bundler/man
|
11
|
+
pkg
|
12
|
+
rdoc
|
13
|
+
spec/reports
|
14
|
+
test/tmp
|
15
|
+
test/version_tmp
|
16
|
+
tmp
|
17
|
+
work
|
18
|
+
|
19
|
+
# For MacOS:
|
20
|
+
#
|
21
|
+
.DS_Store
|
22
|
+
|
23
|
+
# For TextMate
|
24
|
+
*.tmproj
|
25
|
+
tmtags
|
26
|
+
|
27
|
+
# For emacs:
|
28
|
+
*~
|
29
|
+
\#*
|
30
|
+
.\#*
|
31
|
+
|
32
|
+
# For vim:
|
33
|
+
*.swp
|
34
|
+
|
35
|
+
# For redcar:
|
36
|
+
.redcar
|
37
|
+
|
38
|
+
# For rubinius:
|
39
|
+
*.rbc
|
data/Gemfile
CHANGED
@@ -1,14 +1,4 @@
|
|
1
|
-
source
|
2
|
-
|
3
|
-
#
|
4
|
-
|
5
|
-
gem "rubyzip", ">= 0"
|
6
|
-
# Add dependencies to develop your gem here.
|
7
|
-
# Include everything needed to run rake, tests, features, etc.
|
8
|
-
group :development do
|
9
|
-
gem "jeweler", "~> 1.6.4"
|
10
|
-
gem "bundler"
|
11
|
-
end
|
12
|
-
group :test do
|
13
|
-
gem "rdoc"
|
14
|
-
end
|
1
|
+
source 'https://rubygems.org'
|
2
|
+
|
3
|
+
# Specify your gem's dependencies in write_xlsx.gemspec
|
4
|
+
gemspec
|
data/LICENSE.txt
CHANGED
data/README.rdoc
CHANGED
@@ -60,6 +60,11 @@ the first worksheet in an Excel XML spreadsheet called ruby.xlsx:
|
|
60
60
|
|
61
61
|
== Recent change
|
62
62
|
|
63
|
+
2013-02-07 v0.54.0
|
64
|
+
Added font manipulation to Charts.
|
65
|
+
Added number formats to Chart axes.
|
66
|
+
Added Radar Charts.
|
67
|
+
|
63
68
|
2012-11-30 v0.51.0
|
64
69
|
Impliment Shape, Table as welll as Excel::Write::XLSX-0.51
|
65
70
|
|
data/Rakefile
CHANGED
@@ -1,78 +1,11 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
require "bundler/gem_tasks"
|
3
2
|
require 'rubygems'
|
4
|
-
require 'bundler'
|
5
|
-
begin
|
6
|
-
Bundler.setup(:default, :development)
|
7
|
-
rescue Bundler::BundlerError => e
|
8
|
-
$stderr.puts e.message
|
9
|
-
$stderr.puts "Run `bundle install` to install missing gems"
|
10
|
-
exit e.status_code
|
11
|
-
end
|
12
|
-
require 'rake'
|
13
|
-
|
14
|
-
require 'jeweler'
|
15
|
-
Jeweler::Tasks.new do |gem|
|
16
|
-
# gem is a Gem::Specification... see http://docs.rubygems.org/read/chapter/20 for more options
|
17
|
-
gem.name = "write_xlsx"
|
18
|
-
gem.homepage = "http://github.com/cxn03651/write_xlsx"
|
19
|
-
gem.license = "MIT"
|
20
|
-
gem.summary = %Q{write_xlsx is a gem to create a new file in the Excel 2007+ XLSX format.}
|
21
|
-
gem.description = <<EOS
|
22
|
-
write_xlsx s a gem to create a new file in the Excel 2007+ XLSX format, and you can use the same interface as writeexcel gem.
|
23
|
-
The WriteXLSX supports the following features:
|
24
|
-
* Multiple worksheets
|
25
|
-
* Strings and numbers
|
26
|
-
* Unicode text
|
27
|
-
* Rich string formats
|
28
|
-
* Formulas (including array formats)
|
29
|
-
* cell formatting
|
30
|
-
* Embedded images
|
31
|
-
* Charts
|
32
|
-
* Autofilters
|
33
|
-
* Data validation
|
34
|
-
* Hyperlinks
|
35
|
-
* Defined names
|
36
|
-
* Grouping/Outlines
|
37
|
-
* Cell comments
|
38
|
-
* Panes
|
39
|
-
* Page set-up and printing options
|
40
|
-
|
41
|
-
write_xlsx uses the same interface as writeexcel gem.
|
42
3
|
|
43
|
-
|
44
|
-
|
45
|
-
And you can find many examples in this gem.
|
46
|
-
EOS
|
47
|
-
gem.email = "cxn03651@msj.biglobe.ne.jp"
|
48
|
-
gem.authors = ["Hideo NAKAMURA"]
|
49
|
-
# dependencies defined in Gemfile
|
50
|
-
end
|
51
|
-
Jeweler::RubygemsDotOrgTasks.new
|
4
|
+
task :default => :test
|
52
5
|
|
53
6
|
require 'rake/testtask'
|
54
|
-
Rake::TestTask.new
|
55
|
-
test.libs << '
|
7
|
+
Rake::TestTask.new do |test|
|
8
|
+
test.libs << 'test'
|
56
9
|
test.pattern = 'test/**/test_*.rb'
|
57
10
|
test.verbose = true
|
58
11
|
end
|
59
|
-
|
60
|
-
# require 'rcov/rcovtask'
|
61
|
-
# Rcov::RcovTask.new do |test|
|
62
|
-
# test.libs << 'test'
|
63
|
-
# test.pattern = 'test/**/test_*.rb'
|
64
|
-
# test.verbose = true
|
65
|
-
# test.rcov_opts << '--exclude "gems/*"'
|
66
|
-
# end
|
67
|
-
|
68
|
-
task :default => :test
|
69
|
-
|
70
|
-
require 'rdoc/task'
|
71
|
-
Rake::RDocTask.new do |rdoc|
|
72
|
-
version = File.exist?('VERSION') ? File.read('VERSION') : ""
|
73
|
-
|
74
|
-
rdoc.rdoc_dir = 'rdoc'
|
75
|
-
rdoc.title = "write_xlsx #{version}"
|
76
|
-
rdoc.rdoc_files.include('README*')
|
77
|
-
rdoc.rdoc_files.include('lib/**/*.rb')
|
78
|
-
end
|
@@ -0,0 +1,127 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# -*- coding: utf-8 -*-
|
3
|
+
|
4
|
+
#######################################################################
|
5
|
+
#
|
6
|
+
# A demo of an Area chart in Excel::Writer::XLSX.
|
7
|
+
#
|
8
|
+
# reverse ('(c)'), October 2012, John McNamara, jmcnamara@cpan.org
|
9
|
+
# convert to ruby by Hideo NAKAMURA, cxn03651@msj.biglobe.ne.jp
|
10
|
+
#
|
11
|
+
|
12
|
+
require 'rubygems'
|
13
|
+
require 'write_xlsx'
|
14
|
+
|
15
|
+
workbook = WriteXLSX.new('chart_radar.xlsx')
|
16
|
+
worksheet = workbook.add_worksheet
|
17
|
+
bold = workbook.add_format(:bold => 1)
|
18
|
+
|
19
|
+
# Add the worksheet data that the charts will refer to.
|
20
|
+
headings = [ 'Number', 'Batch 1', 'Batch 2' ]
|
21
|
+
data = [
|
22
|
+
[ 2, 3, 4, 5, 6, 7 ],
|
23
|
+
[ 30, 60, 70, 50, 40, 30 ],
|
24
|
+
[ 25, 40, 50, 30, 50, 40 ]
|
25
|
+
]
|
26
|
+
|
27
|
+
worksheet.write('A1', headings, bold)
|
28
|
+
worksheet.write('A2', data)
|
29
|
+
|
30
|
+
# Create a new chart object. In this case an embedded chart.
|
31
|
+
chart1 = workbook.add_chart(:type => 'radar', :embedded => 1)
|
32
|
+
|
33
|
+
# Configure the first series.
|
34
|
+
chart1.add_series(
|
35
|
+
:name => '=Sheet1!$B$1',
|
36
|
+
:categories => '=Sheet1!$A$2:$A$7',
|
37
|
+
:values => '=Sheet1!$B$2:$B$7'
|
38
|
+
)
|
39
|
+
|
40
|
+
# Configure second series. Note alternative use of array ref to define
|
41
|
+
# ranges: [ sheetname, row_start, row_end, col_start, col_end ].
|
42
|
+
chart1.add_series(
|
43
|
+
:name => '=Sheet1!$C$1',
|
44
|
+
:categories => [ 'Sheet1', 1, 6, 0, 0 ],
|
45
|
+
:values => [ 'Sheet1', 1, 6, 2, 2 ]
|
46
|
+
)
|
47
|
+
|
48
|
+
# Add a chart title and some axis labels.
|
49
|
+
chart1.set_title(:name => 'Results of sample analysis')
|
50
|
+
chart1.set_x_axis(:name => 'Test number')
|
51
|
+
chart1.set_y_axis(:name => 'Sample length (mm)')
|
52
|
+
|
53
|
+
# Set an Excel chart style. Blue colors with white outline and shadow.
|
54
|
+
chart1.set_style(11)
|
55
|
+
|
56
|
+
# Insert the chart into the worksheet (with an offset).
|
57
|
+
worksheet.insert_chart('D2', chart1, 25, 10)
|
58
|
+
|
59
|
+
#
|
60
|
+
# Create a with_markers chart sub-type
|
61
|
+
#
|
62
|
+
chart2 = workbook.add_chart(
|
63
|
+
:type => 'radar',
|
64
|
+
:embedded => 1,
|
65
|
+
:subtype => 'with_markers'
|
66
|
+
)
|
67
|
+
|
68
|
+
# Configure the first series.
|
69
|
+
chart2.add_series(
|
70
|
+
:name => '=Sheet1!$B$1',
|
71
|
+
:categories => '=Sheet1!$A$2:$A$7',
|
72
|
+
:values => '=Sheet1!$B$2:$B$7'
|
73
|
+
)
|
74
|
+
|
75
|
+
# Configure second series.
|
76
|
+
chart2.add_series(
|
77
|
+
:name => '=Sheet1!$C$1',
|
78
|
+
:categories => [ 'Sheet1', 1, 6, 0, 0 ],
|
79
|
+
:values => [ 'Sheet1', 1, 6, 2, 2 ]
|
80
|
+
)
|
81
|
+
|
82
|
+
# Add a chart title and some axis labels.
|
83
|
+
chart2.set_title(:name => 'Stacked Chart')
|
84
|
+
chart2.set_x_axis(:name => 'Test number')
|
85
|
+
chart2.set_y_axis(:name => 'Sample length (mm)')
|
86
|
+
|
87
|
+
# Set an Excel chart style. Blue colors with white outline and shadow.
|
88
|
+
chart2.set_style(12)
|
89
|
+
|
90
|
+
# Insert the chart into the worksheet (with an offset).
|
91
|
+
worksheet.insert_chart('D18', chart2, 25, 11)
|
92
|
+
|
93
|
+
#
|
94
|
+
# Create a filled chart sub-type
|
95
|
+
#
|
96
|
+
chart3 = workbook.add_chart(
|
97
|
+
:type => 'radar',
|
98
|
+
:embedded => 1,
|
99
|
+
:subtype => 'filled'
|
100
|
+
)
|
101
|
+
|
102
|
+
# Configure the first series.
|
103
|
+
chart3.add_series(
|
104
|
+
:name => '=Sheet1!$B$1',
|
105
|
+
:categories => '=Sheet1!$A$2:$A$7',
|
106
|
+
:values => '=Sheet1!$B$2:$B$7'
|
107
|
+
)
|
108
|
+
|
109
|
+
# Configure second series.
|
110
|
+
chart3.add_series(
|
111
|
+
:name => '=Sheet1!$C$1',
|
112
|
+
:categories => [ 'Sheet1', 1, 6, 0, 0 ],
|
113
|
+
:values => [ 'Sheet1', 1, 6, 2, 2 ]
|
114
|
+
)
|
115
|
+
|
116
|
+
# Add a chart title and some axis labels.
|
117
|
+
chart3.set_title(:name => 'Percent Stacked Chart')
|
118
|
+
chart3.set_x_axis(:name => 'Test number')
|
119
|
+
chart3.set_y_axis(:name => 'Sample length (mm)')
|
120
|
+
|
121
|
+
# Set an Excel chart style. Blue colors with white outline and shadow.
|
122
|
+
chart3.set_style(13)
|
123
|
+
|
124
|
+
# Insert the chart into the worksheet (with an offset).
|
125
|
+
worksheet.insert_chart('D34', chart3, 25, 11)
|
126
|
+
|
127
|
+
workbook.close
|
@@ -46,7 +46,7 @@ chart.set_legend(:position => 'right')
|
|
46
46
|
# Add a chart title and some axis labels.
|
47
47
|
chart.set_title(:name => 'Survey results')
|
48
48
|
chart.set_x_axis(:name => 'Days')
|
49
|
-
chart.set_y_axis(:name => 'Population', :major_gridlines => {:
|
49
|
+
chart.set_y_axis(:name => 'Population', :major_gridlines => {:visible => 0})
|
50
50
|
chart.set_y2_axis(:name => 'Laser wounds')
|
51
51
|
|
52
52
|
# Insert the chart into the worksheet (with an offset).
|
@@ -25,6 +25,13 @@ module Writexlsx
|
|
25
25
|
@subtype = subtype || 'standard'
|
26
26
|
@cross_between = 'midCat'
|
27
27
|
@show_crosses = false
|
28
|
+
|
29
|
+
# Override and reset the default axis values.
|
30
|
+
if @subtype == 'percent_stacked'
|
31
|
+
@y_axis[:_defaults][:num_format] = '0%'
|
32
|
+
end
|
33
|
+
|
34
|
+
set_y_axis
|
28
35
|
end
|
29
36
|
|
30
37
|
#
|
@@ -60,24 +67,6 @@ module Writexlsx
|
|
60
67
|
write_axis_ids(params)
|
61
68
|
end
|
62
69
|
end
|
63
|
-
|
64
|
-
#
|
65
|
-
# Over-ridden to add % format. TODO. This will be refactored back up to the
|
66
|
-
# SUPER class later.
|
67
|
-
#
|
68
|
-
# Write the <C:numFmt> element.
|
69
|
-
#
|
70
|
-
def write_number_format(format_code = nil)
|
71
|
-
source_linked = 1
|
72
|
-
format_code = 'General' if !format_code || format_code.empty?
|
73
|
-
format_code = '0%' if @subtype == 'percent_stacked'
|
74
|
-
|
75
|
-
attributes = [
|
76
|
-
'formatCode', format_code,
|
77
|
-
'sourceLinked', source_linked
|
78
|
-
]
|
79
|
-
@writer.empty_tag('c:numFmt', attributes)
|
80
|
-
end
|
81
70
|
end
|
82
71
|
end
|
83
72
|
end
|
data/lib/write_xlsx/chart/bar.rb
CHANGED
@@ -27,6 +27,25 @@ module Writexlsx
|
|
27
27
|
@horiz_val_axis = 0
|
28
28
|
@horiz_cat_axis = 1
|
29
29
|
@show_crosses = false
|
30
|
+
|
31
|
+
# Override and reset the default axis values.
|
32
|
+
if @x_axis[:_defaults]
|
33
|
+
@x_axis[:_defaults][:major_gridlines] = { :visible => 1 }
|
34
|
+
else
|
35
|
+
@x_axis[:_defaults] = { :major_gridlines => { :visible => 1 } }
|
36
|
+
end
|
37
|
+
if @y_axis[:_defaults]
|
38
|
+
@y_axis[:_defaults][:major_gridlines] = { :visible => 0 }
|
39
|
+
else
|
40
|
+
@y_axis[:_defaults] = { :major_gridlines => { :visible => 0 } }
|
41
|
+
end
|
42
|
+
|
43
|
+
if @subtype == 'percent_stacked'
|
44
|
+
@x_axis[:_defaults][:num_format] = '0%'
|
45
|
+
end
|
46
|
+
|
47
|
+
set_x_axis
|
48
|
+
set_y_axis
|
30
49
|
end
|
31
50
|
|
32
51
|
#
|
@@ -34,11 +53,8 @@ module Writexlsx
|
|
34
53
|
#
|
35
54
|
def write_chart_type(params)
|
36
55
|
if params[:primary_axes] != 0
|
37
|
-
|
56
|
+
# Reverse X and Y axes for Bar charts.
|
38
57
|
@y_axis, @x_axis = @x_axis, @y_axis
|
39
|
-
if !@y_axis[:_major_gridlines]
|
40
|
-
@y_axis[:_major_gridlines] = {:show => 1}
|
41
|
-
end
|
42
58
|
if @y2_axis[:_position] == 'r'
|
43
59
|
@y2_axis[:_position] = 't'
|
44
60
|
end
|
@@ -58,25 +74,6 @@ module Writexlsx
|
|
58
74
|
|
59
75
|
@writer.empty_tag('c:barDir', attributes)
|
60
76
|
end
|
61
|
-
|
62
|
-
#
|
63
|
-
# Over-ridden to add % format. TODO. This will be refactored back up to the
|
64
|
-
# SUPER class later.
|
65
|
-
#
|
66
|
-
# Write the <c:numFmt> element.
|
67
|
-
#
|
68
|
-
def write_number_format(format_code = 'General')
|
69
|
-
source_linked = 1
|
70
|
-
|
71
|
-
format_code = '0%' if @subtype == 'percent_stacked'
|
72
|
-
|
73
|
-
attributes = [
|
74
|
-
'formatCode', format_code,
|
75
|
-
'sourceLinked', source_linked
|
76
|
-
]
|
77
|
-
|
78
|
-
@writer.empty_tag('c:numFmt', attributes)
|
79
|
-
end
|
80
77
|
end
|
81
78
|
end
|
82
79
|
end
|
@@ -32,6 +32,13 @@ module Writexlsx
|
|
32
32
|
super(subtype)
|
33
33
|
@subtype = subtype || 'clustered'
|
34
34
|
@horiz_val_axis = 0
|
35
|
+
|
36
|
+
# Override and reset the default axis values.
|
37
|
+
if @subtype == 'percent_stacked'
|
38
|
+
@y_axis[:_defaults][:num_format] = '0%'
|
39
|
+
end
|
40
|
+
|
41
|
+
set_y_axis
|
35
42
|
end
|
36
43
|
|
37
44
|
#
|
@@ -52,26 +59,6 @@ module Writexlsx
|
|
52
59
|
|
53
60
|
@writer.empty_tag('c:barDir', attributes)
|
54
61
|
end
|
55
|
-
|
56
|
-
#
|
57
|
-
# Over-ridden to add % format. TODO. This will be refactored back up to the
|
58
|
-
# SUPER class later.
|
59
|
-
#
|
60
|
-
# Write the <c:numFmt> element.
|
61
|
-
#
|
62
|
-
def write_number_format(format_code = nil)
|
63
|
-
format_code ||= 'General'
|
64
|
-
source_linked = 1
|
65
|
-
|
66
|
-
format_code = '0%' if @subtype == 'percent_stacked'
|
67
|
-
|
68
|
-
attributes = [
|
69
|
-
'formatCode', format_code,
|
70
|
-
'sourceLinked', source_linked
|
71
|
-
]
|
72
|
-
|
73
|
-
@writer.empty_tag('c:numFmt', attributes)
|
74
|
-
end
|
75
62
|
end
|
76
63
|
end
|
77
64
|
end
|
@@ -0,0 +1,94 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
###############################################################################
|
3
|
+
#
|
4
|
+
# Radar - A class for writing Excel Radar charts.
|
5
|
+
#
|
6
|
+
# Used in conjunction with Chart.
|
7
|
+
#
|
8
|
+
# See formatting note in Chart.
|
9
|
+
#
|
10
|
+
# Copyright 2000-2012, John McNamara, jmcnamara@cpan.org
|
11
|
+
# Convert to ruby by Hideo NAKAMURA, cxn03651@msj.biglobe.ne.jp
|
12
|
+
#
|
13
|
+
|
14
|
+
require 'write_xlsx/package/xml_writer_simple'
|
15
|
+
require 'write_xlsx/utility'
|
16
|
+
|
17
|
+
module Writexlsx
|
18
|
+
class Chart
|
19
|
+
# The Column chart module also supports the following sub-types:
|
20
|
+
#
|
21
|
+
# stacked
|
22
|
+
# percent_stacked
|
23
|
+
# These can be specified at creation time via the add_chart() Worksheet
|
24
|
+
# method:
|
25
|
+
#
|
26
|
+
# chart = workbook.add_chart( :type => 'column', :subtype => 'stacked' )
|
27
|
+
#
|
28
|
+
class Radar < self
|
29
|
+
include Writexlsx::Utility
|
30
|
+
|
31
|
+
def initialize(subtype)
|
32
|
+
super(subtype)
|
33
|
+
@subtype = subtype || 'marker'
|
34
|
+
if @subtype == 'marker'
|
35
|
+
@default_marker = { :type => 'none' }
|
36
|
+
end
|
37
|
+
|
38
|
+
# Override and reset the default axis values.
|
39
|
+
@x_axis[:_defaults][:major_gridlines] = { :visible => 1 }
|
40
|
+
set_x_axis
|
41
|
+
|
42
|
+
# Hardcode major_tick_mark for now untill there is an accessor.
|
43
|
+
@y_axis[:_major_tick_mark] = 'cross'
|
44
|
+
end
|
45
|
+
|
46
|
+
#
|
47
|
+
# Override the virtual superclass method with a chart specific method.
|
48
|
+
#
|
49
|
+
def write_chart_type(params)
|
50
|
+
# Write the c:radarChart element.
|
51
|
+
write_radar_chart(params)
|
52
|
+
end
|
53
|
+
|
54
|
+
#
|
55
|
+
# Write the <c:radarChart> element.
|
56
|
+
#
|
57
|
+
def write_radar_chart(params)
|
58
|
+
if ptrue?(params[:primary_axes])
|
59
|
+
series = get_primary_axes_series
|
60
|
+
else
|
61
|
+
series = get_secondary_axes_series
|
62
|
+
end
|
63
|
+
|
64
|
+
return if series.empty?
|
65
|
+
|
66
|
+
@writer.tag_elements('c:radarChart') do
|
67
|
+
# Write the c:radarStyle element.
|
68
|
+
write_radar_style
|
69
|
+
|
70
|
+
# Write the series elements.
|
71
|
+
series.each { |s| write_series(s) }
|
72
|
+
|
73
|
+
# Write the c:axId elements
|
74
|
+
write_axis_ids(params)
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
#
|
79
|
+
# Write the <c:radarStyle> element.
|
80
|
+
#
|
81
|
+
def write_radar_style
|
82
|
+
val = 'marker'
|
83
|
+
|
84
|
+
if @subtype == 'filled'
|
85
|
+
val = 'filled'
|
86
|
+
end
|
87
|
+
|
88
|
+
attributes = ['val', val]
|
89
|
+
|
90
|
+
@writer.empty_tag('c:radarStyle', attributes)
|
91
|
+
end
|
92
|
+
end
|
93
|
+
end
|
94
|
+
end
|
@@ -27,6 +27,12 @@ module Writexlsx
|
|
27
27
|
def initialize(subtype)
|
28
28
|
super(subtype)
|
29
29
|
@show_crosses = false
|
30
|
+
|
31
|
+
# Override and reset the default axis values.
|
32
|
+
@x_axis[:_defaults][:num_format] = 'dd/mm/yyyy'
|
33
|
+
@x2_axis[:_defaults][:num_format] = 'dd/mm/yyyy'
|
34
|
+
set_x_axis
|
35
|
+
set_x2_axis
|
30
36
|
end
|
31
37
|
|
32
38
|
#
|