write_xlsx 0.88.0 → 1.00.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +43 -0
- data/Changes +88 -0
- data/LICENSE.txt +1 -1
- data/README.md +2 -2
- data/examples/a_simple.rb +1 -6
- data/examples/conditional_format.rb +73 -46
- data/examples/demo.rb +1 -7
- data/examples/hyperlink1.rb +4 -11
- data/lib/write_xlsx/chart.rb +106 -227
- data/lib/write_xlsx/chart/axis.rb +4 -4
- data/lib/write_xlsx/chart/caption.rb +3 -1
- data/lib/write_xlsx/chart/legend.rb +14 -0
- data/lib/write_xlsx/chart/pie.rb +11 -7
- data/lib/write_xlsx/chart/series.rb +11 -7
- data/lib/write_xlsx/chartsheet.rb +30 -2
- data/lib/write_xlsx/format.rb +19 -15
- data/lib/write_xlsx/package/comments.rb +50 -47
- 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/utility.rb +293 -35
- data/lib/write_xlsx/version.rb +1 -1
- data/lib/write_xlsx/workbook.rb +127 -7
- data/lib/write_xlsx/worksheet.rb +312 -46
- data/lib/write_xlsx/worksheet/cell_data.rb +21 -0
- data/lib/write_xlsx/worksheet/data_validation.rb +10 -14
- data/lib/write_xlsx/worksheet/hyperlink.rb +4 -8
- data/test/chart/test_write_legend_pos.rb +9 -1
- data/test/chartsheet/test_write_sheet_protection.rb +91 -0
- 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/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_axis42.rb +44 -0
- data/test/regression/test_chart_axis43.rb +44 -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_data_labels25.rb +61 -0
- 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_table03.rb +56 -0
- data/test/regression/test_comment13.rb +36 -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_format14.rb +26 -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 +30 -0
- data/test/regression/test_hyperlink26.rb +30 -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_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_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_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_types02.rb +25 -0
- data/test/regression/test_types08.rb +31 -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_axis42.xlsx +0 -0
- data/test/regression/xlsx_files/chart_axis43.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_data_labels25.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/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/format14.xlsx +0 -0
- data/test/regression/xlsx_files/format15.xlsx +0 -0
- data/test/regression/xlsx_files/hyperlink25.xlsx +0 -0
- data/test/regression/xlsx_files/hyperlink26.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/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/types02.xlsx +0 -0
- data/test/regression/xlsx_files/types08.xlsx +0 -0
- data/test/regression/xlsx_files/utf8_11.xlsx +0 -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 +262 -8
- data/test/package/comments/test_write_text_t.rb +0 -44
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bde6d7de8885eab3b8b2ccd4c1ec5b682b55b9893a730c3475d5c0e0b6aca459
|
4
|
+
data.tar.gz: c6f347da459b3a80bb699632d5aee762fb80de9ebde962463406618a2ed62c1f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9c562aa8183d3d5bfa800aa961883620ae645107e5de36f7559efdbd2624384cc810d6b1c5098f36bd8508f72c7f6177803fd4f54713c068c59cc4d983da2091
|
7
|
+
data.tar.gz: 6af5a9bb53da31ad5e1eca9de975fe5ee68233be6712cecc939d3fc77496d38a23639f43be66bc8a520895e43de6dadb5f3278893711e23397151967912d07b5
|
data/.travis.yml
CHANGED
@@ -1,7 +1,50 @@
|
|
1
1
|
language: ruby
|
2
2
|
rvm:
|
3
|
+
- 3.0.0
|
4
|
+
- 2.7.2
|
5
|
+
- 2.7.1
|
6
|
+
- 2.7.0
|
7
|
+
- 2.6.6
|
8
|
+
- 2.6.5
|
9
|
+
- 2.6.4
|
10
|
+
- 2.6.3
|
11
|
+
- 2.6.2
|
12
|
+
- 2.6.1
|
13
|
+
- 2.6.0
|
14
|
+
- 2.5.8
|
15
|
+
- 2.5.7
|
16
|
+
- 2.5.6
|
17
|
+
- 2.5.5
|
18
|
+
- 2.5.4
|
19
|
+
- 2.5.3
|
20
|
+
- 2.5.2
|
21
|
+
- 2.5.1
|
22
|
+
- 2.5.0
|
23
|
+
- 2.4.10
|
24
|
+
- 2.4.9
|
25
|
+
- 2.4.8
|
26
|
+
- 2.4.7
|
27
|
+
- 2.4.6
|
28
|
+
- 2.4.5
|
29
|
+
- 2.4.4
|
30
|
+
- 2.4.3
|
31
|
+
- 2.4.2
|
32
|
+
- 2.4.1
|
33
|
+
- 2.4.0
|
34
|
+
- 2.3.8
|
35
|
+
- 2.3.7
|
36
|
+
- 2.3.6
|
37
|
+
- 2.3.5
|
38
|
+
- 2.3.4
|
39
|
+
- 2.3.3
|
40
|
+
- 2.3.2
|
3
41
|
- 2.3.1
|
4
42
|
- 2.3.0
|
43
|
+
- 2.2.10
|
44
|
+
- 2.2.9
|
45
|
+
- 2.2.8
|
46
|
+
- 2.2.7
|
47
|
+
- 2.2.6
|
5
48
|
- 2.2.5
|
6
49
|
- 2.2.4
|
7
50
|
- 2.2.3
|
data/Changes
CHANGED
@@ -1,5 +1,93 @@
|
|
1
1
|
Change history of write_xlsx rubygem.
|
2
2
|
|
3
|
+
2021-01-23 v1.00.0
|
4
|
+
|
5
|
+
Fixed issue where images that started in hidden rows/columns weren't placed
|
6
|
+
correctly in the worksheet.
|
7
|
+
|
8
|
+
|
9
|
+
2021-01-08 v0.99.0
|
10
|
+
|
11
|
+
Added font and font_size parameters to write_comment().
|
12
|
+
|
13
|
+
Allow formulas in date field of data_validation().
|
14
|
+
|
15
|
+
Added top_left chart legend position.
|
16
|
+
|
17
|
+
Added legend formatting options.
|
18
|
+
|
19
|
+
Added set_tab_ratio() method to set the ratio between the worksheet tabs
|
20
|
+
and the horizontal slider.
|
21
|
+
|
22
|
+
Added worksheet hide_row_col_headers() method to turn off worksheet row
|
23
|
+
and column headings.
|
24
|
+
|
25
|
+
Add functionality to align chart category axis labels.
|
26
|
+
|
27
|
+
Fix for issue with special characters in worksheet table functions.
|
28
|
+
|
29
|
+
Fix handling of 'num_format': '0' in duplicate formats.
|
30
|
+
|
31
|
+
|
32
|
+
2021-01-03 v0.98.0
|
33
|
+
|
34
|
+
fixed for autofilter rule with blanks plus another filter.
|
35
|
+
|
36
|
+
2021-01-02 v0.97.0
|
37
|
+
|
38
|
+
Added Excel 2010 data bar features such as solid fills and control over
|
39
|
+
the display of negative values.
|
40
|
+
|
41
|
+
Added default formatting for hyperlinks if none is specified. The format
|
42
|
+
is the Excel hyperlink style so links change colour after they are
|
43
|
+
clicked.
|
44
|
+
|
45
|
+
Fixed missing plotarea formatting in pie/doughnut charts.
|
46
|
+
|
47
|
+
2020-12-31 v0.96.0
|
48
|
+
|
49
|
+
Added icon sets to conditional formatting.
|
50
|
+
|
51
|
+
2020-12-30 v0.95.0
|
52
|
+
|
53
|
+
Added workbook set_size() method.
|
54
|
+
|
55
|
+
2020-12-30 v0.94.0
|
56
|
+
|
57
|
+
Added font support to chart tables.
|
58
|
+
|
59
|
+
2020-12-30 v0.93.0
|
60
|
+
|
61
|
+
Added trendline properties: intercept, display_equation and
|
62
|
+
display_r_squared.
|
63
|
+
|
64
|
+
2020-12-30 v0.92.0
|
65
|
+
|
66
|
+
Fix for insert_image issue when handling images with zero dpi.
|
67
|
+
|
68
|
+
2020-12-30 v0.91.0
|
69
|
+
|
70
|
+
Add set_custom_property() workbook method to set custom document
|
71
|
+
properties.
|
72
|
+
|
73
|
+
2020-12-28 v0.90.0
|
74
|
+
|
75
|
+
Added worksheet_by_name() workbook method to retrieve a worksheet
|
76
|
+
in a workbook by name.
|
77
|
+
|
78
|
+
Fixed issue where internal file creation and modification dates where
|
79
|
+
in the local timezone instead of UTC.
|
80
|
+
|
81
|
+
Fixed issue with "external:" urls with space in sheetname.
|
82
|
+
|
83
|
+
Fixed issue where Unicode full-width number strings were treated as
|
84
|
+
numbers in write().
|
85
|
+
|
86
|
+
2020-12-27 v0.89.0
|
87
|
+
|
88
|
+
Added write_boolean() worksheet method to write Excel boolean values.
|
89
|
+
|
90
|
+
|
3
91
|
2020-12-26 v0.88.0
|
4
92
|
|
5
93
|
Added transparency option to solid fills in chart areas.
|
data/LICENSE.txt
CHANGED
data/README.md
CHANGED
@@ -5,7 +5,7 @@
|
|
5
5
|
|
6
6
|
gem to create a new file in the Excel 2007+ XLSX format, and you can use the
|
7
7
|
same interface as writeexcel gem. write_xlsx is converted from Perl's module
|
8
|
-
[Excel::Writer::XLSX-0.
|
8
|
+
[Excel::Writer::XLSX-0.99](https://github.com/jmcnamara/excel-writer-xlsx) .
|
9
9
|
|
10
10
|
## Description
|
11
11
|
|
@@ -85,7 +85,7 @@ the first worksheet in an Excel XML spreadsheet called ruby.xlsx:
|
|
85
85
|
Original Perl module was written by John McNamara(jmcnamara@cpan.org).
|
86
86
|
|
87
87
|
Converted to ruby by Hideo NAKAMURA(nakamrua.hideo@gmail.com)
|
88
|
-
Copyright (c) 2012-
|
88
|
+
Copyright (c) 2012-2021 Hideo NAKAMURA.
|
89
89
|
|
90
90
|
See LICENSE.txt for further details.
|
91
91
|
|
data/examples/a_simple.rb
CHANGED
@@ -34,11 +34,6 @@
|
|
34
34
|
worksheet.write(8, 0, '=IF(A5>3,"Yes", "No")')
|
35
35
|
|
36
36
|
# Write a hyperlink
|
37
|
-
|
38
|
-
:color => 'blue',
|
39
|
-
:underline => 1
|
40
|
-
)
|
41
|
-
|
42
|
-
worksheet.write(10, 0, 'http://www.ruby-lang.org/', hyperlink_format)
|
37
|
+
worksheet.write(10, 0, 'http://www.ruby-lang.org/')
|
43
38
|
|
44
39
|
workbook.close
|
@@ -26,12 +26,6 @@
|
|
26
26
|
:color => '#006100'
|
27
27
|
)
|
28
28
|
|
29
|
-
# Blue fill with dark blue text.
|
30
|
-
format3 = workbook.add_format(
|
31
|
-
:bg_color => '#C6CEFF',
|
32
|
-
:color => '#0000FF'
|
33
|
-
)
|
34
|
-
|
35
29
|
# Some sample data to run the conditional formatting against.
|
36
30
|
data = [
|
37
31
|
[ 34, 72, 38, 30, 75, 48, 75, 66, 84, 86 ],
|
@@ -226,19 +220,18 @@
|
|
226
220
|
#
|
227
221
|
caption = 'Examples of color scales and data bars. Default colors.'
|
228
222
|
|
229
|
-
|
230
|
-
data7 = 1 .. 12
|
223
|
+
data = 1 .. 12
|
231
224
|
|
232
225
|
worksheet7.write('A1', caption)
|
233
226
|
|
234
227
|
worksheet7.write('B2', "2 Color Scale")
|
235
|
-
worksheet7.write_col('B3',
|
228
|
+
worksheet7.write_col('B3', data)
|
236
229
|
|
237
230
|
worksheet7.write('D2', "3 Color Scale")
|
238
|
-
worksheet7.write_col('D3',
|
231
|
+
worksheet7.write_col('D3', data)
|
239
232
|
|
240
233
|
worksheet7.write('F2', "Data Bars")
|
241
|
-
worksheet7.write_col('F3',
|
234
|
+
worksheet7.write_col('F3', data)
|
242
235
|
|
243
236
|
|
244
237
|
worksheet7.conditional_formatting('B3:B14',
|
@@ -266,16 +259,18 @@
|
|
266
259
|
#
|
267
260
|
caption = 'Examples of color scales and data bars. Modified colors.'
|
268
261
|
|
262
|
+
data = 1..12
|
263
|
+
|
269
264
|
worksheet8.write('A1', caption)
|
270
265
|
|
271
266
|
worksheet8.write('B2', "2 Color Scale")
|
272
|
-
worksheet8.write_col('B3',
|
267
|
+
worksheet8.write_col('B3', data)
|
273
268
|
|
274
269
|
worksheet8.write('D2', "3 Color Scale")
|
275
|
-
worksheet8.write_col('D3',
|
270
|
+
worksheet8.write_col('D3', data)
|
276
271
|
|
277
272
|
worksheet8.write('F2', "Data Bars")
|
278
|
-
worksheet8.write_col('F3',
|
273
|
+
worksheet8.write_col('F3', data)
|
279
274
|
|
280
275
|
|
281
276
|
worksheet8.conditional_formatting('B3:B14',
|
@@ -304,47 +299,79 @@
|
|
304
299
|
|
305
300
|
###############################################################################
|
306
301
|
#
|
307
|
-
# Example 9
|
302
|
+
# Example 9.
|
308
303
|
#
|
309
|
-
caption = '
|
310
|
-
|
311
|
-
|
304
|
+
caption = 'Examples of conditional formats with icon sets.'
|
305
|
+
|
306
|
+
data = [
|
307
|
+
[1, 2, 3],
|
308
|
+
[1, 2, 3],
|
309
|
+
[1, 2, 3],
|
310
|
+
[1, 2, 3],
|
311
|
+
[1, 2, 3, 4],
|
312
|
+
[1, 2, 3, 4, 5],
|
313
|
+
[1, 2, 3, 4, 5]
|
314
|
+
]
|
312
315
|
|
313
|
-
# Write the data.
|
314
316
|
worksheet9.write('A1', caption)
|
315
317
|
worksheet9.write_col('B3', data)
|
316
318
|
|
317
|
-
|
318
|
-
|
319
|
-
|
320
|
-
|
321
|
-
|
322
|
-
|
323
|
-
:criteria => '>=',
|
324
|
-
:value => 100,
|
325
|
-
:format => format3,
|
326
|
-
:stop_if_true => 1
|
327
|
-
}
|
319
|
+
worksheet9.conditional_formatting(
|
320
|
+
'B3:D3',
|
321
|
+
{
|
322
|
+
:type => 'icon_set',
|
323
|
+
:icon_style => '3_traffic_lights'
|
324
|
+
}
|
328
325
|
)
|
329
326
|
|
330
|
-
|
331
|
-
|
332
|
-
|
333
|
-
|
334
|
-
|
335
|
-
|
336
|
-
|
337
|
-
}
|
327
|
+
worksheet9.conditional_formatting(
|
328
|
+
'B4:D4',
|
329
|
+
{
|
330
|
+
:type => 'icon_set',
|
331
|
+
:icon_style => '3_traffic_lights',
|
332
|
+
:reverse_icons => 1
|
333
|
+
}
|
338
334
|
)
|
339
335
|
|
340
|
-
|
341
|
-
|
342
|
-
|
343
|
-
|
344
|
-
|
345
|
-
|
346
|
-
|
347
|
-
|
336
|
+
worksheet9.conditional_formatting(
|
337
|
+
'B5:D5',
|
338
|
+
{
|
339
|
+
:type => 'icon_set',
|
340
|
+
:icon_style => '3_traffic_lights',
|
341
|
+
:icons_only => 1
|
342
|
+
}
|
343
|
+
)
|
344
|
+
|
345
|
+
worksheet9.conditional_formatting(
|
346
|
+
'B6:D6',
|
347
|
+
{
|
348
|
+
:type => 'icon_set',
|
349
|
+
:icon_style => '3_arrows'
|
350
|
+
}
|
351
|
+
)
|
352
|
+
|
353
|
+
worksheet9.conditional_formatting(
|
354
|
+
'B7:E8',
|
355
|
+
{
|
356
|
+
:type => 'icon_set',
|
357
|
+
:icon_style => '4_arrows'
|
358
|
+
}
|
359
|
+
)
|
360
|
+
|
361
|
+
worksheet9.conditional_formatting(
|
362
|
+
'B8:F8',
|
363
|
+
{
|
364
|
+
:type => 'icon_set',
|
365
|
+
:icon_style => '5_arrows'
|
366
|
+
}
|
367
|
+
)
|
368
|
+
|
369
|
+
worksheet9.conditional_formatting(
|
370
|
+
'B9:F9',
|
371
|
+
{
|
372
|
+
:type => 'icon_set',
|
373
|
+
:icon_style => '5_ratings'
|
374
|
+
}
|
348
375
|
)
|
349
376
|
|
350
377
|
workbook.close
|
data/examples/demo.rb
CHANGED
@@ -27,11 +27,6 @@
|
|
27
27
|
:align => 'vcenter'
|
28
28
|
)
|
29
29
|
|
30
|
-
hyperlink_format = workbook.add_format(
|
31
|
-
:color => 'blue',
|
32
|
-
:underline => 1
|
33
|
-
)
|
34
|
-
|
35
30
|
headings = ['Features of WriteXLSX', '']
|
36
31
|
worksheet.write_row('A1', headings, heading)
|
37
32
|
|
@@ -81,7 +76,7 @@
|
|
81
76
|
# Hyperlinks
|
82
77
|
#
|
83
78
|
worksheet.write('A9', "Hyperlinks")
|
84
|
-
worksheet.write('B9', 'http://www.ruby-lang.org/'
|
79
|
+
worksheet.write('B9', 'http://www.ruby-lang.org/')
|
85
80
|
|
86
81
|
#######################################################################
|
87
82
|
#
|
@@ -99,4 +94,3 @@
|
|
99
94
|
worksheet.write('A19', "Multiple worksheets")
|
100
95
|
|
101
96
|
workbook.close
|
102
|
-
|
data/examples/hyperlink1.rb
CHANGED
@@ -22,13 +22,6 @@
|
|
22
22
|
worksheet.set_column('A:A', 30)
|
23
23
|
worksheet.set_selection('B1')
|
24
24
|
|
25
|
-
|
26
|
-
# Add the standard url link format.
|
27
|
-
url_format = workbook.add_format(
|
28
|
-
:color => 'blue',
|
29
|
-
:underline => 1
|
30
|
-
)
|
31
|
-
|
32
25
|
# Add a sample format.
|
33
26
|
red_format = workbook.add_format(
|
34
27
|
:color => 'red',
|
@@ -45,11 +38,11 @@
|
|
45
38
|
|
46
39
|
|
47
40
|
# Write some hyperlinks
|
48
|
-
worksheet.write('A1', 'http://www.perl.com/'
|
49
|
-
worksheet.write('A3', 'http://www.perl.com/',
|
50
|
-
worksheet.write('A5', 'http://www.perl.com/',
|
41
|
+
worksheet.write('A1', 'http://www.perl.com/')
|
42
|
+
worksheet.write('A3', 'http://www.perl.com/', nil, str)
|
43
|
+
worksheet.write('A5', 'http://www.perl.com/', nil, str, tip)
|
51
44
|
worksheet.write('A7', 'http://www.perl.com/', red_format)
|
52
|
-
worksheet.write('A9', 'mailto:jmcnamara@cpan.org',
|
45
|
+
worksheet.write('A9', 'mailto:jmcnamara@cpan.org', nil, 'Mail me')
|
53
46
|
|
54
47
|
# Write a URL that isn't a hyperlink
|
55
48
|
worksheet.write_string('A11', 'http://www.perl.com/')
|
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
|
#
|
@@ -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
|
|
@@ -1938,26 +1875,6 @@ def write_rich(title, horiz) # :nodoc:
|
|
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
|
#
|