write_xlsx 0.89.0 → 1.01.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/Changes +98 -0
- data/LICENSE.txt +1 -1
- data/README.md +2 -2
- data/examples/a_simple.rb +2 -7
- data/examples/add_vba_project.rb +1 -1
- data/examples/array_formula.rb +1 -1
- data/examples/chart_area.rb +5 -2
- data/examples/chart_bar.rb +5 -2
- data/examples/chart_clustered.rb +1 -1
- data/examples/chart_column.rb +5 -2
- data/examples/chart_combined.rb +1 -1
- data/examples/chart_data_table.rb +9 -3
- data/examples/chart_data_tools.rb +25 -7
- data/examples/chart_doughnut.rb +17 -5
- data/examples/chart_gauge.rb +73 -0
- data/examples/chart_line.rb +5 -2
- data/examples/chart_pareto.rb +1 -1
- data/examples/chart_pie.rb +9 -3
- data/examples/chart_radar.rb +13 -4
- data/examples/chart_scatter.rb +5 -2
- data/examples/chart_secondary_axis.rb +5 -2
- data/examples/chart_stock.rb +1 -1
- data/examples/chart_styles.rb +1 -1
- data/examples/colors.rb +1 -1
- data/examples/conditional_format.rb +73 -46
- data/examples/data_validate.rb +1 -1
- data/examples/date_time.rb +1 -1
- data/examples/demo.rb +5 -8
- data/examples/formats.rb +1 -1
- data/examples/headers.rb +1 -1
- data/examples/hide_row_col.rb +1 -1
- data/examples/hide_sheet.rb +1 -1
- data/examples/hyperlink1.rb +5 -12
- data/examples/indent.rb +1 -1
- data/examples/macros.rb +1 -1
- data/examples/merge1.rb +1 -1
- data/examples/merge2.rb +1 -1
- data/examples/merge3.rb +1 -1
- data/examples/merge4.rb +1 -1
- data/examples/merge5.rb +1 -1
- data/examples/merge6.rb +1 -1
- data/examples/outline.rb +1 -1
- data/examples/outline_collapsed.rb +1 -1
- data/examples/panes.rb +1 -1
- data/examples/properties.rb +1 -1
- data/examples/regions.rb +1 -1
- data/examples/rich_strings.rb +1 -1
- data/examples/right_to_left.rb +1 -1
- data/examples/shape1.rb +1 -1
- data/examples/shape2.rb +1 -1
- data/examples/shape3.rb +1 -1
- data/examples/shape4.rb +1 -1
- data/examples/shape5.rb +1 -1
- data/examples/shape6.rb +1 -1
- data/examples/shape7.rb +1 -1
- data/examples/shape8.rb +1 -1
- data/examples/shape_all.rb +1 -1
- data/examples/sparklines1.rb +1 -1
- data/examples/sparklines2.rb +1 -1
- data/examples/stats.rb +1 -1
- data/examples/stats_ext.rb +1 -1
- data/examples/stocks.rb +1 -1
- data/examples/tab_colors.rb +1 -1
- data/examples/tables.rb +1 -1
- data/lib/write_xlsx/chart.rb +124 -240
- data/lib/write_xlsx/chart/area.rb +1 -1
- data/lib/write_xlsx/chart/axis.rb +4 -4
- data/lib/write_xlsx/chart/bar.rb +1 -1
- data/lib/write_xlsx/chart/caption.rb +3 -1
- data/lib/write_xlsx/chart/column.rb +1 -1
- data/lib/write_xlsx/chart/doughnut.rb +1 -1
- data/lib/write_xlsx/chart/legend.rb +14 -0
- data/lib/write_xlsx/chart/line.rb +1 -1
- data/lib/write_xlsx/chart/pie.rb +32 -15
- data/lib/write_xlsx/chart/radar.rb +1 -1
- data/lib/write_xlsx/chart/scatter.rb +1 -1
- data/lib/write_xlsx/chart/series.rb +11 -7
- data/lib/write_xlsx/chart/stock.rb +1 -1
- data/lib/write_xlsx/chartsheet.rb +35 -7
- data/lib/write_xlsx/drawing.rb +28 -8
- data/lib/write_xlsx/format.rb +19 -15
- data/lib/write_xlsx/package/comments.rb +57 -54
- data/lib/write_xlsx/package/conditional_format.rb +360 -39
- data/lib/write_xlsx/package/content_types.rb +10 -0
- data/lib/write_xlsx/package/core.rb +8 -6
- data/lib/write_xlsx/package/custom.rb +125 -0
- data/lib/write_xlsx/package/packager.rb +26 -0
- data/lib/write_xlsx/package/styles.rb +53 -21
- data/lib/write_xlsx/package/table.rb +16 -4
- data/lib/write_xlsx/shape.rb +4 -3
- data/lib/write_xlsx/sheets.rb +11 -1
- data/lib/write_xlsx/sparkline.rb +1 -1
- data/lib/write_xlsx/utility.rb +305 -35
- data/lib/write_xlsx/version.rb +1 -1
- data/lib/write_xlsx/workbook.rb +132 -12
- data/lib/write_xlsx/worksheet.rb +397 -163
- data/lib/write_xlsx/worksheet/data_validation.rb +10 -14
- data/lib/write_xlsx/worksheet/hyperlink.rb +4 -13
- data/test/chart/test_write_legend_pos.rb +9 -1
- data/test/chartsheet/test_write_sheet_protection.rb +91 -0
- data/test/drawing/test_drawing_chart_01.rb +6 -2
- data/test/drawing/test_drawing_image_01.rb +12 -3
- data/test/drawing/test_drawing_shape_01.rb +8 -5
- data/test/drawing/test_drawing_shape_02.rb +12 -5
- data/test/drawing/test_drawing_shape_03.rb +8 -5
- data/test/drawing/test_drawing_shape_04.rb +8 -24
- data/test/drawing/test_drawing_shape_05.rb +8 -5
- data/test/drawing/test_drawing_shape_06.rb +11 -6
- data/test/drawing/test_drawing_shape_07.rb +11 -6
- 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 +1 -1
- data/test/drawing/test_write_c_nv_pr.rb +1 -1
- data/test/drawing/test_write_col.rb +1 -1
- data/test/drawing/test_write_col_off.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_row.rb +1 -1
- data/test/drawing/test_write_row_off.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 +6 -1
- data/test/package/comments/test_comments_01.rb +54 -0
- data/test/package/comments/test_comments_02.rb +54 -0
- data/test/perl_output/chart_gauge.xlsx +0 -0
- data/test/perl_output/formats.xlsx +0 -0
- data/test/regression/_test_hyperlink31.rb +26 -0
- data/test/regression/images/happy.jpg +0 -0
- data/test/regression/images/zero_dpi.jpg +0 -0
- data/test/regression/test_array_formula03.rb +36 -0
- data/test/regression/test_autofilter08.rb +110 -0
- data/test/regression/test_autofilter09.rb +110 -0
- data/test/regression/test_autofilter10.rb +110 -0
- data/test/regression/test_chart_axis26.rb +10 -8
- data/test/regression/test_chart_axis27.rb +1 -1
- data/test/regression/test_chart_axis28.rb +1 -1
- data/test/regression/test_chart_axis29.rb +1 -1
- data/test/regression/test_chart_axis33.rb +1 -1
- data/test/regression/test_chart_axis42.rb +44 -0
- data/test/regression/test_chart_axis43.rb +44 -0
- data/test/regression/test_chart_axis44.rb +54 -0
- data/test/regression/test_chart_axis45.rb +54 -0
- data/test/regression/test_chart_axis46.rb +54 -0
- data/test/regression/test_chart_bar08.rb +3 -0
- data/test/regression/test_chart_bar11.rb +3 -0
- data/test/regression/test_chart_bar14.rb +3 -0
- data/test/regression/test_chart_chartarea05.rb +16 -17
- data/test/regression/test_chart_chartarea06.rb +49 -0
- data/test/regression/test_chart_combined10.rb +43 -0
- data/test/regression/test_chart_combined11.rb +63 -0
- data/test/regression/test_chart_data_labels25.rb +61 -0
- data/test/regression/test_chart_doughnut07.rb +37 -0
- data/test/regression/test_chart_font09.rb +1 -1
- data/test/regression/test_chart_format26.rb +48 -0
- data/test/regression/test_chart_format27.rb +58 -0
- data/test/regression/test_chart_format28.rb +52 -0
- data/test/regression/test_chart_format29.rb +59 -0
- data/test/regression/test_chart_format30.rb +53 -0
- data/test/regression/test_chart_format31.rb +60 -0
- data/test/regression/test_chart_legend03.rb +41 -0
- data/test/regression/test_chart_legend04.rb +41 -0
- data/test/regression/test_chart_legend05.rb +41 -0
- data/test/regression/test_chart_legend06.rb +41 -0
- data/test/regression/test_chart_legend07.rb +38 -0
- data/test/regression/test_chart_size03.rb +4 -1
- data/test/regression/test_chart_table03.rb +56 -0
- data/test/regression/test_comment13.rb +36 -0
- data/test/regression/test_comment14.rb +29 -0
- data/test/regression/test_cond_format14.rb +42 -0
- data/test/regression/test_cond_format15.rb +53 -0
- data/test/regression/test_cond_format16.rb +53 -0
- data/test/regression/test_cond_format17.rb +37 -0
- data/test/regression/test_cond_format18.rb +136 -0
- data/test/regression/test_cond_format19.rb +64 -0
- data/test/regression/test_cond_format20.rb +43 -0
- data/test/regression/test_date_1904_01.rb +1 -1
- data/test/regression/test_escapes04.rb +3 -0
- data/test/regression/test_escapes05.rb +3 -0
- data/test/regression/test_escapes07.rb +3 -0
- data/test/regression/test_escapes08.rb +3 -0
- data/test/regression/test_format15.rb +26 -0
- data/test/regression/test_hyperlink01.rb +3 -0
- data/test/regression/test_hyperlink02.rb +3 -0
- data/test/regression/test_hyperlink03.rb +4 -0
- data/test/regression/test_hyperlink04.rb +3 -0
- data/test/regression/test_hyperlink05.rb +3 -0
- data/test/regression/test_hyperlink06.rb +3 -0
- data/test/regression/test_hyperlink07.rb +3 -0
- data/test/regression/test_hyperlink08.rb +3 -0
- data/test/regression/test_hyperlink09.rb +3 -0
- data/test/regression/test_hyperlink10.rb +3 -0
- data/test/regression/test_hyperlink11.rb +3 -0
- data/test/regression/test_hyperlink12.rb +3 -0
- data/test/regression/test_hyperlink13.rb +3 -0
- data/test/regression/test_hyperlink14.rb +3 -0
- data/test/regression/test_hyperlink15.rb +3 -0
- data/test/regression/test_hyperlink16.rb +3 -0
- data/test/regression/test_hyperlink17.rb +3 -0
- data/test/regression/test_hyperlink18.rb +3 -0
- data/test/regression/test_hyperlink20.rb +3 -0
- data/test/regression/test_hyperlink21.rb +3 -0
- data/test/regression/test_hyperlink22.rb +3 -0
- data/test/regression/test_hyperlink23.rb +3 -0
- data/test/regression/test_hyperlink24.rb +3 -0
- data/test/regression/test_hyperlink25.rb +3 -0
- data/test/regression/test_hyperlink26.rb +3 -0
- data/test/regression/test_hyperlink27.rb +27 -0
- data/test/regression/test_hyperlink28.rb +50 -0
- data/test/regression/test_hyperlink29.rb +27 -0
- data/test/regression/test_hyperlink30.rb +36 -0
- data/test/regression/test_image08.rb +5 -4
- data/test/regression/test_image15.rb +4 -2
- data/test/regression/test_image28.rb +1 -1
- data/test/regression/test_image35.rb +26 -0
- data/test/regression/test_image36.rb +26 -0
- data/test/regression/test_image44.rb +28 -0
- data/test/regression/test_image45.rb +28 -0
- data/test/regression/test_image46.rb +29 -0
- data/test/regression/test_image47.rb +28 -0
- data/test/regression/test_object_position01.rb +26 -0
- data/test/regression/test_object_position02.rb +26 -0
- data/test/regression/test_object_position03.rb +26 -0
- data/test/regression/test_object_position04.rb +44 -0
- data/test/regression/test_object_position06.rb +28 -0
- data/test/regression/test_object_position07.rb +28 -0
- data/test/regression/test_object_position08.rb +47 -0
- data/test/regression/test_object_position09.rb +50 -0
- data/test/regression/test_object_position10.rb +28 -0
- data/test/regression/test_properties01.rb +1 -4
- data/test/regression/test_properties02.rb +1 -4
- data/test/regression/test_properties03.rb +26 -0
- data/test/regression/test_properties04.rb +61 -0
- data/test/regression/test_properties05.rb +30 -0
- data/test/regression/test_shape_connect01.rb +4 -2
- data/test/regression/test_table03.rb +3 -0
- data/test/regression/test_table04.rb +3 -0
- data/test/regression/test_table05.rb +3 -0
- data/test/regression/test_table06.rb +3 -0
- data/test/regression/test_table20.rb +34 -0
- data/test/regression/test_table21.rb +36 -0
- data/test/regression/test_table22.rb +32 -0
- data/test/regression/test_table23.rb +56 -0
- data/test/regression/test_utf8_11.rb +23 -0
- data/test/regression/xlsx_files/array_formula03.xlsx +0 -0
- data/test/regression/xlsx_files/autofilter08.xlsx +0 -0
- data/test/regression/xlsx_files/autofilter09.xlsx +0 -0
- data/test/regression/xlsx_files/autofilter10.xlsx +0 -0
- data/test/regression/xlsx_files/chart_axis26.xlsx +0 -0
- data/test/regression/xlsx_files/chart_axis27.xlsx +0 -0
- data/test/regression/xlsx_files/chart_axis28.xlsx +0 -0
- data/test/regression/xlsx_files/chart_axis29.xlsx +0 -0
- data/test/regression/xlsx_files/chart_axis33.xlsx +0 -0
- data/test/regression/xlsx_files/chart_axis42.xlsx +0 -0
- data/test/regression/xlsx_files/chart_axis43.xlsx +0 -0
- data/test/regression/xlsx_files/chart_axis44.xlsx +0 -0
- data/test/regression/xlsx_files/chart_axis45.xlsx +0 -0
- data/test/regression/xlsx_files/chart_axis46.xlsx +0 -0
- data/test/regression/xlsx_files/chart_chartarea05.xlsx +0 -0
- data/test/regression/xlsx_files/chart_chartarea06.xlsx +0 -0
- data/test/regression/xlsx_files/chart_combined10.xlsx +0 -0
- data/test/regression/xlsx_files/chart_combined11.xlsx +0 -0
- data/test/regression/xlsx_files/chart_data_labels25.xlsx +0 -0
- data/test/regression/xlsx_files/chart_doughnut07.xlsx +0 -0
- data/test/regression/xlsx_files/chart_font09.xlsx +0 -0
- data/test/regression/xlsx_files/chart_format26.xlsx +0 -0
- data/test/regression/xlsx_files/chart_format27.xlsx +0 -0
- data/test/regression/xlsx_files/chart_format28.xlsx +0 -0
- data/test/regression/xlsx_files/chart_format29.xlsx +0 -0
- data/test/regression/xlsx_files/chart_format30.xlsx +0 -0
- data/test/regression/xlsx_files/chart_format31.xlsx +0 -0
- data/test/regression/xlsx_files/chart_legend03.xlsx +0 -0
- data/test/regression/xlsx_files/chart_legend04.xlsx +0 -0
- data/test/regression/xlsx_files/chart_legend05.xlsx +0 -0
- data/test/regression/xlsx_files/chart_legend06.xlsx +0 -0
- data/test/regression/xlsx_files/chart_legend07.xlsx +0 -0
- data/test/regression/xlsx_files/chart_table03.xlsx +0 -0
- data/test/regression/xlsx_files/comment13.xlsx +0 -0
- data/test/regression/xlsx_files/comment14.xlsx +0 -0
- data/test/regression/xlsx_files/cond_format14.xlsx +0 -0
- data/test/regression/xlsx_files/cond_format15.xlsx +0 -0
- data/test/regression/xlsx_files/cond_format16.xlsx +0 -0
- data/test/regression/xlsx_files/cond_format17.xlsx +0 -0
- data/test/regression/xlsx_files/cond_format18.xlsx +0 -0
- data/test/regression/xlsx_files/cond_format19.xlsx +0 -0
- data/test/regression/xlsx_files/cond_format20.xlsx +0 -0
- data/test/regression/xlsx_files/date_1904_01.xlsx +0 -0
- data/test/regression/xlsx_files/format15.xlsx +0 -0
- data/test/regression/xlsx_files/hyperlink27.xlsx +0 -0
- data/test/regression/xlsx_files/hyperlink28.xlsx +0 -0
- data/test/regression/xlsx_files/hyperlink29.xlsx +0 -0
- data/test/regression/xlsx_files/hyperlink30.xlsx +0 -0
- data/test/regression/xlsx_files/hyperlink31.xlsx +0 -0
- data/test/regression/xlsx_files/image35.xlsx +0 -0
- data/test/regression/xlsx_files/image36.xlsx +0 -0
- data/test/regression/xlsx_files/image44.xlsx +0 -0
- data/test/regression/xlsx_files/image45.xlsx +0 -0
- data/test/regression/xlsx_files/image46.xlsx +0 -0
- data/test/regression/xlsx_files/image47.xlsx +0 -0
- data/test/regression/xlsx_files/object_position01.xlsx +0 -0
- data/test/regression/xlsx_files/object_position02.xlsx +0 -0
- data/test/regression/xlsx_files/object_position03.xlsx +0 -0
- data/test/regression/xlsx_files/object_position04.xlsx +0 -0
- data/test/regression/xlsx_files/object_position06.xlsx +0 -0
- data/test/regression/xlsx_files/object_position07.xlsx +0 -0
- data/test/regression/xlsx_files/object_position08.xlsx +0 -0
- data/test/regression/xlsx_files/object_position09.xlsx +0 -0
- data/test/regression/xlsx_files/object_position10.xlsx +0 -0
- data/test/regression/xlsx_files/properties03.xlsx +0 -0
- data/test/regression/xlsx_files/properties04.xlsx +0 -0
- data/test/regression/xlsx_files/properties05.xlsx +0 -0
- data/test/regression/xlsx_files/table21.xlsx +0 -0
- data/test/regression/xlsx_files/table22.xlsx +0 -0
- data/test/regression/xlsx_files/table23.xlsx +0 -0
- data/test/regression/xlsx_files/utf8_11.xlsx +0 -0
- data/test/test_example_match.rb +836 -771
- data/test/workbook/test_check_sheetname.rb +61 -0
- data/test/workbook/test_worksheet_by_name.rb +35 -0
- data/test/workbook/test_write_workbook_view.rb +117 -0
- data/test/worksheet/test_cond_format_22.rb +266 -0
- data/test/worksheet/test_cond_format_23.rb +242 -0
- data/test/worksheet/test_cond_format_24.rb +303 -0
- data/test/worksheet/test_data_bar_01.rb +53 -0
- data/test/worksheet/test_data_bar_02.rb +79 -0
- data/test/worksheet/test_data_bar_03.rb +147 -0
- data/test/worksheet/test_data_bar_04.rb +145 -0
- data/test/worksheet/test_data_bar_05.rb +147 -0
- data/test/worksheet/test_data_bar_06.rb +145 -0
- data/test/worksheet/test_data_bar_07.rb +146 -0
- data/test/worksheet/test_data_bar_08.rb +54 -0
- data/test/worksheet/test_data_bar_09.rb +80 -0
- data/test/worksheet/test_data_bar_10.rb +165 -0
- data/test/worksheet/test_data_bar_11.rb +167 -0
- data/test/worksheet/test_data_bar_12.rb +104 -0
- data/test/worksheet/test_write_data_validation_02.rb +44 -0
- data/test/worksheet/test_write_hyperlink.rb +0 -7
- data/test/worksheet/test_write_sheet_view.rb +19 -1
- metadata +308 -5
- data/test/package/comments/test_write_text_t.rb +0 -44
data/examples/indent.rb
CHANGED
@@ -8,7 +8,7 @@
|
|
8
8
|
# This program demonstrates the indentation cell format.
|
9
9
|
#
|
10
10
|
# reverse(c), May 2004, John McNamara, jmcnamara@cpan.org
|
11
|
-
# convert to ruby by Hideo NAKAMURA,
|
11
|
+
# convert to ruby by Hideo NAKAMURA, nakamura.hideo@gmail.com
|
12
12
|
#
|
13
13
|
|
14
14
|
require 'write_xlsx'
|
data/examples/macros.rb
CHANGED
@@ -12,7 +12,7 @@
|
|
12
12
|
# An embedded macro is connected to a form button on the worksheet.
|
13
13
|
#
|
14
14
|
# reverse(c), November 2012, John McNamara, jmcnamara@cpan.org
|
15
|
-
# convert to ruby by Hideo NAKAMURA,
|
15
|
+
# convert to ruby by Hideo NAKAMURA, nakamura.hideo@gmail.com
|
16
16
|
#
|
17
17
|
|
18
18
|
require 'write_xlsx'
|
data/examples/merge1.rb
CHANGED
@@ -11,7 +11,7 @@
|
|
11
11
|
# See the merge3.pl - merge6.pl programs.
|
12
12
|
#
|
13
13
|
# reverse(c), August 2002, John McNamara, jmcnamara@cpan.org
|
14
|
-
# convert to ruby by Hideo NAKAMURA,
|
14
|
+
# convert to ruby by Hideo NAKAMURA, nakamura.hideo@gmail.com
|
15
15
|
#
|
16
16
|
require 'write_xlsx'
|
17
17
|
|
data/examples/merge2.rb
CHANGED
@@ -11,7 +11,7 @@
|
|
11
11
|
# See the merge3.pl - merge6.pl programs.
|
12
12
|
#
|
13
13
|
# reverse(c), August 2002, John McNamara, jmcnamara@cpan.org
|
14
|
-
# convert to ruby by Hideo NAKAMURA,
|
14
|
+
# convert to ruby by Hideo NAKAMURA, nakamura.hideo@gmail.com
|
15
15
|
#
|
16
16
|
|
17
17
|
require 'write_xlsx'
|
data/examples/merge3.rb
CHANGED
data/examples/merge4.rb
CHANGED
@@ -7,7 +7,7 @@
|
|
7
7
|
# method with complex formatting.
|
8
8
|
#
|
9
9
|
# reverse(c), September 2002, John McNamara, jmcnamara@cpan.org
|
10
|
-
# convert to ruby by Hideo NAKAMURA,
|
10
|
+
# convert to ruby by Hideo NAKAMURA, nakamura.hideo@gmail.com
|
11
11
|
#
|
12
12
|
|
13
13
|
require 'write_xlsx'
|
data/examples/merge5.rb
CHANGED
data/examples/merge6.rb
CHANGED
@@ -7,7 +7,7 @@
|
|
7
7
|
# method with Unicode strings.
|
8
8
|
#
|
9
9
|
# reverse(c), December 2005, John McNamara, jmcnamara@cpan.org
|
10
|
-
# convert to ruby by Hideo NAKAMURA,
|
10
|
+
# convert to ruby by Hideo NAKAMURA, nakamura.hideo@gmail.com
|
11
11
|
#
|
12
12
|
|
13
13
|
require 'write_xlsx'
|
data/examples/outline.rb
CHANGED
@@ -61,7 +61,7 @@
|
|
61
61
|
# See the main Excel::Writer::XLSX documentation for more information.
|
62
62
|
#
|
63
63
|
# reverse(c), April 2003, John McNamara, jmcnamara@cpan.org
|
64
|
-
# convert to ruby by Hideo NAKAMURA,
|
64
|
+
# convert to ruby by Hideo NAKAMURA, nakamura.hideo@gmail.com
|
65
65
|
#
|
66
66
|
|
67
67
|
require 'write_xlsx'
|
@@ -9,7 +9,7 @@
|
|
9
9
|
# outlines.pl example program for more general examples.
|
10
10
|
#
|
11
11
|
# reverse ('(c)'), March 2008, John McNamara, jmcnamara@cpan.org
|
12
|
-
# convert to ruby by Hideo NAKAMURA,
|
12
|
+
# convert to ruby by Hideo NAKAMURA, nakamura.hideo@gmail.com
|
13
13
|
#
|
14
14
|
|
15
15
|
require 'write_xlsx'
|
data/examples/panes.rb
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
# Example of using the Excel::Writer::XLSX module to create worksheet panes.
|
7
7
|
#
|
8
8
|
# reverse(c), May 2001, John McNamara, jmcnamara@cpan.org
|
9
|
-
# convert to ruby by Hideo NAKAMURA,
|
9
|
+
# convert to ruby by Hideo NAKAMURA, nakamura.hideo@gmail.com
|
10
10
|
#
|
11
11
|
|
12
12
|
require 'write_xlsx'
|
data/examples/properties.rb
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
# An example of adding document properties to a Excel::Writer::XLSX file.
|
7
7
|
#
|
8
8
|
# reverse('©'), August 2008, John McNamara, jmcnamara@cpan.org
|
9
|
-
# convert to ruby by Hideo NAKAMURA,
|
9
|
+
# convert to ruby by Hideo NAKAMURA, nakamura.hideo@gmail.com
|
10
10
|
#
|
11
11
|
|
12
12
|
require 'write_xlsx'
|
data/examples/regions.rb
CHANGED
@@ -7,7 +7,7 @@
|
|
7
7
|
# Excel workbook with multiple worksheets.
|
8
8
|
#
|
9
9
|
# reverse(c), March 2001, John McNamara, jmcnamara@cpan.org
|
10
|
-
# convert to ruby by Hideo NAKAMURA,
|
10
|
+
# convert to ruby by Hideo NAKAMURA, nakamura.hideo@gmail.com
|
11
11
|
#
|
12
12
|
|
13
13
|
require 'write_xlsx'
|
data/examples/rich_strings.rb
CHANGED
@@ -7,7 +7,7 @@
|
|
7
7
|
# strings with multiple formatting.
|
8
8
|
#
|
9
9
|
# reverse(c), February 2011, John McNamara, jmcnamara@cpan.org
|
10
|
-
# convert to ruby by Hideo NAKAMURA,
|
10
|
+
# convert to ruby by Hideo NAKAMURA, nakamura.hideo@gmail.com
|
11
11
|
#
|
12
12
|
|
13
13
|
require 'write_xlsx'
|
data/examples/right_to_left.rb
CHANGED
data/examples/shape1.rb
CHANGED
@@ -7,7 +7,7 @@
|
|
7
7
|
# add shapes to an Excel xlsx file.
|
8
8
|
#
|
9
9
|
# reverse('c'), May 2012, John McNamara, jmcnamara@cpan.org
|
10
|
-
# converted to Ruby by Hideo NAKAMURA,
|
10
|
+
# converted to Ruby by Hideo NAKAMURA, nakamura.hideo@gmail.com
|
11
11
|
#
|
12
12
|
|
13
13
|
require 'write_xlsx'
|
data/examples/shape2.rb
CHANGED
@@ -7,7 +7,7 @@
|
|
7
7
|
# modify shapes properties in an Excel xlsx file.
|
8
8
|
#
|
9
9
|
# reverse('c'), May 2012, John McNamara, jmcnamara@cpan.org
|
10
|
-
# converted to Ruby by Hideo NAKAMURA,
|
10
|
+
# converted to Ruby by Hideo NAKAMURA, nakamura.hideo@gmail.com
|
11
11
|
#
|
12
12
|
|
13
13
|
require 'write_xlsx'
|
data/examples/shape3.rb
CHANGED
@@ -7,7 +7,7 @@
|
|
7
7
|
# scale shapes in an Excel xlsx file.
|
8
8
|
#
|
9
9
|
# reverse('c'), May 2012, John McNamara, jmcnamara@cpan.org
|
10
|
-
# converted to Ruby by Hideo NAKAMURA,
|
10
|
+
# converted to Ruby by Hideo NAKAMURA, nakamura.hideo@gmail.com
|
11
11
|
#
|
12
12
|
|
13
13
|
require 'write_xlsx'
|
data/examples/shape4.rb
CHANGED
@@ -7,7 +7,7 @@
|
|
7
7
|
# demonstrate stenciling in an Excel xlsx file.
|
8
8
|
#
|
9
9
|
# reverse('c'), May 2012, John McNamara, jmcnamara@cpan.org
|
10
|
-
# converted to Ruby by Hideo NAKAMURA,
|
10
|
+
# converted to Ruby by Hideo NAKAMURA, nakamura.hideo@gmail.com
|
11
11
|
#
|
12
12
|
|
13
13
|
require 'write_xlsx'
|
data/examples/shape5.rb
CHANGED
@@ -7,7 +7,7 @@
|
|
7
7
|
# add shapes (objects and top/bottom connectors) to an Excel xlsx file.
|
8
8
|
#
|
9
9
|
# reverse('c'), May 2012, John McNamara, jmcnamara@cpan.org
|
10
|
-
# converted to Ruby by Hideo NAKAMURA,
|
10
|
+
# converted to Ruby by Hideo NAKAMURA, nakamura.hideo@gmail.com
|
11
11
|
#
|
12
12
|
|
13
13
|
require 'write_xlsx'
|
data/examples/shape6.rb
CHANGED
@@ -7,7 +7,7 @@
|
|
7
7
|
# add shapes (objects and right/left connectors) to an Excel xlsx file.
|
8
8
|
#
|
9
9
|
# reverse('c'), May 2012, John McNamara, jmcnamara@cpan.org
|
10
|
-
# converted to Ruby by Hideo NAKAMURA,
|
10
|
+
# converted to Ruby by Hideo NAKAMURA, nakamura.hideo@gmail.com
|
11
11
|
#
|
12
12
|
|
13
13
|
require 'write_xlsx'
|
data/examples/shape7.rb
CHANGED
@@ -7,7 +7,7 @@
|
|
7
7
|
# add shapes and one-to-many connectors to an Excel xlsx file.
|
8
8
|
#
|
9
9
|
# reverse('c'), May 2012, John McNamara, jmcnamara@cpan.org
|
10
|
-
# converted to Ruby by Hideo NAKAMURA,
|
10
|
+
# converted to Ruby by Hideo NAKAMURA, nakamura.hideo@gmail.com
|
11
11
|
#
|
12
12
|
|
13
13
|
require 'write_xlsx'
|
data/examples/shape8.rb
CHANGED
@@ -7,7 +7,7 @@
|
|
7
7
|
# add shapes and one-to-many connectors to an Excel xlsx file.
|
8
8
|
#
|
9
9
|
# reverse('c'), May 2012, John McNamara, jmcnamara@cpan.org
|
10
|
-
# converted to Ruby by Hideo NAKAMURA,
|
10
|
+
# converted to Ruby by Hideo NAKAMURA, nakamura.hideo@gmail.com
|
11
11
|
#
|
12
12
|
|
13
13
|
require 'write_xlsx'
|
data/examples/shape_all.rb
CHANGED
@@ -10,7 +10,7 @@
|
|
10
10
|
# part of the ECMA-376 standard.
|
11
11
|
#
|
12
12
|
# reverse(c), May 2012, John McNamara, jmcnamara@cpan.org
|
13
|
-
# converted to ruby by Hideo NAKAMURA,
|
13
|
+
# converted to ruby by Hideo NAKAMURA, nakamura.hideo@gmail.com
|
14
14
|
#
|
15
15
|
require 'write_xlsx'
|
16
16
|
|
data/examples/sparklines1.rb
CHANGED
@@ -10,7 +10,7 @@
|
|
10
10
|
# of more complex sparkline formatting.
|
11
11
|
#
|
12
12
|
# reverse ('(c)'), November 2011, John McNamara, jmcnamara@cpan.org
|
13
|
-
# convert to ruby by Hideo NAKAMURA,
|
13
|
+
# convert to ruby by Hideo NAKAMURA, nakamura.hideo@gmail.com
|
14
14
|
#
|
15
15
|
|
16
16
|
require 'write_xlsx'
|
data/examples/sparklines2.rb
CHANGED
@@ -10,7 +10,7 @@
|
|
10
10
|
# options that can be applied to sparklines.
|
11
11
|
#
|
12
12
|
# reverse ('(c)'), November 2011, John McNamara, jmcnamara@cpan.org
|
13
|
-
# convert to ruby by Hideo NAKAMURA,
|
13
|
+
# convert to ruby by Hideo NAKAMURA, nakamura.hideo@gmail.com
|
14
14
|
#
|
15
15
|
|
16
16
|
require 'write_xlsx'
|
data/examples/stats.rb
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
# A Simple example of how to use functions with the WriteXLSX gem.
|
7
7
|
#
|
8
8
|
# reverse(c), March 2001, John McNamara, jmcnamara@cpan.org
|
9
|
-
# convert to ruby by Hideo NAKAMURA,
|
9
|
+
# convert to ruby by Hideo NAKAMURA, nakamura.hideo@gmail.com
|
10
10
|
#
|
11
11
|
|
12
12
|
require 'write_xlsx'
|
data/examples/stats_ext.rb
CHANGED
@@ -9,7 +9,7 @@
|
|
9
9
|
# other worksheets within the same workbook.
|
10
10
|
#
|
11
11
|
# reverse(c), March 2001, John McNamara, jmcnamara@cpan.org
|
12
|
-
# convert to ruby by Hideo NAKAMURA,
|
12
|
+
# convert to ruby by Hideo NAKAMURA, nakamura.hideo@gmail.com
|
13
13
|
#
|
14
14
|
|
15
15
|
require 'write_xlsx'
|
data/examples/stocks.rb
CHANGED
@@ -9,7 +9,7 @@
|
|
9
9
|
# with colours to indicate if a share price has gone up or down.
|
10
10
|
#
|
11
11
|
# reverse(c), March 2001, John McNamara, jmcnamara@cpan.org
|
12
|
-
# convert to ruby by Hideo NAKAMURA,
|
12
|
+
# convert to ruby by Hideo NAKAMURA, nakamura.hideo@gmail.com
|
13
13
|
#
|
14
14
|
|
15
15
|
require 'write_xlsx'
|
data/examples/tab_colors.rb
CHANGED
@@ -5,7 +5,7 @@
|
|
5
5
|
# Example of how to set Excel worksheet tab colours.
|
6
6
|
#
|
7
7
|
# reverse(c), May 2006, John McNamara, jmcnamara@cpan.org
|
8
|
-
# convert to ruby by Hideo NAKAMURA,
|
8
|
+
# convert to ruby by Hideo NAKAMURA, nakamura.hideo@gmail.com
|
9
9
|
#
|
10
10
|
|
11
11
|
require 'write_xlsx'
|
data/examples/tables.rb
CHANGED
@@ -9,7 +9,7 @@
|
|
9
9
|
# structure that can be references in a formula or formatted collectively.
|
10
10
|
#
|
11
11
|
# reverse(c), March 2001, John McNamara, jmcnamara@cpan.org
|
12
|
-
# convert to ruby by Hideo NAKAMURA,
|
12
|
+
# convert to ruby by Hideo NAKAMURA, nakamura.hideo@gmail.com
|
13
13
|
#
|
14
14
|
|
15
15
|
require 'write_xlsx'
|
data/lib/write_xlsx/chart.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
# -*- coding: utf-8 -*-
|
2
2
|
require 'write_xlsx/package/xml_writer_simple'
|
3
3
|
require 'write_xlsx/gradient'
|
4
|
+
require 'write_xlsx/chart/legend'
|
4
5
|
require 'write_xlsx/utility'
|
5
6
|
require 'write_xlsx/chart/axis'
|
6
7
|
require 'write_xlsx/chart/caption'
|
@@ -10,7 +11,7 @@ module Writexlsx
|
|
10
11
|
class Table
|
11
12
|
include Writexlsx::Utility
|
12
13
|
|
13
|
-
attr_reader :horizontal, :vertical, :outline, :show_keys
|
14
|
+
attr_reader :horizontal, :vertical, :outline, :show_keys, :font
|
14
15
|
|
15
16
|
def initialize(params = {})
|
16
17
|
@horizontal, @vertical, @outline, @show_keys = true, true, true, false
|
@@ -18,14 +19,22 @@ def initialize(params = {})
|
|
18
19
|
@vertical = params[:vertical] if params.has_key?(:vertical)
|
19
20
|
@outline = params[:outline] if params.has_key?(:outline)
|
20
21
|
@show_keys = params[:show_keys] if params.has_key?(:show_keys)
|
22
|
+
@font = convert_font_args(params[:font])
|
23
|
+
end
|
24
|
+
|
25
|
+
def palette=(palette)
|
26
|
+
@palette = palette
|
21
27
|
end
|
22
28
|
|
23
29
|
def write_d_table(writer)
|
24
|
-
writer
|
25
|
-
|
26
|
-
writer.empty_tag('c:
|
27
|
-
writer.empty_tag('c:
|
28
|
-
writer.empty_tag('c:
|
30
|
+
@writer = writer
|
31
|
+
@writer.tag_elements('c:dTable') do
|
32
|
+
@writer.empty_tag('c:showHorzBorder', attributes) if ptrue?(horizontal)
|
33
|
+
@writer.empty_tag('c:showVertBorder', attributes) if ptrue?(vertical)
|
34
|
+
@writer.empty_tag('c:showOutline', attributes) if ptrue?(outline)
|
35
|
+
@writer.empty_tag('c:showKeys', attributes) if ptrue?(show_keys)
|
36
|
+
# Write the table font.
|
37
|
+
write_tx_pr(nil, font) if ptrue?(font)
|
29
38
|
end
|
30
39
|
end
|
31
40
|
|
@@ -154,6 +163,7 @@ def numeric_or_downcase(val)
|
|
154
163
|
|
155
164
|
class Chart
|
156
165
|
include Writexlsx::Utility
|
166
|
+
include Writexlsx::Gradient
|
157
167
|
|
158
168
|
attr_accessor :id, :name # :nodoc:
|
159
169
|
attr_writer :index, :palette, :protection # :nodoc:
|
@@ -264,6 +274,10 @@ def add_series(params)
|
|
264
274
|
raise "Must specify ':categories' in add_series for this chart type"
|
265
275
|
end
|
266
276
|
|
277
|
+
if @series.size == 255
|
278
|
+
raise "The maximum number of series that can be added to an Excel Chart is 255."
|
279
|
+
end
|
280
|
+
|
267
281
|
@series << Series.new(self, params)
|
268
282
|
|
269
283
|
# Set the secondary axis properties.
|
@@ -340,16 +354,8 @@ def set_title(params)
|
|
340
354
|
# Set the properties of the chart legend.
|
341
355
|
#
|
342
356
|
def set_legend(params)
|
343
|
-
|
344
|
-
|
345
|
-
else
|
346
|
-
@legend_position = params[:position] || 'right'
|
347
|
-
end
|
348
|
-
@legend_delete_series = params[:delete_series]
|
349
|
-
@legend_font = convert_font_args(params[:font])
|
350
|
-
|
351
|
-
# Set the legend layout.
|
352
|
-
@legend_layout = layout_properties(params[:layout])
|
357
|
+
# Convert the user default properties to internal properties.
|
358
|
+
legend_properties(params)
|
353
359
|
end
|
354
360
|
|
355
361
|
#
|
@@ -417,6 +423,7 @@ def set_size(params = {})
|
|
417
423
|
#
|
418
424
|
def set_table(params = {})
|
419
425
|
@table = Table.new(params)
|
426
|
+
@table.palette = @palette
|
420
427
|
end
|
421
428
|
|
422
429
|
#
|
@@ -517,39 +524,6 @@ def write_bar_chart(params) # :nodoc:
|
|
517
524
|
end
|
518
525
|
end
|
519
526
|
|
520
|
-
#
|
521
|
-
# Convert user defined font values into private hash values.
|
522
|
-
#
|
523
|
-
def convert_font_args(params)
|
524
|
-
return unless params
|
525
|
-
font = params_to_font(params)
|
526
|
-
|
527
|
-
# Convert font size units.
|
528
|
-
font[:_size] *= 100 if font[:_size] && font[:_size] != 0
|
529
|
-
|
530
|
-
# Convert rotation into 60,000ths of a degree.
|
531
|
-
if ptrue?(font[:_rotation])
|
532
|
-
font[:_rotation] = 60_000 * font[:_rotation].to_i
|
533
|
-
end
|
534
|
-
|
535
|
-
font
|
536
|
-
end
|
537
|
-
|
538
|
-
def params_to_font(params)
|
539
|
-
{
|
540
|
-
:_name => params[:name],
|
541
|
-
:_color => params[:color],
|
542
|
-
:_size => params[:size],
|
543
|
-
:_bold => params[:bold],
|
544
|
-
:_italic => params[:italic],
|
545
|
-
:_underline => params[:underline],
|
546
|
-
:_pitch_family => params[:pitch_family],
|
547
|
-
:_charset => params[:charset],
|
548
|
-
:_baseline => params[:baseline] || 0,
|
549
|
-
:_rotation => params[:rotation]
|
550
|
-
}
|
551
|
-
end
|
552
|
-
|
553
527
|
#
|
554
528
|
# Switch name and name_formula parameters if required.
|
555
529
|
#
|
@@ -631,7 +605,7 @@ def display_setup
|
|
631
605
|
@y_scale = 1
|
632
606
|
@x_offset = 0
|
633
607
|
@y_offset = 0
|
634
|
-
@
|
608
|
+
@legend = Legend.new
|
635
609
|
@smooth_allowed = 0
|
636
610
|
@cross_between = 'between'
|
637
611
|
@date_category = false
|
@@ -672,20 +646,6 @@ def get_data_type(data) # :nodoc:
|
|
672
646
|
'num'
|
673
647
|
end
|
674
648
|
|
675
|
-
#
|
676
|
-
# Convert the user specified colour index or string to a rgb colour.
|
677
|
-
#
|
678
|
-
def color(color_code) # :nodoc:
|
679
|
-
if color_code and color_code =~ /^#[0-9a-fA-F]{6}$/
|
680
|
-
# Convert a HTML style #RRGGBB color.
|
681
|
-
color_code.sub(/^#/, '').upcase
|
682
|
-
else
|
683
|
-
index = Format.color(color_code)
|
684
|
-
raise "Unknown color '#{color_code}' used in chart formatting." unless index
|
685
|
-
palette_color(index)
|
686
|
-
end
|
687
|
-
end
|
688
|
-
|
689
649
|
#
|
690
650
|
# Returns series which use the primary axes.
|
691
651
|
#
|
@@ -723,38 +683,6 @@ def ids
|
|
723
683
|
[id1, id2]
|
724
684
|
end
|
725
685
|
|
726
|
-
#
|
727
|
-
# Get the font style attributes from a font hash.
|
728
|
-
#
|
729
|
-
def get_font_style_attributes(font)
|
730
|
-
return [] unless font
|
731
|
-
|
732
|
-
attributes = []
|
733
|
-
attributes << ['sz', font[:_size]] if ptrue?(font[:_size])
|
734
|
-
attributes << ['b', font[:_bold]] if font[:_bold]
|
735
|
-
attributes << ['i', font[:_italic]] if font[:_italic]
|
736
|
-
attributes << ['u', 'sng'] if font[:_underline]
|
737
|
-
|
738
|
-
# Turn off baseline when testing fonts that don't have it.
|
739
|
-
if font[:_baseline] != -1
|
740
|
-
attributes << ['baseline', font[:_baseline]]
|
741
|
-
end
|
742
|
-
attributes
|
743
|
-
end
|
744
|
-
|
745
|
-
#
|
746
|
-
# Get the font latin attributes from a font hash.
|
747
|
-
#
|
748
|
-
def get_font_latin_attributes(font)
|
749
|
-
return [] unless font
|
750
|
-
|
751
|
-
attributes = []
|
752
|
-
attributes << ['typeface', font[:_name]] if ptrue?(font[:_name])
|
753
|
-
attributes << ['pitchFamily', font[:_pitch_family]] if font[:_pitch_family]
|
754
|
-
attributes << ['charset', font[:_charset]] if font[:_charset]
|
755
|
-
|
756
|
-
attributes
|
757
|
-
end
|
758
686
|
#
|
759
687
|
# Setup the default properties for a chart.
|
760
688
|
#
|
@@ -1250,8 +1178,8 @@ def write_cat_axis(params) # :nodoc:
|
|
1250
1178
|
return unless axis_ids
|
1251
1179
|
return if axis_ids.empty?
|
1252
1180
|
|
1253
|
-
position
|
1254
|
-
|
1181
|
+
position = @cat_axis_position
|
1182
|
+
is_y_axis = @horiz_cat_axis
|
1255
1183
|
|
1256
1184
|
# Overwrite the default axis position with a user supplied value.
|
1257
1185
|
position = x_axis.position || position
|
@@ -1274,9 +1202,9 @@ def write_cat_axis(params) # :nodoc:
|
|
1274
1202
|
|
1275
1203
|
# Write the axis title elements.
|
1276
1204
|
if x_axis.formula
|
1277
|
-
write_title_formula(x_axis,
|
1205
|
+
write_title_formula(x_axis, is_y_axis, @x_axis, x_axis.layout)
|
1278
1206
|
elsif x_axis.name
|
1279
|
-
write_title_rich(x_axis,
|
1207
|
+
write_title_rich(x_axis, is_y_axis, x_axis.layout)
|
1280
1208
|
end
|
1281
1209
|
|
1282
1210
|
# Write the c:numFmt element.
|
@@ -1306,7 +1234,7 @@ def write_cat_axis(params) # :nodoc:
|
|
1306
1234
|
# Write the c:auto element.
|
1307
1235
|
write_auto(1) unless x_axis.text_axis
|
1308
1236
|
# Write the c:labelAlign element.
|
1309
|
-
write_label_align(
|
1237
|
+
write_label_align(x_axis.label_align)
|
1310
1238
|
# Write the c:labelOffset element.
|
1311
1239
|
write_label_offset(100)
|
1312
1240
|
# Write the c:tickLblSkip element.
|
@@ -1640,6 +1568,12 @@ def write_auto(val) # :nodoc:
|
|
1640
1568
|
# Write the <c:labelAlign> element.
|
1641
1569
|
#
|
1642
1570
|
def write_label_align(val) # :nodoc:
|
1571
|
+
val ||= 'ctr'
|
1572
|
+
if val == 'right'
|
1573
|
+
val = 'r'
|
1574
|
+
elsif val == 'left'
|
1575
|
+
val = 'l'
|
1576
|
+
end
|
1643
1577
|
@writer.empty_tag('c:lblAlgn', [ ['val', val] ])
|
1644
1578
|
end
|
1645
1579
|
|
@@ -1742,10 +1676,10 @@ def write_c_minor_time_unit(val) # :nodoc:
|
|
1742
1676
|
# Write the <c:legend> element.
|
1743
1677
|
#
|
1744
1678
|
def write_legend # :nodoc:
|
1745
|
-
position = @
|
1679
|
+
position = @legend.position.sub(/^overlay_/, '')
|
1746
1680
|
return if position == 'none' || (not position_allowed.has_key?(position))
|
1747
1681
|
|
1748
|
-
@delete_series = @
|
1682
|
+
@delete_series = @legend.delete_series if @legend.delete_series.kind_of?(Array)
|
1749
1683
|
@writer.tag_elements('c:legend') do
|
1750
1684
|
# Write the c:legendPos element.
|
1751
1685
|
write_legend_pos(position_allowed[position])
|
@@ -1753,20 +1687,23 @@ def write_legend # :nodoc:
|
|
1753
1687
|
# Write the c:legendEntry element.
|
1754
1688
|
@delete_series.each { |i| write_legend_entry(i) } if @delete_series
|
1755
1689
|
# Write the c:layout element.
|
1756
|
-
write_layout(@
|
1757
|
-
# Write the c:txPr element.
|
1758
|
-
write_tx_pr(nil, @legend_font) if ptrue?(@legend_font)
|
1690
|
+
write_layout(@legend.layout, 'legend')
|
1759
1691
|
# Write the c:overlay element.
|
1760
|
-
write_overlay if @
|
1692
|
+
write_overlay if @legend.position =~ /^overlay_/
|
1693
|
+
# Write the c:spPr element.
|
1694
|
+
write_sp_pr(@legend)
|
1695
|
+
# Write the c:txPr element.
|
1696
|
+
write_tx_pr(nil, @legend.font) if ptrue?(@legend.font)
|
1761
1697
|
end
|
1762
1698
|
end
|
1763
1699
|
|
1764
1700
|
def position_allowed
|
1765
1701
|
{
|
1766
|
-
'right'
|
1767
|
-
'left'
|
1768
|
-
'top'
|
1769
|
-
'bottom'
|
1702
|
+
'right' => 'r',
|
1703
|
+
'left' => 'l',
|
1704
|
+
'top' => 't',
|
1705
|
+
'bottom' => 'b',
|
1706
|
+
'top_right' => 'tr'
|
1770
1707
|
}
|
1771
1708
|
end
|
1772
1709
|
|
@@ -1871,10 +1808,10 @@ def write_auto_title_deleted
|
|
1871
1808
|
#
|
1872
1809
|
# Write the <c:title> element for a rich string.
|
1873
1810
|
#
|
1874
|
-
def write_title_rich(title,
|
1811
|
+
def write_title_rich(title, is_y_axis = nil, layout = nil, overlay = nil) # :nodoc:
|
1875
1812
|
@writer.tag_elements('c:title') do
|
1876
1813
|
# Write the c:tx element.
|
1877
|
-
write_tx_rich(title,
|
1814
|
+
write_tx_rich(title, is_y_axis)
|
1878
1815
|
# Write the c:layout element.
|
1879
1816
|
write_layout(layout, 'text')
|
1880
1817
|
# Write the c:overlay element.
|
@@ -1885,7 +1822,7 @@ def write_title_rich(title, horiz = nil, layout = nil, overlay = nil) # :nodoc:
|
|
1885
1822
|
#
|
1886
1823
|
# Write the <c:title> element for a rich string.
|
1887
1824
|
#
|
1888
|
-
def write_title_formula(title,
|
1825
|
+
def write_title_formula(title, is_y_axis = nil, axis = nil, layout = nil, overlay = nil) # :nodoc:
|
1889
1826
|
@writer.tag_elements('c:title') do
|
1890
1827
|
# Write the c:tx element.
|
1891
1828
|
write_tx_formula(title.formula, axis ? axis.data_id : title.data_id)
|
@@ -1894,15 +1831,15 @@ def write_title_formula(title, horiz = nil, axis = nil, layout = nil, overlay =
|
|
1894
1831
|
# Write the c:overlay element.
|
1895
1832
|
write_overlay if overlay
|
1896
1833
|
# Write the c:txPr element.
|
1897
|
-
write_tx_pr(
|
1834
|
+
write_tx_pr(is_y_axis, axis ? axis.name_font : title.name_font)
|
1898
1835
|
end
|
1899
1836
|
end
|
1900
1837
|
|
1901
1838
|
#
|
1902
1839
|
# Write the <c:tx> element.
|
1903
1840
|
#
|
1904
|
-
def write_tx_rich(title,
|
1905
|
-
@writer.tag_elements('c:tx') { write_rich(title,
|
1841
|
+
def write_tx_rich(title, is_y_axis) # :nodoc:
|
1842
|
+
@writer.tag_elements('c:tx') { write_rich(title, is_y_axis) }
|
1906
1843
|
end
|
1907
1844
|
|
1908
1845
|
#
|
@@ -1924,40 +1861,20 @@ def write_tx_formula(title, data_id) # :nodoc:
|
|
1924
1861
|
#
|
1925
1862
|
# Write the <c:rich> element.
|
1926
1863
|
#
|
1927
|
-
def write_rich(title,
|
1864
|
+
def write_rich(title, is_y_axis) # :nodoc:
|
1928
1865
|
rotation = nil
|
1929
1866
|
if title.name_font && title.name_font[:_rotation]
|
1930
1867
|
rotation = title.name_font[:_rotation]
|
1931
1868
|
end
|
1932
1869
|
@writer.tag_elements('c:rich') do
|
1933
1870
|
# Write the a:bodyPr element.
|
1934
|
-
write_a_body_pr(rotation,
|
1871
|
+
write_a_body_pr(rotation, is_y_axis)
|
1935
1872
|
# Write the a:lstStyle element.
|
1936
1873
|
write_a_lst_style
|
1937
1874
|
# Write the a:p element.
|
1938
1875
|
write_a_p_rich(title)
|
1939
1876
|
end
|
1940
1877
|
end
|
1941
|
-
|
1942
|
-
#
|
1943
|
-
# Write the <a:bodyPr> element.
|
1944
|
-
#
|
1945
|
-
def write_a_body_pr(rot, horiz = nil) # :nodoc:
|
1946
|
-
rot = -5400000 if !rot && ptrue?(horiz)
|
1947
|
-
attributes = []
|
1948
|
-
attributes << ['rot', rot] if rot
|
1949
|
-
attributes << ['vert', 'horz'] if ptrue?(horiz)
|
1950
|
-
|
1951
|
-
@writer.empty_tag('a:bodyPr', attributes)
|
1952
|
-
end
|
1953
|
-
|
1954
|
-
#
|
1955
|
-
# Write the <a:lstStyle> element.
|
1956
|
-
#
|
1957
|
-
def write_a_lst_style # :nodoc:
|
1958
|
-
@writer.empty_tag('a:lstStyle')
|
1959
|
-
end
|
1960
|
-
|
1961
1878
|
#
|
1962
1879
|
# Write the <a:p> element for rich string titles.
|
1963
1880
|
#
|
@@ -1970,18 +1887,6 @@ def write_a_p_rich(title) # :nodoc:
|
|
1970
1887
|
end
|
1971
1888
|
end
|
1972
1889
|
|
1973
|
-
#
|
1974
|
-
# Write the <a:p> element for formula titles.
|
1975
|
-
#
|
1976
|
-
def write_a_p_formula(font = nil) # :nodoc:
|
1977
|
-
@writer.tag_elements('a:p') do
|
1978
|
-
# Write the a:pPr element.
|
1979
|
-
write_a_p_pr_formula(font)
|
1980
|
-
# Write the a:endParaRPr element.
|
1981
|
-
write_a_end_para_rpr
|
1982
|
-
end
|
1983
|
-
end
|
1984
|
-
|
1985
1890
|
#
|
1986
1891
|
# Write the <a:pPr> element for rich string titles.
|
1987
1892
|
#
|
@@ -1989,30 +1894,6 @@ def write_a_p_pr_rich(font) # :nodoc:
|
|
1989
1894
|
@writer.tag_elements('a:pPr') { write_a_def_rpr(font) }
|
1990
1895
|
end
|
1991
1896
|
|
1992
|
-
#
|
1993
|
-
# Write the <a:pPr> element for formula titles.
|
1994
|
-
#
|
1995
|
-
def write_a_p_pr_formula(font) # :nodoc:
|
1996
|
-
@writer.tag_elements('a:pPr') { write_a_def_rpr(font) }
|
1997
|
-
end
|
1998
|
-
|
1999
|
-
#
|
2000
|
-
# Write the <a:defRPr> element.
|
2001
|
-
#
|
2002
|
-
def write_a_def_rpr(font = nil) # :nodoc:
|
2003
|
-
write_def_rpr_r_pr_common(
|
2004
|
-
font,
|
2005
|
-
get_font_style_attributes(font),
|
2006
|
-
'a:defRPr')
|
2007
|
-
end
|
2008
|
-
|
2009
|
-
#
|
2010
|
-
# Write the <a:endParaRPr> element.
|
2011
|
-
#
|
2012
|
-
def write_a_end_para_rpr # :nodoc:
|
2013
|
-
@writer.empty_tag('a:endParaRPr', [ ['lang', 'en-US'] ])
|
2014
|
-
end
|
2015
|
-
|
2016
1897
|
#
|
2017
1898
|
# Write the <a:r> element.
|
2018
1899
|
#
|
@@ -2036,24 +1917,6 @@ def write_a_r_pr(font) # :nodoc:
|
|
2036
1917
|
write_def_rpr_r_pr_common(font, attributes, 'a:rPr')
|
2037
1918
|
end
|
2038
1919
|
|
2039
|
-
def write_def_rpr_r_pr_common(font, style_attributes, tag) # :nodoc:
|
2040
|
-
latin_attributes = get_font_latin_attributes(font)
|
2041
|
-
has_color = ptrue?(font) && ptrue?(font[:_color])
|
2042
|
-
|
2043
|
-
if !latin_attributes.empty? || has_color
|
2044
|
-
@writer.tag_elements(tag, style_attributes) do
|
2045
|
-
if has_color
|
2046
|
-
write_a_solid_fill(:color => font[:_color])
|
2047
|
-
end
|
2048
|
-
if !latin_attributes.empty?
|
2049
|
-
write_a_latin(latin_attributes)
|
2050
|
-
end
|
2051
|
-
end
|
2052
|
-
else
|
2053
|
-
@writer.empty_tag(tag, style_attributes)
|
2054
|
-
end
|
2055
|
-
end
|
2056
|
-
|
2057
1920
|
#
|
2058
1921
|
# Write the <a:t> element.
|
2059
1922
|
#
|
@@ -2061,24 +1924,6 @@ def write_a_t(title) # :nodoc:
|
|
2061
1924
|
@writer.data_element('a:t', title)
|
2062
1925
|
end
|
2063
1926
|
|
2064
|
-
#
|
2065
|
-
# Write the <c:txPr> element.
|
2066
|
-
#
|
2067
|
-
def write_tx_pr(horiz, font) # :nodoc:
|
2068
|
-
rotation = nil
|
2069
|
-
if font && font[:_rotation]
|
2070
|
-
rotation = font[:_rotation]
|
2071
|
-
end
|
2072
|
-
@writer.tag_elements('c:txPr') do
|
2073
|
-
# Write the a:bodyPr element.
|
2074
|
-
write_a_body_pr(rotation, horiz)
|
2075
|
-
# Write the a:lstStyle element.
|
2076
|
-
write_a_lst_style
|
2077
|
-
# Write the a:p element.
|
2078
|
-
write_a_p_formula(font)
|
2079
|
-
end
|
2080
|
-
end
|
2081
|
-
|
2082
1927
|
#
|
2083
1928
|
# Write the <c:marker> element.
|
2084
1929
|
#
|
@@ -2199,34 +2044,6 @@ def write_a_no_fill # :nodoc:
|
|
2199
2044
|
@writer.empty_tag('a:noFill')
|
2200
2045
|
end
|
2201
2046
|
|
2202
|
-
#
|
2203
|
-
# Write the <a:solidFill> element.
|
2204
|
-
#
|
2205
|
-
def write_a_solid_fill(fill) # :nodoc:
|
2206
|
-
@writer.tag_elements('a:solidFill') do
|
2207
|
-
if fill[:color]
|
2208
|
-
# Write the a:srgbClr element.
|
2209
|
-
write_a_srgb_clr(color(fill[:color]), fill[:transparency])
|
2210
|
-
end
|
2211
|
-
end
|
2212
|
-
end
|
2213
|
-
|
2214
|
-
#
|
2215
|
-
# Write the <a:srgbClr> element.
|
2216
|
-
#
|
2217
|
-
def write_a_srgb_clr(color, transparency = nil) # :nodoc:
|
2218
|
-
tag = 'a:srgbClr'
|
2219
|
-
attributes = [ ['val', color] ]
|
2220
|
-
|
2221
|
-
if ptrue?(transparency)
|
2222
|
-
@writer.tag_elements(tag, attributes) do
|
2223
|
-
write_a_alpha(transparency)
|
2224
|
-
end
|
2225
|
-
else
|
2226
|
-
@writer.empty_tag(tag, attributes)
|
2227
|
-
end
|
2228
|
-
end
|
2229
|
-
|
2230
2047
|
#
|
2231
2048
|
# Write the <a:alpha> element.
|
2232
2049
|
#
|
@@ -2264,6 +2081,20 @@ def write_trendline(trendline) # :nodoc:
|
|
2264
2081
|
write_forward(trendline.forward)
|
2265
2082
|
# Write the c:backward element.
|
2266
2083
|
write_backward(trendline.backward)
|
2084
|
+
if trendline.intercept
|
2085
|
+
# Write the c:intercept element.
|
2086
|
+
write_intercept(trendline.intercept)
|
2087
|
+
end
|
2088
|
+
if trendline.display_r_squared
|
2089
|
+
# Write the c:dispRSqr element.
|
2090
|
+
write_disp_rsqr
|
2091
|
+
end
|
2092
|
+
if trendline.display_equation
|
2093
|
+
# Write the c:dispEq element.
|
2094
|
+
write_disp_eq
|
2095
|
+
# Write the c:trendlineLbl element.
|
2096
|
+
write_trendline_lbl
|
2097
|
+
end
|
2267
2098
|
end
|
2268
2099
|
end
|
2269
2100
|
|
@@ -2315,6 +2146,54 @@ def write_backward(val) # :nodoc:
|
|
2315
2146
|
@writer.empty_tag('c:backward', [ ['val', val] ])
|
2316
2147
|
end
|
2317
2148
|
|
2149
|
+
#
|
2150
|
+
# Write the <c:intercept> element.
|
2151
|
+
#
|
2152
|
+
def write_intercept(val)
|
2153
|
+
@writer.empty_tag('c:intercept', [ ['val', val] ])
|
2154
|
+
end
|
2155
|
+
|
2156
|
+
#
|
2157
|
+
# Write the <c:dispEq> element.
|
2158
|
+
#
|
2159
|
+
def write_disp_eq
|
2160
|
+
@writer.empty_tag('c:dispEq', [ ['val', 1] ])
|
2161
|
+
end
|
2162
|
+
|
2163
|
+
#
|
2164
|
+
# Write the <c:dispRSqr> element.
|
2165
|
+
#
|
2166
|
+
def write_disp_rsqr
|
2167
|
+
@writer.empty_tag('c:dispRSqr', [ ['val', 1] ])
|
2168
|
+
end
|
2169
|
+
|
2170
|
+
#
|
2171
|
+
# Write the <c:trendlineLbl> element.
|
2172
|
+
#
|
2173
|
+
def write_trendline_lbl
|
2174
|
+
@writer.tag_elements('c:trendlineLbl') do
|
2175
|
+
# Write the c:layout element.
|
2176
|
+
write_layout
|
2177
|
+
# Write the c:numFmt element.
|
2178
|
+
write_trendline_num_fmt
|
2179
|
+
end
|
2180
|
+
end
|
2181
|
+
|
2182
|
+
#
|
2183
|
+
# Write the <c:numFmt> element.
|
2184
|
+
#
|
2185
|
+
def write_trendline_num_fmt
|
2186
|
+
format_code = 'General'
|
2187
|
+
source_linked = 0
|
2188
|
+
|
2189
|
+
attributes = [
|
2190
|
+
['formatCode', format_code],
|
2191
|
+
['sourceLinked', source_linked]
|
2192
|
+
]
|
2193
|
+
|
2194
|
+
@writer.empty_tag('c:numFmt', attributes)
|
2195
|
+
end
|
2196
|
+
|
2318
2197
|
#
|
2319
2198
|
# Write the <c:hiLowLines> element.
|
2320
2199
|
#
|
@@ -2362,7 +2241,12 @@ def write_num_base(tag, data)
|
|
2362
2241
|
write_format_code('General')
|
2363
2242
|
|
2364
2243
|
# Write the c:ptCount element.
|
2365
|
-
|
2244
|
+
if data
|
2245
|
+
count = data.size
|
2246
|
+
else
|
2247
|
+
count = 0
|
2248
|
+
end
|
2249
|
+
write_pt_count(count)
|
2366
2250
|
|
2367
2251
|
data.each_with_index do |token, i|
|
2368
2252
|
# Write non-numeric data as 0.
|