write_xlsx 0.64.1 → 0.65.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.rdoc +10 -1
- data/examples/conditional_format.rb +251 -18
- data/examples/demo.rb +2 -3
- data/examples/macros.rb +42 -0
- data/examples/outline_collapsed.rb +160 -0
- data/examples/republic.png +0 -0
- data/examples/shape3.rb +2 -2
- data/examples/shape4.rb +5 -5
- data/examples/shape5.rb +6 -6
- data/examples/shape6.rb +6 -6
- data/examples/shape7.rb +11 -11
- data/examples/shape8.rb +10 -10
- data/examples/shape_all.rb +0 -0
- data/examples/vbaProject.bin +0 -0
- data/lib/write_xlsx/chart.rb +656 -56
- data/lib/write_xlsx/chartsheet.rb +26 -2
- data/lib/write_xlsx/format.rb +50 -27
- data/lib/write_xlsx/formats.rb +32 -0
- data/lib/write_xlsx/package/packager.rb +45 -238
- data/lib/write_xlsx/package/table.rb +9 -18
- data/lib/write_xlsx/package/xml_writer_simple.rb +26 -9
- data/lib/write_xlsx/sheets.rb +223 -0
- data/lib/write_xlsx/sparkline.rb +140 -4
- data/lib/write_xlsx/version.rb +1 -1
- data/lib/write_xlsx/workbook.rb +34 -121
- data/lib/write_xlsx/worksheet/data_validation.rb +291 -0
- data/lib/write_xlsx/worksheet/hyperlink.rb +111 -0
- data/lib/write_xlsx/worksheet/page_setup.rb +170 -0
- data/lib/write_xlsx/worksheet.rb +1112 -1334
- data/test/helper.rb +1 -1
- data/test/package/styles/test_styles_01.rb +1 -10
- data/test/package/styles/test_styles_02.rb +1 -10
- data/test/package/styles/test_styles_03.rb +1 -10
- data/test/package/styles/test_styles_04.rb +1 -10
- data/test/package/styles/test_styles_05.rb +1 -10
- data/test/package/styles/test_styles_06.rb +1 -10
- data/test/package/styles/test_styles_07.rb +1 -10
- data/test/package/styles/test_styles_08.rb +1 -10
- data/test/package/styles/test_styles_09.rb +1 -10
- data/test/perl_output/conditional_format.xlsx +0 -0
- data/test/perl_output/outline_collapsed.xlsx +0 -0
- data/test/perl_output/protection.xlsx +0 -0
- data/test/regression/test_chart_gap01.rb +47 -0
- data/test/regression/test_chart_gap02.rb +47 -0
- data/test/regression/test_chart_gap03.rb +47 -0
- data/test/regression/test_format05.rb +26 -0
- data/test/regression/test_rich_string12.rb +32 -0
- data/test/regression/xlsx_files/chart_gap01.xlsx +0 -0
- data/test/regression/xlsx_files/chart_gap02.xlsx +0 -0
- data/test/regression/xlsx_files/chart_gap03.xlsx +0 -0
- data/test/regression/xlsx_files/format05.xlsx +0 -0
- data/test/regression/xlsx_files/rich_string12.xlsx +0 -0
- data/test/test_example_match.rb +253 -20
- data/test/worksheet/test_set_column.rb +25 -0
- data/test/worksheet/test_worksheet_03.rb +1 -1
- data/test/worksheet/test_worksheet_04.rb +1 -1
- data/test/worksheet/test_write_array_formula_01.rb +7 -0
- data/test/worksheet/test_write_col_breaks.rb +2 -2
- data/test/worksheet/test_write_col_info.rb +8 -8
- data/test/worksheet/test_write_conditional_formatting.rb +4 -4
- data/test/worksheet/test_write_formula_does_not_change_formula_string.rb +18 -0
- data/test/worksheet/test_write_header_footer.rb +8 -3
- data/test/worksheet/test_write_hyperlink.rb +10 -5
- data/test/worksheet/test_write_merge_cells.rb +6 -6
- data/test/worksheet/test_write_page_set_up_pr.rb +1 -1
- data/test/worksheet/test_write_page_setup.rb +1 -1
- 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_sheet_pr.rb +2 -2
- data/test/worksheet/test_write_sheet_view.rb +0 -9
- data/test/worksheet/test_write_url.rb +19 -0
- data/test/worksheet/test_write_worksheet_attributes.rb +21 -0
- metadata +38 -5
- data/lib/write_xlsx/worksheet/print_style.rb +0 -51
- data/test/worksheet/test_write_worksheet.rb +0 -19
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 30c458c96dc291036baa7b64c8099b044c10e18c
|
4
|
+
data.tar.gz: 589e734bee933c9ab1f0904f59ce69f101251159
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1865380215d25cfa2e16af387be17263669fb62bea666e75f10f1f2719450120eed303aaea7f457ac60514af0d323c8552409bfacdae573ae19b4349cb42c5f7
|
7
|
+
data.tar.gz: 645cd41d3b387e77448b97494ccd87f2f39a29a49b21202f699b99a776845ef0d159044283556ae57ef0d2b0ff5fcc6a35ab4390a6da205ef8c557d1b46db368
|
data/README.rdoc
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
= write_xlsx
|
2
2
|
|
3
|
-
gem to create a new file in the Excel 2007+ XLSX format, and you can use the same interface as writeexcel gem. write_xlsx is converted from Perl's module Excel::Writer::XLSX-0.
|
3
|
+
gem to create a new file in the Excel 2007+ XLSX format, and you can use the same interface as writeexcel gem. write_xlsx is converted from Perl's module Excel::Writer::XLSX-0.65, https://github.com/jmcnamara/excel-writer-xlsx .
|
4
4
|
|
5
5
|
== Description
|
6
6
|
|
@@ -75,6 +75,15 @@ the first worksheet in an Excel XML spreadsheet called ruby.xlsx:
|
|
75
75
|
workbook.close
|
76
76
|
|
77
77
|
== Recent change
|
78
|
+
2013-03-23 v0.65.0
|
79
|
+
Added options to format series Gap/Overlap for Bar/Column charts.
|
80
|
+
|
81
|
+
Bug fix in Worksheet#write_formula
|
82
|
+
(write_formula change original formula string)
|
83
|
+
|
84
|
+
Bug fix in Worksheet#set_column
|
85
|
+
(failure when parameter level is out of range)
|
86
|
+
|
78
87
|
2013-03-06 v0.64.1
|
79
88
|
Bug fix in handling utf-8 string under ruby 1.8.7
|
80
89
|
(examples/demo.rb failed under ruby 1.8.7)
|
@@ -6,6 +6,13 @@ require 'write_xlsx'
|
|
6
6
|
|
7
7
|
workbook = WriteXLSX.new('conditional_format.xlsx')
|
8
8
|
worksheet1 = workbook.add_worksheet
|
9
|
+
worksheet2 = workbook.add_worksheet
|
10
|
+
worksheet3 = workbook.add_worksheet
|
11
|
+
worksheet4 = workbook.add_worksheet
|
12
|
+
worksheet5 = workbook.add_worksheet
|
13
|
+
worksheet6 = workbook.add_worksheet
|
14
|
+
worksheet7 = workbook.add_worksheet
|
15
|
+
worksheet8 = workbook.add_worksheet
|
9
16
|
|
10
17
|
# Light red fill with dark red text.
|
11
18
|
format1 = workbook.add_format(
|
@@ -21,24 +28,24 @@ format2 = workbook.add_format(
|
|
21
28
|
|
22
29
|
# Some sample data to run the conditional formatting against.
|
23
30
|
data = [
|
24
|
-
[
|
25
|
-
[
|
26
|
-
[
|
27
|
-
[
|
28
|
-
[
|
29
|
-
[
|
30
|
-
[
|
31
|
-
[
|
32
|
-
[
|
33
|
-
[
|
31
|
+
[ 34, 72, 38, 30, 75, 48, 75, 66, 84, 86 ],
|
32
|
+
[ 6, 24, 1, 84, 54, 62, 60, 3, 26, 59 ],
|
33
|
+
[ 28, 79, 97, 13, 85, 93, 93, 22, 5, 14 ],
|
34
|
+
[ 27, 71, 40, 17, 18, 79, 90, 93, 29, 47 ],
|
35
|
+
[ 88, 25, 33, 23, 67, 1, 59, 79, 47, 36 ],
|
36
|
+
[ 24, 100, 20, 88, 29, 33, 38, 54, 54, 88 ],
|
37
|
+
[ 6, 57, 88, 28, 10, 26, 37, 7, 41, 48 ],
|
38
|
+
[ 52, 78, 1, 96, 26, 45, 47, 33, 96, 36 ],
|
39
|
+
[ 60, 54, 81, 66, 81, 90, 80, 93, 12, 55 ],
|
40
|
+
[ 70, 5, 46, 14, 71, 19, 66, 36, 41, 21 ]
|
34
41
|
]
|
35
42
|
|
36
|
-
|
37
|
-
#
|
38
|
-
#
|
39
|
-
|
43
|
+
###############################################################################
|
44
|
+
#
|
45
|
+
# Example 1.
|
46
|
+
#
|
40
47
|
caption = 'Cells with values >= 50 are in light red. ' +
|
41
|
-
|
48
|
+
'Values < 50 are in light green.'
|
42
49
|
|
43
50
|
# Write the data.
|
44
51
|
worksheet1.write('A1', caption)
|
@@ -48,9 +55,9 @@ worksheet1.write_col('B3', data)
|
|
48
55
|
worksheet1.conditional_formatting('B3:K12',
|
49
56
|
{
|
50
57
|
:type => 'cell',
|
51
|
-
:format => format1,
|
52
58
|
:criteria => '>=',
|
53
|
-
:value => 50
|
59
|
+
:value => 50,
|
60
|
+
:format => format1
|
54
61
|
}
|
55
62
|
)
|
56
63
|
|
@@ -58,9 +65,235 @@ worksheet1.conditional_formatting('B3:K12',
|
|
58
65
|
worksheet1.conditional_formatting('B3:K12',
|
59
66
|
{
|
60
67
|
:type => 'cell',
|
68
|
+
:criteria => '<',
|
69
|
+
:value => 50,
|
70
|
+
:format => format2
|
71
|
+
}
|
72
|
+
)
|
73
|
+
|
74
|
+
|
75
|
+
###############################################################################
|
76
|
+
#
|
77
|
+
# Example 2.
|
78
|
+
#
|
79
|
+
caption = 'Values between 30 and 70 are in light red. ' +
|
80
|
+
'Values outside that range are in light green.'
|
81
|
+
|
82
|
+
worksheet2.write('A1', caption)
|
83
|
+
worksheet2.write_col('B3', data)
|
84
|
+
|
85
|
+
worksheet2.conditional_formatting('B3:K12',
|
86
|
+
{
|
87
|
+
:type => 'cell',
|
88
|
+
:criteria => 'between',
|
89
|
+
:minimum => 30,
|
90
|
+
:maximum => 70,
|
91
|
+
:format => format1
|
92
|
+
}
|
93
|
+
)
|
94
|
+
|
95
|
+
worksheet2.conditional_formatting('B3:K12',
|
96
|
+
{
|
97
|
+
:type => 'cell',
|
98
|
+
:criteria => 'not between',
|
99
|
+
:minimum => 30,
|
100
|
+
:maximum => 70,
|
101
|
+
:format => format2
|
102
|
+
}
|
103
|
+
)
|
104
|
+
|
105
|
+
|
106
|
+
###############################################################################
|
107
|
+
#
|
108
|
+
# Example 3.
|
109
|
+
#
|
110
|
+
caption = 'Duplicate values are in light red. ' +
|
111
|
+
'Unique values are in light green.'
|
112
|
+
|
113
|
+
worksheet3.write('A1', caption)
|
114
|
+
worksheet3.write_col('B3', data)
|
115
|
+
|
116
|
+
worksheet3.conditional_formatting('B3:K12',
|
117
|
+
{
|
118
|
+
:type => 'duplicate',
|
119
|
+
:format => format1,
|
120
|
+
}
|
121
|
+
)
|
122
|
+
|
123
|
+
worksheet3.conditional_formatting('B3:K12',
|
124
|
+
{
|
125
|
+
:type => 'unique',
|
61
126
|
:format => format2,
|
127
|
+
}
|
128
|
+
)
|
129
|
+
|
130
|
+
|
131
|
+
###############################################################################
|
132
|
+
#
|
133
|
+
# Example 4.
|
134
|
+
#
|
135
|
+
caption = 'Above average values are in light red. ' +
|
136
|
+
'Below average values are in light green.'
|
137
|
+
|
138
|
+
worksheet4.write('A1', caption)
|
139
|
+
worksheet4.write_col('B3', data)
|
140
|
+
|
141
|
+
worksheet4.conditional_formatting('B3:K12',
|
142
|
+
{
|
143
|
+
:type => 'average',
|
144
|
+
:criteria => 'above',
|
145
|
+
:format => format1
|
146
|
+
}
|
147
|
+
)
|
148
|
+
|
149
|
+
worksheet4.conditional_formatting('B3:K12',
|
150
|
+
{
|
151
|
+
:type => 'average',
|
152
|
+
:criteria => 'below',
|
153
|
+
:format => format2
|
154
|
+
}
|
155
|
+
)
|
156
|
+
|
157
|
+
|
158
|
+
###############################################################################
|
159
|
+
#
|
160
|
+
# Example 5.
|
161
|
+
#
|
162
|
+
caption = 'Top 10 values are in light red. ' +
|
163
|
+
'Bottom 10 values are in light green.'
|
164
|
+
|
165
|
+
worksheet5.write('A1', caption)
|
166
|
+
worksheet5.write_col('B3', data)
|
167
|
+
|
168
|
+
worksheet5.conditional_formatting('B3:K12',
|
169
|
+
{
|
170
|
+
:type => 'top',
|
171
|
+
:value => '10',
|
172
|
+
:format => format1
|
173
|
+
}
|
174
|
+
)
|
175
|
+
|
176
|
+
worksheet5.conditional_formatting('B3:K12',
|
177
|
+
{
|
178
|
+
:type => 'bottom',
|
179
|
+
:value => '10',
|
180
|
+
:format => format2
|
181
|
+
}
|
182
|
+
)
|
183
|
+
|
184
|
+
|
185
|
+
###############################################################################
|
186
|
+
#
|
187
|
+
# Example 6.
|
188
|
+
#
|
189
|
+
caption = 'Cells with values >= 50 are in light red. ' +
|
190
|
+
'Values < 50 are in light green. Non-contiguous ranges.'
|
191
|
+
|
192
|
+
# Write the data.
|
193
|
+
worksheet6.write('A1', caption)
|
194
|
+
worksheet6.write_col('B3', data)
|
195
|
+
|
196
|
+
# Write a conditional format over a range.
|
197
|
+
worksheet6.conditional_formatting('B3:K6,B9:K12',
|
198
|
+
{
|
199
|
+
:type => 'cell',
|
200
|
+
:criteria => '>=',
|
201
|
+
:value => 50,
|
202
|
+
:format => format1
|
203
|
+
}
|
204
|
+
)
|
205
|
+
|
206
|
+
# Write another conditional format over the same range.
|
207
|
+
worksheet6.conditional_formatting('B3:K6,B9:K12',
|
208
|
+
{
|
209
|
+
:type => 'cell',
|
62
210
|
:criteria => '<',
|
63
|
-
:value => 50
|
211
|
+
:value => 50,
|
212
|
+
:format => format2
|
213
|
+
}
|
214
|
+
)
|
215
|
+
|
216
|
+
|
217
|
+
###############################################################################
|
218
|
+
#
|
219
|
+
# Example 7.
|
220
|
+
#
|
221
|
+
caption = 'Examples of color scales and data bars. Default colors.'
|
222
|
+
|
223
|
+
data = 1 .. 12
|
224
|
+
|
225
|
+
worksheet7.write('A1', caption)
|
226
|
+
|
227
|
+
worksheet7.write('B2', "2 Color Scale")
|
228
|
+
worksheet7.write_col('B3', data)
|
229
|
+
|
230
|
+
worksheet7.write('D2', "3 Color Scale")
|
231
|
+
worksheet7.write_col('D3', data)
|
232
|
+
|
233
|
+
worksheet7.write('F2', "Data Bars")
|
234
|
+
worksheet7.write_col('F3', data)
|
235
|
+
|
236
|
+
|
237
|
+
worksheet7.conditional_formatting('B3:B14',
|
238
|
+
{
|
239
|
+
:type => '2_color_scale'
|
240
|
+
}
|
241
|
+
)
|
242
|
+
|
243
|
+
worksheet7.conditional_formatting('D3:D14',
|
244
|
+
{
|
245
|
+
:type => '3_color_scale'
|
246
|
+
}
|
247
|
+
)
|
248
|
+
|
249
|
+
worksheet7.conditional_formatting('F3:F14',
|
250
|
+
{
|
251
|
+
:type => 'data_bar'
|
252
|
+
}
|
253
|
+
)
|
254
|
+
|
255
|
+
|
256
|
+
###############################################################################
|
257
|
+
#
|
258
|
+
# Example 8.
|
259
|
+
#
|
260
|
+
caption = 'Examples of color scales and data bars. Modified colors.'
|
261
|
+
|
262
|
+
data = 1 .. 12
|
263
|
+
|
264
|
+
worksheet8.write('A1', caption)
|
265
|
+
|
266
|
+
worksheet8.write('B2', "2 Color Scale")
|
267
|
+
worksheet8.write_col('B3', data)
|
268
|
+
|
269
|
+
worksheet8.write('D2', "3 Color Scale")
|
270
|
+
worksheet8.write_col('D3', data)
|
271
|
+
|
272
|
+
worksheet8.write('F2', "Data Bars")
|
273
|
+
worksheet8.write_col('F3', data)
|
274
|
+
|
275
|
+
|
276
|
+
worksheet8.conditional_formatting('B3:B14',
|
277
|
+
{
|
278
|
+
:type => '2_color_scale',
|
279
|
+
:min_color => "#FF0000",
|
280
|
+
:max_color => "#00FF00"
|
281
|
+
}
|
282
|
+
)
|
283
|
+
|
284
|
+
worksheet8.conditional_formatting('D3:D14',
|
285
|
+
{
|
286
|
+
:type => '3_color_scale',
|
287
|
+
:min_color => "#C5D9F1",
|
288
|
+
:mid_color => "#8DB4E3",
|
289
|
+
:max_color => "#538ED5"
|
290
|
+
}
|
291
|
+
)
|
292
|
+
|
293
|
+
worksheet8.conditional_formatting('F3:F14',
|
294
|
+
{
|
295
|
+
:type => 'data_bar',
|
296
|
+
:bar_color => '#63C384'
|
64
297
|
}
|
65
298
|
)
|
66
299
|
|
data/examples/demo.rb
CHANGED
@@ -88,9 +88,8 @@ worksheet.write('B9', 'http://www.ruby-lang.org/', hyperlink_format)
|
|
88
88
|
#
|
89
89
|
# Images
|
90
90
|
#
|
91
|
-
|
92
|
-
|
93
|
-
#worksheet.insert_image('B10', 'republic.png', 16, 8)
|
91
|
+
worksheet.write('A10', "Images")
|
92
|
+
worksheet.insert_image('B10', 'republic.png', 16, 8)
|
94
93
|
|
95
94
|
|
96
95
|
#######################################################################
|
data/examples/macros.rb
ADDED
@@ -0,0 +1,42 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# -*- coding: utf-8 -*-
|
3
|
+
|
4
|
+
#######################################################################
|
5
|
+
#
|
6
|
+
# An example of adding macros to an WriteXLSX file using VBA project file
|
7
|
+
# extracted from an existing Excel xlsm file.
|
8
|
+
#
|
9
|
+
# The +extract_vba.rb+ utility supplied with WriteXLSX can be used to extract
|
10
|
+
# the vbaProject.bin file.
|
11
|
+
#
|
12
|
+
# An embedded macro is connected to a form button on the worksheet.
|
13
|
+
#
|
14
|
+
# reverse(c), November 2012, John McNamara, jmcnamara@cpan.org
|
15
|
+
# convert to ruby by Hideo NAKAMURA, cxn03651@msj.biglobe.ne.jp
|
16
|
+
#
|
17
|
+
|
18
|
+
require 'rubygems'
|
19
|
+
require 'write_xlsx'
|
20
|
+
|
21
|
+
# Note the file extension should be .xlsm.
|
22
|
+
workbook = WriteXLSX.new('macros.xlsm')
|
23
|
+
worksheet = workbook.add_worksheet
|
24
|
+
|
25
|
+
worksheet.set_column('A:A', 30)
|
26
|
+
|
27
|
+
# Add the VBA project binary.
|
28
|
+
workbook.add_vba_project('./vbaProject.bin')
|
29
|
+
|
30
|
+
# Show text for the end user.
|
31
|
+
worksheet.write('A3', 'Press the button to say hello.')
|
32
|
+
|
33
|
+
# Add a button tied to a macro in the VBA project.
|
34
|
+
worksheet.insert_button(
|
35
|
+
'B3',
|
36
|
+
:macro => 'say_hello',
|
37
|
+
:caption => 'Press Me',
|
38
|
+
:width => 80,
|
39
|
+
:height => 30
|
40
|
+
)
|
41
|
+
|
42
|
+
workbook.close
|
@@ -0,0 +1,160 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# -*- coding: utf-8 -*-
|
3
|
+
|
4
|
+
#
|
5
|
+
# Example of how to use Excel::Writer::XLSX to generate Excel outlines and
|
6
|
+
# grouping.
|
7
|
+
#
|
8
|
+
# These examples focus mainly on collapsed outlines. See also the
|
9
|
+
# outlines.pl example program for more general examples.
|
10
|
+
#
|
11
|
+
# reverse ('(c)'), March 2008, John McNamara, jmcnamara@cpan.org
|
12
|
+
# convert to ruby by Hideo NAKAMURA, cxn03651@msj.biglobe.ne.jp
|
13
|
+
#
|
14
|
+
|
15
|
+
require 'rubygems'
|
16
|
+
require 'write_xlsx'
|
17
|
+
|
18
|
+
# Create a new workbook and add some worksheets
|
19
|
+
workbook = WriteXLSX.new('outline.xlsx')
|
20
|
+
worksheet1 = workbook.add_worksheet('Outlined Rows')
|
21
|
+
worksheet2 = workbook.add_worksheet('Collapsed Rows 1')
|
22
|
+
worksheet3 = workbook.add_worksheet('Collapsed Rows 2')
|
23
|
+
worksheet4 = workbook.add_worksheet('Collapsed Rows 3')
|
24
|
+
worksheet5 = workbook.add_worksheet('Outline Columns')
|
25
|
+
worksheet6 = workbook.add_worksheet('Collapsed Columns')
|
26
|
+
|
27
|
+
# Add a general format
|
28
|
+
bold = workbook.add_format(:bold => 1)
|
29
|
+
|
30
|
+
###############################################################################
|
31
|
+
#
|
32
|
+
# Example 1: Create a worksheet with outlined rows. It also includes SUBTOTAL()
|
33
|
+
# functions so that it looks like the type of automatic outlines that are
|
34
|
+
# generated when you use the Excel Data->SubTotals menu item.
|
35
|
+
#
|
36
|
+
|
37
|
+
# The syntax is: set_row(row, height, XF, hidden, level, collapsed)
|
38
|
+
worksheet1.set_row(1, nil, nil, 0, 2)
|
39
|
+
worksheet1.set_row(2, nil, nil, 0, 2)
|
40
|
+
worksheet1.set_row(3, nil, nil, 0, 2)
|
41
|
+
worksheet1.set_row(4, nil, nil, 0, 2)
|
42
|
+
worksheet1.set_row(5, nil, nil, 0, 1)
|
43
|
+
|
44
|
+
worksheet1.set_row(6, nil, nil, 0, 2)
|
45
|
+
worksheet1.set_row(7, nil, nil, 0, 2)
|
46
|
+
worksheet1.set_row(8, nil, nil, 0, 2)
|
47
|
+
worksheet1.set_row(9, nil, nil, 0, 2)
|
48
|
+
worksheet1.set_row(10, nil, nil, 0, 1)
|
49
|
+
|
50
|
+
# Write the sub-total data that is common to the row examples.
|
51
|
+
create_sub_totals(worksheet1, bold)
|
52
|
+
|
53
|
+
###############################################################################
|
54
|
+
#
|
55
|
+
# Example 2: Create a worksheet with collapsed outlined rows.
|
56
|
+
# This is the same as the example 1 except that the all rows are collapsed.
|
57
|
+
# Note: We need to indicate the row that contains the collapsed symbol '+' with
|
58
|
+
# the optional parameter, collapsed.
|
59
|
+
|
60
|
+
worksheet2.set_row(1, nil, nil, 1, 2)
|
61
|
+
worksheet2.set_row(2, nil, nil, 1, 2)
|
62
|
+
worksheet2.set_row(3, nil, nil, 1, 2)
|
63
|
+
worksheet2.set_row(4, nil, nil, 1, 2)
|
64
|
+
worksheet2.set_row(5, nil, nil, 1, 1)
|
65
|
+
|
66
|
+
worksheet2.set_row(6, nil, nil, 1, 2)
|
67
|
+
worksheet2.set_row(7, nil, nil, 1, 2)
|
68
|
+
worksheet2.set_row(8, nil, nil, 1, 2)
|
69
|
+
worksheet2.set_row(9, nil, nil, 1, 2)
|
70
|
+
worksheet2.set_row(10, nil, nil, 1, 1)
|
71
|
+
|
72
|
+
worksheet2.set_row(11, nil, nil, 0, 0, 1)
|
73
|
+
|
74
|
+
# Write the sub-total data that is common to the row examples.
|
75
|
+
create_sub_totals(worksheet2, bold)
|
76
|
+
|
77
|
+
###############################################################################
|
78
|
+
#
|
79
|
+
# Example 3: Create a worksheet with collapsed outlined rows.
|
80
|
+
# Same as the example 1 except that the two sub-totals are collapsed.
|
81
|
+
|
82
|
+
worksheet3.set_row(1, nil, nil, 1, 2)
|
83
|
+
worksheet3.set_row(2, nil, nil, 1, 2)
|
84
|
+
worksheet3.set_row(3, nil, nil, 1, 2)
|
85
|
+
worksheet3.set_row(4, nil, nil, 1, 2)
|
86
|
+
worksheet3.set_row(5, nil, nil, 0, 1, 1)
|
87
|
+
|
88
|
+
worksheet3.set_row(6, nil, nil, 1, 2)
|
89
|
+
worksheet3.set_row(7, nil, nil, 1, 2)
|
90
|
+
worksheet3.set_row(8, nil, nil, 1, 2)
|
91
|
+
worksheet3.set_row(9, nil, nil, 1, 2)
|
92
|
+
worksheet3.set_row(10, nil, nil, 0, 1, 1)
|
93
|
+
|
94
|
+
# Write the sub-total data that is common to the row examples.
|
95
|
+
create_sub_totals(worksheet3, bold)
|
96
|
+
|
97
|
+
###############################################################################
|
98
|
+
#
|
99
|
+
# Example 4: Create a worksheet with outlined rows.
|
100
|
+
# Same as the example 1 except that the two sub-totals are collapsed.
|
101
|
+
|
102
|
+
worksheet4.set_row(1, nil, nil, 1, 2)
|
103
|
+
worksheet4.set_row(2, nil, nil, 1, 2)
|
104
|
+
worksheet4.set_row(3, nil, nil, 1, 2)
|
105
|
+
worksheet4.set_row(4, nil, nil, 1, 2)
|
106
|
+
worksheet4.set_row(5, nil, nil, 1, 1, 1)
|
107
|
+
|
108
|
+
worksheet4.set_row(6, nil, nil, 1, 2)
|
109
|
+
worksheet4.set_row(7, nil, nil, 1, 2)
|
110
|
+
worksheet4.set_row(8, nil, nil, 1, 2)
|
111
|
+
worksheet4.set_row(9, nil, nil, 1, 2)
|
112
|
+
worksheet4.set_row(10, nil, nil, 1, 1, 1)
|
113
|
+
|
114
|
+
worksheet4.set_row(11, nil, nil, 0, 0, 1)
|
115
|
+
|
116
|
+
# Write the sub-total data that is common to the row examples.
|
117
|
+
create_sub_totals(worksheet4, bold)
|
118
|
+
|
119
|
+
###############################################################################
|
120
|
+
#
|
121
|
+
# Example 5: Create a worksheet with outlined columns.
|
122
|
+
#
|
123
|
+
data = [
|
124
|
+
[ 'Month', 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Total' ],
|
125
|
+
[ 'North', 50, 20, 15, 25, 65, 80, '=SUM(B2:G2)' ],
|
126
|
+
[ 'South', 10, 20, 30, 50, 50, 50, '=SUM(B3:G3)' ],
|
127
|
+
[ 'East', 45, 75, 50, 15, 75, 100, '=SUM(B4:G4)' ],
|
128
|
+
[ 'West', 15, 15, 55, 35, 20, 50, '=SUM(B5:G6)' ]
|
129
|
+
]
|
130
|
+
|
131
|
+
# Add bold format to the first row
|
132
|
+
worksheet5.set_row(0, nil, bold)
|
133
|
+
|
134
|
+
# Syntax: set_column(col1, col2, width, XF, hidden, level, collapsed)
|
135
|
+
worksheet5.set_column('A:A', 10, bold)
|
136
|
+
worksheet5.set_column('B:G', 5, nil, 0, 1)
|
137
|
+
worksheet5.set_column('H:H', 10)
|
138
|
+
|
139
|
+
# Write the data and a formula
|
140
|
+
worksheet5.write_col('A1', data)
|
141
|
+
worksheet5.write('H6', '=SUM(H2:H5)', bold)
|
142
|
+
|
143
|
+
###############################################################################
|
144
|
+
#
|
145
|
+
# Example 6: Create a worksheet with collapsed outlined columns.
|
146
|
+
# This is the same as the previous example except collapsed columns.
|
147
|
+
|
148
|
+
# Add bold format to the first row
|
149
|
+
worksheet6.set_row(0, nil, bold)
|
150
|
+
|
151
|
+
# Syntax: set_column(col1, col2, width, XF, hidden, level, collapsed)
|
152
|
+
worksheet6.set_column('A:A', 10, bold)
|
153
|
+
worksheet6.set_column('B:G', 5, nil, 1, 1)
|
154
|
+
worksheet6.set_column('H:H', 10, nil, 0, 0, 1)
|
155
|
+
|
156
|
+
# Write the data and a formula
|
157
|
+
worksheet6.write_col('A1', data)
|
158
|
+
worksheet6.write('H6', '=SUM(H2:H5)', bold)
|
159
|
+
|
160
|
+
workbook.close
|
Binary file
|
data/examples/shape3.rb
CHANGED
@@ -25,8 +25,8 @@ normal = workbook.add_shape(
|
|
25
25
|
)
|
26
26
|
|
27
27
|
worksheet.insert_shape('A1', normal, 50, 50)
|
28
|
-
normal
|
29
|
-
normal
|
28
|
+
normal.text = 'Scaled 3w x 2h'
|
29
|
+
normal.name = 'Hope'
|
30
30
|
worksheet.insert_shape('A1', normal, 250, 50, 3, 2)
|
31
31
|
|
32
32
|
workbook.close
|
data/examples/shape4.rb
CHANGED
@@ -29,8 +29,8 @@ shape = workbook.add_shape(
|
|
29
29
|
# Change the last 5 rectangles to stars. Previously
|
30
30
|
# inserted shapes stay as rectangles.
|
31
31
|
type = 'star5' if n == 6
|
32
|
-
shape
|
33
|
-
shape
|
32
|
+
shape.type = type
|
33
|
+
shape.text = "#{type} #{n}"
|
34
34
|
worksheet.insert_shape('A1', shape, n * 100, 50)
|
35
35
|
end
|
36
36
|
|
@@ -42,14 +42,14 @@ stencil = workbook.add_shape(
|
|
42
42
|
)
|
43
43
|
worksheet.insert_shape('A1', stencil, 100, 150)
|
44
44
|
|
45
|
-
stencil
|
45
|
+
stencil.stencil = 0
|
46
46
|
worksheet.insert_shape('A1', stencil, 200, 150)
|
47
47
|
worksheet.insert_shape('A1', stencil, 300, 150)
|
48
48
|
|
49
49
|
# Ooopa! Changed my mind.
|
50
50
|
# Change the rectangle to an ellipse (circle),
|
51
51
|
# for the last two shapes.
|
52
|
-
stencil
|
53
|
-
stencil
|
52
|
+
stencil.type = 'ellipse'
|
53
|
+
stencil.text = 'Now its a circle'
|
54
54
|
|
55
55
|
workbook.close
|
data/examples/shape5.rb
CHANGED
@@ -34,14 +34,14 @@ worksheet.insert_shape('A1', s2, 250, 200)
|
|
34
34
|
cxn_shape = workbook.add_shape(:type => 'bentConnector3')
|
35
35
|
|
36
36
|
# Link the start of the connector to the right side.
|
37
|
-
cxn_shape
|
38
|
-
cxn_shape
|
39
|
-
cxn_shape
|
37
|
+
cxn_shape.start = s1.id
|
38
|
+
cxn_shape.start_index = 4 # 4th connection pt, clockwise from top(0).
|
39
|
+
cxn_shape.start_side = 'b' # r)ight or b)ottom.
|
40
40
|
|
41
41
|
# Link the end of the connector to the left side.
|
42
|
-
cxn_shape
|
43
|
-
cxn_shape
|
44
|
-
cxn_shape
|
42
|
+
cxn_shape.end = s2.id
|
43
|
+
cxn_shape.end_index = 0 # clockwise from top(0).
|
44
|
+
cxn_shape.end_side = 't' # t)op.
|
45
45
|
|
46
46
|
worksheet.insert_shape('A1', cxn_shape, 0, 0)
|
47
47
|
|
data/examples/shape6.rb
CHANGED
@@ -34,14 +34,14 @@ worksheet.insert_shape('A1', s2, 250, 200)
|
|
34
34
|
cxn_shape = workbook.add_shape(:type => 'curvedConnector3')
|
35
35
|
|
36
36
|
# Link the start of the connector to the right side.
|
37
|
-
cxn_shape
|
38
|
-
cxn_shape
|
39
|
-
cxn_shape
|
37
|
+
cxn_shape.start = s1.id
|
38
|
+
cxn_shape.start_index = 2 # 2nd connection pt, clockwise from top(0).
|
39
|
+
cxn_shape.start_side = 'r' # r)ight or b)ottom.
|
40
40
|
|
41
41
|
# Link the end of the connector to the left side.
|
42
|
-
cxn_shape
|
43
|
-
cxn_shape
|
44
|
-
cxn_shape
|
42
|
+
cxn_shape.end = s2.id
|
43
|
+
cxn_shape.end_index = 4 # 4th connection pt, clockwise from top(0).
|
44
|
+
cxn_shape.end_side = 'l' # l)eft or t)op.
|
45
45
|
|
46
46
|
worksheet.insert_shape('A1', cxn_shape, 0, 0)
|
47
47
|
|
data/examples/shape7.rb
CHANGED
@@ -47,28 +47,28 @@ plus = workbook.add_shape(
|
|
47
47
|
p1 = worksheet.insert_shape('A1', plus, 350, 350)
|
48
48
|
p2 = worksheet.insert_shape('A1', plus, 150, 350)
|
49
49
|
p3 = worksheet.insert_shape('A1', plus, 350, 150)
|
50
|
-
plus
|
50
|
+
plus.adjustments = 35 # change shape of plus symbol.
|
51
51
|
p4 = worksheet.insert_shape('A1', plus, 150, 150)
|
52
52
|
|
53
53
|
cxn_shape = workbook.add_shape(:type => 'bentConnector3', :fill => 0)
|
54
54
|
|
55
|
-
cxn_shape
|
56
|
-
cxn_shape
|
57
|
-
cxn_shape
|
55
|
+
cxn_shape.start = ellipse.id
|
56
|
+
cxn_shape.start_index = 4 # 4th connection pt, clockwise from top(0).
|
57
|
+
cxn_shape.start_side = 'b' # r)ight or b)ottom.
|
58
58
|
|
59
|
-
cxn_shape
|
60
|
-
cxn_shape
|
61
|
-
cxn_shape
|
59
|
+
cxn_shape.end = p1.id
|
60
|
+
cxn_shape.end_index = 0
|
61
|
+
cxn_shape.end_side = 't' # l)eft or t)op.
|
62
62
|
worksheet.insert_shape('A1', cxn_shape, 0, 0)
|
63
63
|
|
64
|
-
cxn_shape
|
64
|
+
cxn_shape.end = p2.id
|
65
65
|
worksheet.insert_shape('A1', cxn_shape, 0, 0)
|
66
66
|
|
67
|
-
cxn_shape
|
67
|
+
cxn_shape.end = p3.id
|
68
68
|
worksheet.insert_shape('A1', cxn_shape, 0, 0)
|
69
69
|
|
70
|
-
cxn_shape
|
71
|
-
cxn_shape
|
70
|
+
cxn_shape.end = p4.id
|
71
|
+
cxn_shape.adjustments = [-50, 45, 120]
|
72
72
|
worksheet.insert_shape('A1', cxn_shape, 0, 0)
|
73
73
|
|
74
74
|
workbook.close
|