ricardoo27-writeexcel 0.6.12.1

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.
Files changed (245) hide show
  1. data/.document +5 -0
  2. data/.gitattributes +1 -0
  3. data/README.rdoc +136 -0
  4. data/Rakefile +52 -0
  5. data/VERSION +1 -0
  6. data/charts/chartex.rb +316 -0
  7. data/charts/demo1.rb +46 -0
  8. data/charts/demo101.bin +0 -0
  9. data/charts/demo2.rb +65 -0
  10. data/charts/demo201.bin +0 -0
  11. data/charts/demo3.rb +117 -0
  12. data/charts/demo301.bin +0 -0
  13. data/charts/demo4.rb +119 -0
  14. data/charts/demo401.bin +0 -0
  15. data/charts/demo5.rb +48 -0
  16. data/charts/demo501.bin +0 -0
  17. data/examples/a_simple.rb +43 -0
  18. data/examples/autofilter.rb +265 -0
  19. data/examples/bigfile.rb +30 -0
  20. data/examples/chart_area.rb +121 -0
  21. data/examples/chart_bar.rb +120 -0
  22. data/examples/chart_column.rb +120 -0
  23. data/examples/chart_line.rb +120 -0
  24. data/examples/chart_pie.rb +108 -0
  25. data/examples/chart_scatter.rb +121 -0
  26. data/examples/chart_stock.rb +148 -0
  27. data/examples/chess.rb +142 -0
  28. data/examples/colors.rb +129 -0
  29. data/examples/comments1.rb +27 -0
  30. data/examples/comments2.rb +352 -0
  31. data/examples/copyformat.rb +52 -0
  32. data/examples/data_validate.rb +279 -0
  33. data/examples/date_time.rb +87 -0
  34. data/examples/defined_name.rb +32 -0
  35. data/examples/demo.rb +124 -0
  36. data/examples/diag_border.rb +36 -0
  37. data/examples/formats.rb +490 -0
  38. data/examples/formula_result.rb +30 -0
  39. data/examples/header.rb +137 -0
  40. data/examples/hide_sheet.rb +29 -0
  41. data/examples/hyperlink.rb +43 -0
  42. data/examples/images.rb +63 -0
  43. data/examples/indent.rb +31 -0
  44. data/examples/merge1.rb +40 -0
  45. data/examples/merge2.rb +45 -0
  46. data/examples/merge3.rb +66 -0
  47. data/examples/merge4.rb +83 -0
  48. data/examples/merge5.rb +80 -0
  49. data/examples/merge6.rb +67 -0
  50. data/examples/outline.rb +255 -0
  51. data/examples/outline_collapsed.rb +209 -0
  52. data/examples/panes.rb +113 -0
  53. data/examples/password_protection.rb +33 -0
  54. data/examples/properties.rb +34 -0
  55. data/examples/properties_jp.rb +33 -0
  56. data/examples/protection.rb +47 -0
  57. data/examples/regions.rb +53 -0
  58. data/examples/repeat.rb +43 -0
  59. data/examples/republic.png +0 -0
  60. data/examples/right_to_left.rb +27 -0
  61. data/examples/row_wrap.rb +53 -0
  62. data/examples/set_first_sheet.rb +14 -0
  63. data/examples/stats.rb +74 -0
  64. data/examples/stocks.rb +81 -0
  65. data/examples/store_formula.rb +15 -0
  66. data/examples/tab_colors.rb +31 -0
  67. data/examples/utf8.rb +15 -0
  68. data/examples/write_arrays.rb +83 -0
  69. data/html/en/doc_en.html +5946 -0
  70. data/html/images/a_simple.jpg +0 -0
  71. data/html/images/area1.jpg +0 -0
  72. data/html/images/bar1.jpg +0 -0
  73. data/html/images/chart_area.xls +0 -0
  74. data/html/images/column1.jpg +0 -0
  75. data/html/images/data_validation.jpg +0 -0
  76. data/html/images/line1.jpg +0 -0
  77. data/html/images/pie1.jpg +0 -0
  78. data/html/images/regions.jpg +0 -0
  79. data/html/images/scatter1.jpg +0 -0
  80. data/html/images/stats.jpg +0 -0
  81. data/html/images/stock1.jpg +0 -0
  82. data/html/images/stocks.jpg +0 -0
  83. data/html/index.html +16 -0
  84. data/html/style.css +433 -0
  85. data/lib/writeexcel.rb +1159 -0
  86. data/lib/writeexcel/biffwriter.rb +223 -0
  87. data/lib/writeexcel/caller_info.rb +12 -0
  88. data/lib/writeexcel/cell_range.rb +332 -0
  89. data/lib/writeexcel/chart.rb +1968 -0
  90. data/lib/writeexcel/charts/area.rb +154 -0
  91. data/lib/writeexcel/charts/bar.rb +177 -0
  92. data/lib/writeexcel/charts/column.rb +156 -0
  93. data/lib/writeexcel/charts/external.rb +66 -0
  94. data/lib/writeexcel/charts/line.rb +154 -0
  95. data/lib/writeexcel/charts/pie.rb +169 -0
  96. data/lib/writeexcel/charts/scatter.rb +192 -0
  97. data/lib/writeexcel/charts/stock.rb +213 -0
  98. data/lib/writeexcel/col_info.rb +87 -0
  99. data/lib/writeexcel/colors.rb +68 -0
  100. data/lib/writeexcel/comments.rb +460 -0
  101. data/lib/writeexcel/compatibility.rb +65 -0
  102. data/lib/writeexcel/convert_date_time.rb +117 -0
  103. data/lib/writeexcel/data_validations.rb +370 -0
  104. data/lib/writeexcel/debug_info.rb +41 -0
  105. data/lib/writeexcel/embedded_chart.rb +35 -0
  106. data/lib/writeexcel/excelformula.y +139 -0
  107. data/lib/writeexcel/excelformulaparser.rb +587 -0
  108. data/lib/writeexcel/format.rb +1575 -0
  109. data/lib/writeexcel/formula.rb +987 -0
  110. data/lib/writeexcel/helper.rb +78 -0
  111. data/lib/writeexcel/image.rb +218 -0
  112. data/lib/writeexcel/olewriter.rb +305 -0
  113. data/lib/writeexcel/outline.rb +24 -0
  114. data/lib/writeexcel/properties.rb +242 -0
  115. data/lib/writeexcel/shared_string_table.rb +153 -0
  116. data/lib/writeexcel/storage_lite.rb +984 -0
  117. data/lib/writeexcel/workbook.rb +2478 -0
  118. data/lib/writeexcel/worksheet.rb +6925 -0
  119. data/lib/writeexcel/worksheets.rb +25 -0
  120. data/lib/writeexcel/write_file.rb +63 -0
  121. data/test/excelfile/Chart1.xls +0 -0
  122. data/test/excelfile/Chart2.xls +0 -0
  123. data/test/excelfile/Chart3.xls +0 -0
  124. data/test/excelfile/Chart4.xls +0 -0
  125. data/test/excelfile/Chart5.xls +0 -0
  126. data/test/helper.rb +31 -0
  127. data/test/perl_output/Chart1.xls.data +0 -0
  128. data/test/perl_output/Chart2.xls.data +0 -0
  129. data/test/perl_output/Chart3.xls.data +0 -0
  130. data/test/perl_output/Chart4.xls.data +0 -0
  131. data/test/perl_output/Chart5.xls.data +0 -0
  132. data/test/perl_output/README +31 -0
  133. data/test/perl_output/a_simple.xls +0 -0
  134. data/test/perl_output/autofilter.xls +0 -0
  135. data/test/perl_output/biff_add_continue_testdata +0 -0
  136. data/test/perl_output/chart_area.xls +0 -0
  137. data/test/perl_output/chart_bar.xls +0 -0
  138. data/test/perl_output/chart_column.xls +0 -0
  139. data/test/perl_output/chart_line.xls +0 -0
  140. data/test/perl_output/chess.xls +0 -0
  141. data/test/perl_output/colors.xls +0 -0
  142. data/test/perl_output/comments0.xls +0 -0
  143. data/test/perl_output/comments1.xls +0 -0
  144. data/test/perl_output/comments2.xls +0 -0
  145. data/test/perl_output/data_validate.xls +0 -0
  146. data/test/perl_output/date_time.xls +0 -0
  147. data/test/perl_output/defined_name.xls +0 -0
  148. data/test/perl_output/demo.xls +0 -0
  149. data/test/perl_output/demo101.bin +0 -0
  150. data/test/perl_output/demo201.bin +0 -0
  151. data/test/perl_output/demo301.bin +0 -0
  152. data/test/perl_output/demo401.bin +0 -0
  153. data/test/perl_output/demo501.bin +0 -0
  154. data/test/perl_output/diag_border.xls +0 -0
  155. data/test/perl_output/f_font_biff +0 -0
  156. data/test/perl_output/f_font_key +1 -0
  157. data/test/perl_output/f_xf_biff +0 -0
  158. data/test/perl_output/file_font_biff +0 -0
  159. data/test/perl_output/file_font_key +1 -0
  160. data/test/perl_output/file_xf_biff +0 -0
  161. data/test/perl_output/formula_result.xls +0 -0
  162. data/test/perl_output/headers.xls +0 -0
  163. data/test/perl_output/hidden.xls +0 -0
  164. data/test/perl_output/hide_zero.xls +0 -0
  165. data/test/perl_output/hyperlink.xls +0 -0
  166. data/test/perl_output/images.xls +0 -0
  167. data/test/perl_output/indent.xls +0 -0
  168. data/test/perl_output/merge1.xls +0 -0
  169. data/test/perl_output/merge2.xls +0 -0
  170. data/test/perl_output/merge3.xls +0 -0
  171. data/test/perl_output/merge4.xls +0 -0
  172. data/test/perl_output/merge5.xls +0 -0
  173. data/test/perl_output/merge6.xls +0 -0
  174. data/test/perl_output/ole_write_header +0 -0
  175. data/test/perl_output/outline.xls +0 -0
  176. data/test/perl_output/outline_collapsed.xls +0 -0
  177. data/test/perl_output/panes.xls +0 -0
  178. data/test/perl_output/password_protection.xls +0 -0
  179. data/test/perl_output/protection.xls +0 -0
  180. data/test/perl_output/regions.xls +0 -0
  181. data/test/perl_output/right_to_left.xls +0 -0
  182. data/test/perl_output/set_first_sheet.xls +0 -0
  183. data/test/perl_output/stats.xls +0 -0
  184. data/test/perl_output/stocks.xls +0 -0
  185. data/test/perl_output/store_formula.xls +0 -0
  186. data/test/perl_output/tab_colors.xls +0 -0
  187. data/test/perl_output/unicode_cyrillic.xls +0 -0
  188. data/test/perl_output/utf8.xls +0 -0
  189. data/test/perl_output/workbook1.xls +0 -0
  190. data/test/perl_output/workbook2.xls +0 -0
  191. data/test/perl_output/ws_colinfo +1 -0
  192. data/test/perl_output/ws_store_colinfo +0 -0
  193. data/test/perl_output/ws_store_dimensions +0 -0
  194. data/test/perl_output/ws_store_filtermode +0 -0
  195. data/test/perl_output/ws_store_filtermode_off +0 -0
  196. data/test/perl_output/ws_store_filtermode_on +0 -0
  197. data/test/perl_output/ws_store_selection +0 -0
  198. data/test/perl_output/ws_store_window2 +1 -0
  199. data/test/republic.png +0 -0
  200. data/test/test_00_IEEE_double.rb +13 -0
  201. data/test/test_01_add_worksheet.rb +10 -0
  202. data/test/test_02_merge_formats.rb +49 -0
  203. data/test/test_04_dimensions.rb +388 -0
  204. data/test/test_05_rows.rb +175 -0
  205. data/test/test_06_extsst.rb +74 -0
  206. data/test/test_11_date_time.rb +475 -0
  207. data/test/test_12_date_only.rb +525 -0
  208. data/test/test_13_date_seconds.rb +477 -0
  209. data/test/test_21_escher.rb +624 -0
  210. data/test/test_22_mso_drawing_group.rb +741 -0
  211. data/test/test_23_note.rb +57 -0
  212. data/test/test_24_txo.rb +74 -0
  213. data/test/test_25_position_object.rb +80 -0
  214. data/test/test_26_autofilter.rb +309 -0
  215. data/test/test_27_autofilter.rb +126 -0
  216. data/test/test_28_autofilter.rb +156 -0
  217. data/test/test_29_process_jpg.rb +670 -0
  218. data/test/test_30_validation_dval.rb +74 -0
  219. data/test/test_31_validation_dv_strings.rb +123 -0
  220. data/test/test_32_validation_dv_formula.rb +203 -0
  221. data/test/test_40_property_types.rb +188 -0
  222. data/test/test_41_properties.rb +235 -0
  223. data/test/test_42_set_properties.rb +434 -0
  224. data/test/test_50_name_stored.rb +295 -0
  225. data/test/test_51_name_print_area.rb +353 -0
  226. data/test/test_52_name_print_titles.rb +450 -0
  227. data/test/test_53_autofilter.rb +199 -0
  228. data/test/test_60_chart_generic.rb +574 -0
  229. data/test/test_61_chart_subclasses.rb +84 -0
  230. data/test/test_62_chart_formats.rb +268 -0
  231. data/test/test_63_chart_area_formats.rb +645 -0
  232. data/test/test_biff.rb +71 -0
  233. data/test/test_big_workbook.rb +17 -0
  234. data/test/test_compatibility.rb +12 -0
  235. data/test/test_example_match.rb +3246 -0
  236. data/test/test_format.rb +1189 -0
  237. data/test/test_formula.rb +61 -0
  238. data/test/test_ole.rb +102 -0
  239. data/test/test_storage_lite.rb +116 -0
  240. data/test/test_workbook.rb +146 -0
  241. data/test/test_worksheet.rb +106 -0
  242. data/utils/add_magic_comment.rb +80 -0
  243. data/writeexcel.gemspec +278 -0
  244. data/writeexcel.rdoc +1425 -0
  245. metadata +292 -0
