write_xlsx 0.54.0 → 0.55.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.
data/README.rdoc CHANGED
@@ -60,6 +60,9 @@ the first worksheet in an Excel XML spreadsheet called ruby.xlsx:
60
60
 
61
61
  == Recent change
62
62
 
63
+ 2013-02-09 v0.55.0
64
+ Added Sparklines.
65
+
63
66
  2013-02-07 v0.54.0
64
67
  Added font manipulation to Charts.
65
68
  Added number formats to Chart axes.
@@ -0,0 +1,62 @@
1
+ #!/usr/bin/env ruby
2
+ # -*- coding: utf-8 -*-
3
+
4
+ #######################################################################
5
+ #
6
+ # Example of how to add sparklines to an Excel::Writer::XLSX file.
7
+ #
8
+ # Sparklines are small charts that fit in a single cell and are
9
+ # used to show trends in data. See sparklines2.pl for examples
10
+ # of more complex sparkline formatting.
11
+ #
12
+ # reverse ('(c)'), November 2011, John McNamara, jmcnamara@cpan.org
13
+ # convert to ruby by Hideo NAKAMURA, cxn03651@msj.biglobe.ne.jp
14
+ #
15
+
16
+ require 'rubygems'
17
+ require 'write_xlsx'
18
+
19
+ workbook = WriteXLSX.new('sparklines1.xlsx')
20
+ worksheet = workbook.add_worksheet
21
+
22
+ # Some sample data to plot.
23
+ data = [
24
+ [ -2, 2, 3, -1, 0 ],
25
+ [ 30, 20, 33, 20, 15 ],
26
+ [ 1, -1, -1, 1, -1 ]
27
+ ]
28
+
29
+ # Write the sample data to the worksheet.
30
+ worksheet.write_col('A1', data)
31
+
32
+
33
+ # Add a line sparkline (the default) with markers.
34
+ worksheet.add_sparkline(
35
+ {
36
+ :location => 'F1',
37
+ :range => 'Sheet1!A1:E1',
38
+ :markers => 1
39
+ }
40
+ )
41
+
42
+ # Add a column sparkline with non-default style.
43
+ worksheet.add_sparkline(
44
+ {
45
+ :location => 'F2',
46
+ :range => 'Sheet1!A2:E2',
47
+ :type => 'column',
48
+ :style => 12
49
+ }
50
+ )
51
+
52
+ # Add a win/loss sparkline with negative values highlighted.
53
+ worksheet.add_sparkline(
54
+ {
55
+ :location => 'F3',
56
+ :range => 'Sheet1!A3:E3',
57
+ :type => 'win_loss',
58
+ :negative_points => 1
59
+ }
60
+ )
61
+
62
+ workbook.close
@@ -0,0 +1,391 @@
1
+ #!/usr/bin/env ruby
2
+ # -*- coding: utf-8 -*-
3
+
4
+ #######################################################################
5
+ #
6
+ # Example of how to add sparklines to an Excel::Writer::XLSX file.
7
+ #
8
+ # Sparklines are small charts that fit in a single cell and are
9
+ # used to show trends in data. This example shows the majority of
10
+ # options that can be applied to sparklines.
11
+ #
12
+ # reverse ('(c)'), November 2011, John McNamara, jmcnamara@cpan.org
13
+ # convert to ruby by Hideo NAKAMURA, cxn03651@msj.biglobe.ne.jp
14
+ #
15
+
16
+ require 'rubygems'
17
+ require 'write_xlsx'
18
+
19
+ workbook = WriteXLSX.new('sparklines2.xlsx')
20
+ worksheet1 = workbook.add_worksheet
21
+ worksheet2 = workbook.add_worksheet
22
+ bold = workbook.add_format(:bold => 1)
23
+ row = 1
24
+
25
+ # Set the columns widths to make the output clearer.
26
+ worksheet1.set_column('A:A', 14)
27
+ worksheet1.set_column('B:B', 50)
28
+ worksheet1.set_zoom(150)
29
+
30
+ # Headings.
31
+ worksheet1.write('A1', 'Sparkline', bold)
32
+ worksheet1.write('B1', 'Description', bold)
33
+
34
+ ###############################################################################
35
+ #
36
+ str = 'A default "line" sparkline.'
37
+
38
+ worksheet1.add_sparkline(
39
+ {
40
+ :location => 'A2',
41
+ :range => 'Sheet2!A1:J1'
42
+ }
43
+ )
44
+
45
+ worksheet1.write(row, 1, str)
46
+ row += 1
47
+
48
+ ###############################################################################
49
+ #
50
+ str = 'A default "column" sparkline.'
51
+
52
+ worksheet1.add_sparkline(
53
+ {
54
+ :location => 'A3',
55
+ :range => 'Sheet2!A2:J2',
56
+ :type => 'column'
57
+ }
58
+ )
59
+
60
+ worksheet1.write(row, 1, str)
61
+ row += 1
62
+
63
+ ###############################################################################
64
+ #
65
+ str = 'A default "win/loss" sparkline.'
66
+
67
+ worksheet1.add_sparkline(
68
+ {
69
+ :location => 'A4',
70
+ :range => 'Sheet2!A3:J3',
71
+ :type => 'win_loss'
72
+ }
73
+ )
74
+
75
+ worksheet1.write(row, 1, str)
76
+ row += 2
77
+
78
+ ###############################################################################
79
+ #
80
+ str = 'Line with markers.'
81
+
82
+ worksheet1.add_sparkline(
83
+ {
84
+ :location => 'A6',
85
+ :range => 'Sheet2!A1:J1',
86
+ :markers => 1
87
+ }
88
+ )
89
+
90
+ worksheet1.write(row, 1, str)
91
+ row += 1
92
+
93
+ ###############################################################################
94
+ #
95
+ str = 'Line with high and low points.'
96
+
97
+ worksheet1.add_sparkline(
98
+ {
99
+ :location => 'A7',
100
+ :range => 'Sheet2!A1:J1',
101
+ :high_point => 1,
102
+ :low_point => 1
103
+ }
104
+ )
105
+
106
+ worksheet1.write(row, 1, str)
107
+ row += 1
108
+
109
+ ###############################################################################
110
+ #
111
+ str = 'Line with first and last point markers.'
112
+
113
+ worksheet1.add_sparkline(
114
+ {
115
+ :location => 'A8',
116
+ :range => 'Sheet2!A1:J1',
117
+ :first_point => 1,
118
+ :last_point => 1
119
+ }
120
+ )
121
+
122
+ worksheet1.write(row, 1, str)
123
+ row += 1
124
+
125
+ ###############################################################################
126
+ #
127
+ str = 'Line with negative point markers.'
128
+
129
+ worksheet1.add_sparkline(
130
+ {
131
+ :location => 'A9',
132
+ :range => 'Sheet2!A1:J1',
133
+ :negative_points => 1
134
+ }
135
+ )
136
+
137
+ worksheet1.write(row, 1, str)
138
+ row += 1
139
+
140
+ ###############################################################################
141
+ #
142
+ str = 'Line with axis.'
143
+
144
+ worksheet1.add_sparkline(
145
+ {
146
+ :location => 'A10',
147
+ :range => 'Sheet2!A1:J1',
148
+ :axis => 1
149
+ }
150
+ )
151
+
152
+ worksheet1.write(row, 1, str)
153
+ row += 2
154
+
155
+ ###############################################################################
156
+ #
157
+ str = 'Column with default style (1).'
158
+
159
+ worksheet1.add_sparkline(
160
+ {
161
+ :location => 'A12',
162
+ :range => 'Sheet2!A2:J2',
163
+ :type => 'column'
164
+ }
165
+ )
166
+
167
+ worksheet1.write(row, 1, str)
168
+ row += 1
169
+
170
+ ###############################################################################
171
+ #
172
+ str = 'Column with style 2.'
173
+
174
+ worksheet1.add_sparkline(
175
+ {
176
+ :location => 'A13',
177
+ :range => 'Sheet2!A2:J2',
178
+ :type => 'column',
179
+ :style => 2
180
+ }
181
+ )
182
+
183
+ worksheet1.write(row, 1, str)
184
+ row += 1
185
+
186
+ ###############################################################################
187
+ #
188
+ str = 'Column with style 3.'
189
+
190
+ worksheet1.add_sparkline(
191
+ {
192
+ :location => 'A14',
193
+ :range => 'Sheet2!A2:J2',
194
+ :type => 'column',
195
+ :style => 3
196
+ }
197
+ )
198
+
199
+ worksheet1.write(row, 1, str)
200
+ row += 1
201
+
202
+ ###############################################################################
203
+ #
204
+ str = 'Column with style 4.'
205
+
206
+ worksheet1.add_sparkline(
207
+ {
208
+ :location => 'A15',
209
+ :range => 'Sheet2!A2:J2',
210
+ :type => 'column',
211
+ :style => 4
212
+ }
213
+ )
214
+
215
+ worksheet1.write(row, 1, str)
216
+ row += 1
217
+
218
+ ###############################################################################
219
+ #
220
+ str = 'Column with style 5.'
221
+
222
+ worksheet1.add_sparkline(
223
+ {
224
+ :location => 'A16',
225
+ :range => 'Sheet2!A2:J2',
226
+ :type => 'column',
227
+ :style => 5
228
+ }
229
+ )
230
+
231
+ worksheet1.write(row, 1, str)
232
+ row += 1
233
+
234
+ ###############################################################################
235
+ #
236
+ str = 'Column with style 6.'
237
+
238
+ worksheet1.add_sparkline(
239
+ {
240
+ :location => 'A17',
241
+ :range => 'Sheet2!A2:J2',
242
+ :type => 'column',
243
+ :style => 6
244
+ }
245
+ )
246
+
247
+ worksheet1.write(row, 1, str)
248
+ row += 1
249
+
250
+ ###############################################################################
251
+ #
252
+ str = 'Column with a user defined colour.'
253
+
254
+ worksheet1.add_sparkline(
255
+ {
256
+ :location => 'A18',
257
+ :range => 'Sheet2!A2:J2',
258
+ :type => 'column',
259
+ :series_color => '#E965E0'
260
+ }
261
+ )
262
+
263
+ worksheet1.write(row, 1, str)
264
+ row += 2
265
+
266
+ ###############################################################################
267
+ #
268
+ str = 'A win/loss sparkline.'
269
+
270
+ worksheet1.add_sparkline(
271
+ {
272
+ :location => 'A20',
273
+ :range => 'Sheet2!A3:J3',
274
+ :type => 'win_loss'
275
+ }
276
+ )
277
+
278
+ worksheet1.write(row, 1, str)
279
+ row += 1
280
+
281
+ ###############################################################################
282
+ #
283
+ str = 'A win/loss sparkline with negative points highlighted.'
284
+
285
+ worksheet1.add_sparkline(
286
+ {
287
+ :location => 'A21',
288
+ :range => 'Sheet2!A3:J3',
289
+ :type => 'win_loss',
290
+ :negative_points => 1
291
+ }
292
+ )
293
+
294
+ worksheet1.write(row, 1, str)
295
+ row += 2
296
+
297
+ ###############################################################################
298
+ #
299
+ str = 'A left to right column (the default).'
300
+
301
+ worksheet1.add_sparkline(
302
+ {
303
+ :location => 'A23',
304
+ :range => 'Sheet2!A4:J4',
305
+ :type => 'column',
306
+ :style => 20
307
+ }
308
+ )
309
+
310
+ worksheet1.write(row, 1, str)
311
+ row += 1
312
+
313
+ ###############################################################################
314
+ #
315
+ str = 'A right to left column.'
316
+
317
+ worksheet1.add_sparkline(
318
+ {
319
+ :location => 'A24',
320
+ :range => 'Sheet2!A4:J4',
321
+ :type => 'column',
322
+ :style => 20,
323
+ :reverse => 1
324
+ }
325
+ )
326
+
327
+ worksheet1.write(row, 1, str)
328
+ row += 1
329
+
330
+ ###############################################################################
331
+ #
332
+ str = 'Sparkline and text in one cell.'
333
+
334
+ worksheet1.add_sparkline(
335
+ {
336
+ :location => 'A25',
337
+ :range => 'Sheet2!A4:J4',
338
+ :type => 'column',
339
+ :style => 20
340
+ }
341
+ )
342
+
343
+ worksheet1.write(row, 0, 'Growth')
344
+ worksheet1.write(row, 1, str)
345
+ row += 2
346
+
347
+ ###############################################################################
348
+ #
349
+ str = 'A grouped sparkline. Changes are applied to all three.'
350
+
351
+ worksheet1.add_sparkline(
352
+ {
353
+ :location => [ 'A27', 'A28', 'A29' ],
354
+ :range => [ 'Sheet2!A5:J5', 'Sheet2!A6:J6', 'Sheet2!A7:J7' ],
355
+ :markers => 1
356
+ }
357
+ )
358
+
359
+ worksheet1.write(row, 1, str)
360
+ row += 1
361
+
362
+ ###############################################################################
363
+ #
364
+ # Create a second worksheet with data to plot.
365
+ #
366
+
367
+ worksheet2.set_column('A:J', 11)
368
+
369
+ data = [
370
+ # Simple line data.
371
+ [ -2, 2, 3, -1, 0, -2, 3, 2, 1, 0 ],
372
+
373
+ # Simple column data.
374
+ [ 30, 20, 33, 20, 15, 5, 5, 15, 10, 15 ],
375
+
376
+ # Simple win/loss data.
377
+ [ 1, 1, -1, -1, 1, -1, 1, 1, 1, -1 ],
378
+
379
+ # Unbalanced histogram.
380
+ [ 5, 6, 7, 10, 15, 20, 30, 50, 70, 100 ],
381
+
382
+ # Data for the grouped sparkline example.
383
+ [ -2, 2, 3, -1, 0, -2, 3, 2, 1, 0 ],
384
+ [ 3, -1, 0, -2, 3, 2, 1, 0, 2, 1 ],
385
+ [ 0, -2, 3, 2, 1, 0, 1, 2, 3, 1 ]
386
+ ]
387
+
388
+ # Write the sample data to the worksheet.
389
+ worksheet2.write_col('A1', data)
390
+
391
+ workbook.close