@@ -0,0 +1,265 @@
1
+ #!/usr/bin/ruby -w
2
+ # -*- coding: utf-8 -*-
3
+
4
+ #######################################################################
5
+ #
6
+ # Example of how to create autofilters with WriteExcel.
7
+ #
8
+ # reverse('©'), September 2007, John McNamara, jmcnamara@cpan.org
9
+ #
10
+ # original written in Perl by John McNamara
11
+ # converted to Ruby by Hideo Nakamura, cxn03651@msj.biglobe.ne.jp
12
+ #
13
+ require 'writeexcel'
14
+
15
+ def get_data
16
+ [
17
+ ['East', 'Apple', 9000, 'July'],
18
+ ['East', 'Apple', 5000, 'July'],
19
+ ['South', 'Orange', 9000, 'September'],
20
+ ['North', 'Apple', 2000, 'November'],
21
+ ['West', 'Apple', 9000, 'November'],
22
+ ['South', 'Pear', 7000, 'October'],
23
+ ['North', 'Pear', 9000, 'August'],
24
+ ['West', 'Orange', 1000, 'December'],
25
+ ['West', 'Grape', 1000, 'November'],
26
+ ['South', 'Pear', 10000, 'April'],
27
+ ['West', 'Grape', 6000, 'January'],
28
+ ['South', 'Orange', 3000, 'May'],
29
+ ['North', 'Apple', 3000, 'December'],
30
+ ['South', 'Apple', 7000, 'February'],
31
+ ['West', 'Grape', 1000, 'December'],
32
+ ['East', 'Grape', 8000, 'February'],
33
+ ['South', 'Grape', 10000, 'June'],
34
+ ['West', 'Pear', 7000, 'December'],
35
+ ['South', 'Apple', 2000, 'October'],
36
+ ['East', 'Grape', 7000, 'December'],
37
+ ['North', 'Grape', 6000, 'April'],
38
+ ['East', 'Pear', 8000, 'February'],
39
+ ['North', 'Apple', 7000, 'August'],
40
+ ['North', 'Orange', 7000, 'July'],
41
+ ['North', 'Apple', 6000, 'June'],
42
+ ['South', 'Grape', 8000, 'September'],
43
+ ['West', 'Apple', 3000, 'October'],
44
+ ['South', 'Orange', 10000, 'November'],
45
+ ['West', 'Grape', 4000, 'July'],
46
+ ['North', 'Orange', 5000, 'August'],
47
+ ['East', 'Orange', 1000, 'November'],
48
+ ['East', 'Orange', 4000, 'October'],
49
+ ['North', 'Grape', 5000, 'August'],
50
+ ['East', 'Apple', 1000, 'December'],
51
+ ['South', 'Apple', 10000, 'March'],
52
+ ['East', 'Grape', 7000, 'October'],
53
+ ['West', 'Grape', 1000, 'September'],
54
+ ['East', 'Grape', 10000, 'October'],
55
+ ['South', 'Orange', 8000, 'March'],
56
+ ['North', 'Apple', 4000, 'July'],
57
+ ['South', 'Orange', 5000, 'July'],
58
+ ['West', 'Apple', 4000, 'June'],
59
+ ['East', 'Apple', 5000, 'April'],
60
+ ['North', 'Pear', 3000, 'August'],
61
+ ['East', 'Grape', 9000, 'November'],
62
+ ['North', 'Orange', 8000, 'October'],
63
+ ['East', 'Apple', 10000, 'June'],
64
+ ['South', 'Pear', 1000, 'December'],
65
+ ['North', 'Grape', 10000, 'July'],
66
+ ['East', 'Grape', 6000, 'February'],
67
+ ]
68
+ end
69
+
70
+ #######################################################################
71
+ #
72
+ # Main
73
+ #
74
+
75
+ xlsfile = 'autofilter.xls'
76
+
77
+ workbook = WriteExcel.new(xlsfile)
78
+
79
+ worksheet1 = workbook.add_worksheet
80
+ worksheet2 = workbook.add_worksheet
81
+ worksheet3 = workbook.add_worksheet
82
+ worksheet4 = workbook.add_worksheet
83
+ worksheet5 = workbook.add_worksheet
84
+ worksheet6 = workbook.add_worksheet
85
+
86
+ bold = workbook.add_format(:bold => 1)
87
+
88
+ # Extract the data embedded at the end of this file.
89
+ headings = %w(Region Item Volume Month)
90
+ data = get_data
91
+
92
+ # Set up several sheets with the same data.
93
+ workbook.sheets.each do |worksheet|
94
+ worksheet.set_column('A:D', 12)
95
+ worksheet.set_row(0, 20, bold)
96
+ worksheet.write('A1', headings)
97
+ end
98
+
99
+ ###############################################################################
100
+ #
101
+ # Example 1. Autofilter without conditions.
102
+ #
103
+
104
+ worksheet1.autofilter('A1:D51')
105
+ worksheet1.write('A2', [data])
106
+
107
+ ###############################################################################
108
+ #
109
+ #
110
+ # Example 2. Autofilter with a filter condition in the first column.
111
+ #
112
+
113
+ # The range in this example is the same as above but in row-column notation.
114
+ worksheet2.autofilter(0, 0, 50, 3)
115
+
116
+ # The placeholder "Region" in the filter is ignored and can be any string
117
+ # that adds clarity to the expression.
118
+ #
119
+ worksheet2.filter_column(0, 'Region eq East')
120
+
121
+ #
122
+ # Hide the rows that don't match the filter criteria.
123
+ #
124
+ row = 1
125
+
126
+ data.each do |row_data|
127
+ region = row_data[0]
128
+
129
+ if region == 'East'
130
+ # Row is visible.
131
+ else
132
+ # Hide row.
133
+ worksheet2.set_row(row, nil, nil, 1)
134
+ end
135
+
136
+ worksheet2.write(row, 0, row_data)
137
+ row += 1
138
+ end
139
+
140
+
141
+ ###############################################################################
142
+ #
143
+ #
144
+ # Example 3. Autofilter with a dual filter condition in one of the columns.
145
+ #
146
+
147
+ worksheet3.autofilter('A1:D51')
148
+
149
+ worksheet3.filter_column('A', 'x eq East or x eq South')
150
+
151
+ #
152
+ # Hide the rows that don't match the filter criteria.
153
+ #
154
+ row = 1
155
+
156
+ data.each do |row_data|
157
+ region = row_data[0]
158
+
159
+ if region == 'East' || region == 'South'
160
+ # Row is visible.
161
+ else
162
+ # Hide row.
163
+ worksheet3.set_row(row, nil, nil, 1)
164
+ end
165
+
166
+ worksheet3.write(row, 0, row_data)
167
+ row += 1
168
+ end
169
+
170
+
171
+ ###############################################################################
172
+ #
173
+ #
174
+ # Example 4. Autofilter with filter conditions in two columns.
175
+ #
176
+
177
+ worksheet4.autofilter('A1:D51')
178
+
179
+ worksheet4.filter_column('A', 'x eq East')
180
+ worksheet4.filter_column('C', 'x > 3000 and x < 8000' )
181
+
182
+ #
183
+ # Hide the rows that don't match the filter criteria.
184
+ #
185
+ row = 1
186
+
187
+ data.each do |row_data|
188
+ region = row_data[0]
189
+ volume = row_data[2]
190
+
191
+ if region == 'East' && volume > 3000 && volume < 8000
192
+ # Row is visible.
193
+ else
194
+ # Hide row.
195
+ worksheet4.set_row(row, nil, nil, 1)
196
+ end
197
+
198
+ worksheet4.write(row, 0, row_data)
199
+ row += 1
200
+ end
201
+
202
+
203
+ ###############################################################################
204
+ #
205
+ #
206
+ # Example 5. Autofilter with filter for blanks.
207
+ #
208
+
209
+ # Create a blank cell in our test data.
210
+ data[5][0] = ''
211
+
212
+ worksheet5.autofilter('A1:D51')
213
+ worksheet5.filter_column('A', 'x == Blanks')
214
+
215
+ #
216
+ # Hide the rows that don't match the filter criteria.
217
+ #
218
+ row = 1
219
+
220
+ data.each do |row_data|
221
+ region = row_data[0]
222
+
223
+ if region == ''
224
+ # Row is visible.
225
+ else
226
+ # Hide row.
227
+ worksheet5.set_row(row, nil, nil, 1)
228
+ end
229
+
230
+ worksheet5.write(row, 0, row_data)
231
+ row += 1
232
+ end
233
+
234
+
235
+ ###############################################################################
236
+ #
237
+ #
238
+ # Example 6. Autofilter with filter for non-blanks.
239
+ #
240
+
241
+ worksheet6.autofilter('A1:D51')
242
+ worksheet6.filter_column('A', 'x == NonBlanks')
243
+
244
+ #
245
+ # Hide the rows that don't match the filter criteria.
246
+ #
247
+ row = 1
248
+
249
+ data.each do |row_data|
250
+ region = row_data[0]
251
+
252
+ if region != ''
253
+ # Row is visible.
254
+ else
255
+ # Hide row.
256
+ worksheet6.set_row(row, nil, nil, 1)
257
+ end
258
+
259
+ worksheet6.write(row, 0, row_data)
260
+ row += 1
261
+ end
262
+
263
+ workbook.close
264
+
265
+
@@ -0,0 +1,30 @@
1
+ #!/usr/bin/ruby -w
2
+ # -*- coding: utf-8 -*-
3
+
4
+ ###############################################################################
5
+ #
6
+ # Example of creating a WriteExcel that is larger than the
7
+ # default 7MB limit.
8
+ #
9
+ # It is exactly that same as any other WriteExcel program except
10
+ # that is requires that the OLE::Storage module is installed.
11
+ #
12
+ # reverse('©'), Jan 2007, John McNamara, jmcnamara@cpan.org
13
+ #
14
+ # original written in Perl by John McNamara
15
+ # converted to Ruby by Hideo Nakamura, cxn03651@msj.biglobe.ne.jp
16
+ #
17
+ require 'writeexcel'
18
+
19
+ workbook = WriteExcel.new('bigfile.xls')
20
+ worksheet = workbook.add_worksheet
21
+
22
+ worksheet.set_column(0, 50, 18)
23
+
24
+ 0.upto(50) do |col|
25
+ 0.upto(6000) do |row|
26
+ worksheet.write(row, col, "Row: #{row} Col: #{col}")
27
+ end
28
+ end
29
+
30
+ workbook.close
@@ -0,0 +1,121 @@
1
+ #!/usr/bin/ruby -w
2
+ # -*- coding: utf-8 -*-
3
+ #
4
+ ###############################################################################
5
+ #
6
+ # A simple demo of Area chart in Spreadsheet::WriteExcel.
7
+ #
8
+ # reverse('ゥ'), December 2009, John McNamara, jmcnamara@cpan.org
9
+ #
10
+ # original written in Perl by John McNamara
11
+ # converted to Ruby by Hideo Nakamura, cxn03651@msj.biglobe.ne.jp
12
+ #
13
+ require 'rubygems'
14
+ require 'writeexcel'
15
+
16
+ # Create a new workbook called simple.xls and add a worksheet
17
+ workbook = WriteExcel.new('chart_area.xls')
18
+ worksheet = workbook.add_worksheet
19
+ bold = workbook.add_format(:bold => 1)
20
+
21
+ # Add the worksheet data that the charts will refer to.
22
+ headings = [ 'Category', 'Values 1', 'Values 2' ]
23
+ data = [
24
+ [ 2, 3, 4, 5, 6, 7 ],
25
+ [ 1, 4, 5, 2, 1, 5 ],
26
+ [ 3, 6, 7, 5, 4, 3 ]
27
+ ]
28
+
29
+ worksheet.write('A1', headings, bold)
30
+ worksheet.write('A2', data)
31
+
32
+
33
+ ###############################################################################
34
+ #
35
+ # Example 1. A minimal chart.
36
+ #
37
+ chart1 = workbook.add_chart(:type => 'Chart::Area')
38
+
39
+ # Add values only. Use the default categories.
40
+ chart1.add_series( :values => '=Sheet1!$B$2:$B$7' )
41
+
42
+ ###############################################################################
43
+ #
44
+ # Example 2. A minimal chart with user specified categories (X axis)
45
+ # and a series name.
46
+ #
47
+ chart2 = workbook.add_chart(:type => 'Chart::Area')
48
+
49
+ # Configure the series.
50
+ chart2.add_series(
51
+ :categories => '=Sheet1!$A$2:$A$7',
52
+ :values => '=Sheet1!$B$2:$B$7',
53
+ :name => 'Test data series 1'
54
+ )
55
+
56
+ ###############################################################################
57
+ #
58
+ # Example 3. Same as previous chart but with added title and axes labels.
59
+ #
60
+ chart3 = workbook.add_chart(:type => 'Chart::Area')
61
+
62
+ # Configure the series.
63
+ chart3.add_series(
64
+ :categories => '=Sheet1!$A$2:$A$7',
65
+ :values => '=Sheet1!$B$2:$B$7',
66
+ :name => 'Test data series 1'
67
+ )
68
+
69
+ # Add some labels.
70
+ chart3.set_title( :name => 'Results of sample analysis' )
71
+ chart3.set_x_axis( :name => 'Sample number' )
72
+ chart3.set_y_axis( :name => 'Sample length (cm)' )
73
+
74
+ ###############################################################################
75
+ #
76
+ # Example 4. Same as previous chart but with an added series
77
+ #
78
+ chart4 = workbook.add_chart(:name => 'Results Chart', :type => 'Chart::Area')
79
+
80
+ # Configure the series.
81
+ chart4.add_series(
82
+ :categories => '=Sheet1!$A$2:$A$7',
83
+ :values => '=Sheet1!$B$2:$B$7',
84
+ :name => 'Test data series 1'
85
+ )
86
+
87
+ # Add another series.
88
+ chart4.add_series(
89
+ :categories => '=Sheet1!$A$2:$A$7',
90
+ :values => '=Sheet1!$C$2:$C$7',
91
+ :name => 'Test data series 2'
92
+ )
93
+
94
+ # Add some labels.
95
+ chart4.set_title( :name => 'Results of sample analysis' )
96
+ chart4.set_x_axis( :name => 'Sample number' )
97
+ chart4.set_y_axis( :name => 'Sample length (cm)' )
98
+
99
+ ###############################################################################
100
+ #
101
+ # Example 5. Same as Example 3 but as an embedded chart.
102
+ #
103
+ chart5 = workbook.add_chart(:type => 'Chart::Area', :embedded => 1)
104
+
105
+ # Configure the series.
106
+ chart5.add_series(
107
+ :categories => '=Sheet1!$A$2:$A$7',
108
+ :values => '=Sheet1!$B$2:$B$7',
109
+ :name => 'Test data series 1'
110
+ )
111
+
112
+ # Add some labels.
113
+ chart5.set_title(:name => 'Results of sample analysis' )
114
+ chart5.set_x_axis(:name => 'Sample number')
115
+ chart5.set_y_axis(:name => 'Sample length (cm)')
116
+
117
+ # Insert the chart into the main worksheet.
118
+ worksheet.insert_chart('E2', chart5)
119
+
120
+ # File save
121
+ workbook.close
@@ -0,0 +1,120 @@
1
+ #!/usr/bin/ruby -w
2
+ # -*- coding: utf-8 -*-
3
+ #
4
+ ###############################################################################
5
+ #
6
+ # A simple demo of Bar chart in Spreadsheet::WriteExcel.
7
+ #
8
+ # reverse('・ゥ'), December 2009, John McNamara, jmcnamara@cpan.org
9
+ #
10
+ # original written in Perl by John McNamara
11
+ # converted to Ruby by Hideo Nakamura, cxn03651@msj.biglobe.ne.jp
12
+ #
13
+ require 'writeexcel'
14
+
15
+ # Create a new workbook called simple.xls and add a worksheet
16
+ workbook = WriteExcel.new('chart_bar.xls')
17
+ worksheet = workbook.add_worksheet
18
+ bold = workbook.add_format(:bold => 1)
19
+
20
+ # Add the worksheet data that the charts will refer to.
21
+ headings = [ 'Category', 'Values 1', 'Values 2' ]
22
+ data = [
23
+ [ 2, 3, 4, 5, 6, 7 ],
24
+ [ 1, 4, 5, 2, 1, 5 ],
25
+ [ 3, 6, 7, 5, 4, 3 ]
26
+ ]
27
+
28
+ worksheet.write('A1', headings, bold)
29
+ worksheet.write('A2', data)
30
+
31
+
32
+ ###############################################################################
33
+ #
34
+ # Example 1. A minimal chart.
35
+ #
36
+ chart1 = workbook.add_chart(:type => 'Chart::Bar')
37
+
38
+ # Add values only. Use the default categories.
39
+ chart1.add_series( :values => '=Sheet1!$B$2:$B$7' )
40
+
41
+ ###############################################################################
42
+ #
43
+ # Example 2. A minimal chart with user specified categories (X axis)
44
+ # and a series name.
45
+ #
46
+ chart2 = workbook.add_chart(:type => 'Chart::Bar')
47
+
48
+ # Configure the series.
49
+ chart2.add_series(
50
+ :categories => '=Sheet1!$A$2:$A$7',
51
+ :values => '=Sheet1!$B$2:$B$7',
52
+ :name => 'Test data series 1'
53
+ )
54
+
55
+ ###############################################################################
56
+ #
57
+ # Example 3. Same as previous chart but with added title and axes labels.
58
+ #
59
+ chart3 = workbook.add_chart(:type => 'Chart::Bar')
60
+
61
+ # Configure the series.
62
+ chart3.add_series(
63
+ :categories => '=Sheet1!$A$2:$A$7',
64
+ :values => '=Sheet1!$B$2:$B$7',
65
+ :name => 'Test data series 1'
66
+ )
67
+
68
+ # Add some labels.
69
+ chart3.set_title( :name => 'Results of sample analysis' )
70
+ chart3.set_x_axis( :name => 'Sample number' )
71
+ chart3.set_y_axis( :name => 'Sample length (cm)' )
72
+
73
+ ###############################################################################
74
+ #
75
+ # Example 4. Same as previous chart but with an added series
76
+ #
77
+ chart4 = workbook.add_chart(:name => 'Results Chart', :type => 'Chart::Bar')
78
+
79
+ # Configure the series.
80
+ chart4.add_series(
81
+ :categories => '=Sheet1!$A$2:$A$7',
82
+ :values => '=Sheet1!$B$2:$B$7',
83
+ :name => 'Test data series 1'
84
+ )
85
+
86
+ # Add another series.
87
+ chart4.add_series(
88
+ :categories => '=Sheet1!$A$2:$A$7',
89
+ :values => '=Sheet1!$C$2:$C$7',
90
+ :name => 'Test data series 2'
91
+ )
92
+
93
+ # Add some labels.
94
+ chart4.set_title( :name => 'Results of sample analysis' )
95
+ chart4.set_x_axis( :name => 'Sample number' )
96
+ chart4.set_y_axis( :name => 'Sample length (cm)' )
97
+
98
+ ###############################################################################
99
+ #
100
+ # Example 5. Same as Example 3 but as an embedded chart.
101
+ #
102
+ chart5 = workbook.add_chart(:type => 'Chart::Bar', :embedded => 1)
103
+
104
+ # Configure the series.
105
+ chart5.add_series(
106
+ :categories => '=Sheet1!$A$2:$A$7',
107
+ :values => '=Sheet1!$B$2:$B$7',
108
+ :name => 'Test data series 1'
109
+ )
110
+
111
+ # Add some labels.
112
+ chart5.set_title(:name => 'Results of sample analysis' )
113
+ chart5.set_x_axis(:name => 'Sample number')
114
+ chart5.set_y_axis(:name => 'Sample length (cm)')
115
+
116
+ # Insert the chart into the main worksheet.
117
+ worksheet.insert_chart('E2', chart5)
118
+
119
+ # File save
120
+ workbook.close