write_xlsx 0.0.2

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 (261) hide show
  1. data/.document +5 -0
  2. data/.gitattributes +1 -0
  3. data/Gemfile +12 -0
  4. data/LICENSE.txt +20 -0
  5. data/README.rdoc +82 -0
  6. data/Rakefile +78 -0
  7. data/VERSION +1 -0
  8. data/examples/a_simple.rb +45 -0
  9. data/examples/array_formula.rb +33 -0
  10. data/examples/autofilter.rb +235 -0
  11. data/examples/chart_area.rb +59 -0
  12. data/examples/chart_bar.rb +59 -0
  13. data/examples/chart_column.rb +58 -0
  14. data/examples/chart_line.rb +59 -0
  15. data/examples/chart_pie.rb +49 -0
  16. data/examples/chart_scatter.rb +59 -0
  17. data/examples/chart_stock.rb +65 -0
  18. data/examples/colors.rb +130 -0
  19. data/examples/comments1.rb +12 -0
  20. data/examples/comments2.rb +335 -0
  21. data/examples/conditional_format.rb +67 -0
  22. data/examples/data_validate.rb +279 -0
  23. data/examples/defined_name.rb +28 -0
  24. data/examples/demo.rb +104 -0
  25. data/examples/diag_border.rb +26 -0
  26. data/examples/headers.rb +119 -0
  27. data/examples/hide_sheet.rb +30 -0
  28. data/examples/hyperlink1.rb +58 -0
  29. data/examples/indent.rb +28 -0
  30. data/examples/merge1.rb +38 -0
  31. data/examples/merge2.rb +48 -0
  32. data/examples/merge3.rb +43 -0
  33. data/examples/merge4.rb +82 -0
  34. data/examples/merge5.rb +70 -0
  35. data/examples/merge6.rb +48 -0
  36. data/examples/outline.rb +252 -0
  37. data/examples/properties.rb +33 -0
  38. data/examples/protection.rb +34 -0
  39. data/examples/rich_strings.rb +42 -0
  40. data/examples/right_to_left.rb +24 -0
  41. data/examples/tab_colors.rb +26 -0
  42. data/lib/write_xlsx.rb +77 -0
  43. data/lib/write_xlsx/chart.rb +3027 -0
  44. data/lib/write_xlsx/chart/area.rb +52 -0
  45. data/lib/write_xlsx/chart/bar.rb +126 -0
  46. data/lib/write_xlsx/chart/column.rb +132 -0
  47. data/lib/write_xlsx/chart/line.rb +51 -0
  48. data/lib/write_xlsx/chart/pie.rb +210 -0
  49. data/lib/write_xlsx/chart/scatter.rb +252 -0
  50. data/lib/write_xlsx/chart/stock.rb +134 -0
  51. data/lib/write_xlsx/chartsheet.rb +173 -0
  52. data/lib/write_xlsx/colors.rb +65 -0
  53. data/lib/write_xlsx/compatibility.rb +71 -0
  54. data/lib/write_xlsx/drawing.rb +547 -0
  55. data/lib/write_xlsx/format.rb +683 -0
  56. data/lib/write_xlsx/package/app.rb +218 -0
  57. data/lib/write_xlsx/package/comments.rb +221 -0
  58. data/lib/write_xlsx/package/content_types.rb +189 -0
  59. data/lib/write_xlsx/package/core.rb +196 -0
  60. data/lib/write_xlsx/package/packager.rb +510 -0
  61. data/lib/write_xlsx/package/relationships.rb +98 -0
  62. data/lib/write_xlsx/package/shared_strings.rb +96 -0
  63. data/lib/write_xlsx/package/styles.rb +705 -0
  64. data/lib/write_xlsx/package/theme.rb +45 -0
  65. data/lib/write_xlsx/package/vml.rb +386 -0
  66. data/lib/write_xlsx/package/xml_writer_simple.rb +90 -0
  67. data/lib/write_xlsx/utility.rb +113 -0
  68. data/lib/write_xlsx/workbook.rb +1488 -0
  69. data/lib/write_xlsx/worksheet.rb +6578 -0
  70. data/lib/write_xlsx/zip_file_utils.rb +98 -0
  71. data/test/chart/test_add_series.rb +113 -0
  72. data/test/chart/test_process_names.rb +27 -0
  73. data/test/chart/test_write_auto.rb +15 -0
  74. data/test/chart/test_write_ax_id.rb +15 -0
  75. data/test/chart/test_write_ax_pos.rb +15 -0
  76. data/test/chart/test_write_chart_space.rb +15 -0
  77. data/test/chart/test_write_cross_ax.rb +15 -0
  78. data/test/chart/test_write_crosses.rb +15 -0
  79. data/test/chart/test_write_format_code.rb +15 -0
  80. data/test/chart/test_write_idx.rb +15 -0
  81. data/test/chart/test_write_label_align.rb +15 -0
  82. data/test/chart/test_write_label_offset.rb +15 -0
  83. data/test/chart/test_write_lang.rb +15 -0
  84. data/test/chart/test_write_layout.rb +15 -0
  85. data/test/chart/test_write_legend.rb +16 -0
  86. data/test/chart/test_write_legend_pos.rb +15 -0
  87. data/test/chart/test_write_major_gridlines.rb +15 -0
  88. data/test/chart/test_write_marker.rb +17 -0
  89. data/test/chart/test_write_marker_size.rb +15 -0
  90. data/test/chart/test_write_marker_value.rb +16 -0
  91. data/test/chart/test_write_num_cache.rb +16 -0
  92. data/test/chart/test_write_num_fmt.rb +16 -0
  93. data/test/chart/test_write_number_format.rb +15 -0
  94. data/test/chart/test_write_order.rb +15 -0
  95. data/test/chart/test_write_orientation.rb +15 -0
  96. data/test/chart/test_write_page_margins.rb +15 -0
  97. data/test/chart/test_write_page_setup.rb +15 -0
  98. data/test/chart/test_write_plot_vis_only.rb +15 -0
  99. data/test/chart/test_write_pt.rb +16 -0
  100. data/test/chart/test_write_pt_count.rb +16 -0
  101. data/test/chart/test_write_series_formula.rb +16 -0
  102. data/test/chart/test_write_style.rb +41 -0
  103. data/test/chart/test_write_symbol.rb +16 -0
  104. data/test/chart/test_write_tick_lbl_pos.rb +16 -0
  105. data/test/chart/test_write_v.rb +16 -0
  106. data/test/drawing/test_drawing_chart_01.rb +50 -0
  107. data/test/drawing/test_drawing_image_01.rb +59 -0
  108. data/test/helper.rb +90 -0
  109. data/test/package/app/test_app01.rb +44 -0
  110. data/test/package/app/test_app02.rb +46 -0
  111. data/test/package/app/test_app03.rb +53 -0
  112. data/test/package/comments/test_comments01.rb +36 -0
  113. data/test/package/comments/test_write_text_t.rb +44 -0
  114. data/test/package/content_types/test_content_types.rb +35 -0
  115. data/test/package/content_types/test_write_default.rb +13 -0
  116. data/test/package/content_types/test_write_override.rb +13 -0
  117. data/test/package/core/test_core01.rb +28 -0
  118. data/test/package/core/test_core02.rb +42 -0
  119. data/test/package/relationships/test_relationships.rb +28 -0
  120. data/test/package/relationships/test_sheet_rels.rb +22 -0
  121. data/test/package/shared_strings/test_shared_strings01.rb +30 -0
  122. data/test/package/shared_strings/test_shared_strings02.rb +30 -0
  123. data/test/package/shared_strings/test_write_si.rb +13 -0
  124. data/test/package/shared_strings/test_write_sst.rb +15 -0
  125. data/test/package/styles/test_styles_01.rb +69 -0
  126. data/test/package/styles/test_styles_02.rb +104 -0
  127. data/test/package/styles/test_styles_03.rb +90 -0
  128. data/test/package/styles/test_styles_04.rb +216 -0
  129. data/test/package/styles/test_styles_05.rb +150 -0
  130. data/test/package/styles/test_styles_06.rb +104 -0
  131. data/test/package/styles/test_styles_07.rb +104 -0
  132. data/test/package/styles/test_styles_08.rb +109 -0
  133. data/test/package/styles/test_styles_09.rb +95 -0
  134. data/test/package/vml/test_vml_01.rb +42 -0
  135. data/test/package/vml/test_write_anchor.rb +14 -0
  136. data/test/package/vml/test_write_auto_fill.rb +14 -0
  137. data/test/package/vml/test_write_column.rb +14 -0
  138. data/test/package/vml/test_write_div.rb +14 -0
  139. data/test/package/vml/test_write_fill.rb +14 -0
  140. data/test/package/vml/test_write_idmap.rb +14 -0
  141. data/test/package/vml/test_write_move_with_cells.rb +14 -0
  142. data/test/package/vml/test_write_path.rb +22 -0
  143. data/test/package/vml/test_write_row.rb +14 -0
  144. data/test/package/vml/test_write_shadow.rb +14 -0
  145. data/test/package/vml/test_write_shapelayout.rb +14 -0
  146. data/test/package/vml/test_write_shapetype.rb +14 -0
  147. data/test/package/vml/test_write_size_with_cells.rb +14 -0
  148. data/test/package/vml/test_write_stroke.rb +14 -0
  149. data/test/package/vml/test_write_textbox.rb +14 -0
  150. data/test/perl_output/a_simple.xlsx +0 -0
  151. data/test/perl_output/array_formula.xlsx +0 -0
  152. data/test/perl_output/autofilter.xlsx +0 -0
  153. data/test/perl_output/chart_area.xlsx +0 -0
  154. data/test/perl_output/chart_bar.xlsx +0 -0
  155. data/test/perl_output/chart_column.xlsx +0 -0
  156. data/test/perl_output/chart_line.xlsx +0 -0
  157. data/test/perl_output/chart_pie.xlsx +0 -0
  158. data/test/perl_output/chart_scatter.xlsx +0 -0
  159. data/test/perl_output/chart_stock.xlsx +0 -0
  160. data/test/perl_output/comments1.xlsx +0 -0
  161. data/test/perl_output/comments2.xlsx +0 -0
  162. data/test/perl_output/conditional_format.xlsx +0 -0
  163. data/test/perl_output/data_validate.xlsx +0 -0
  164. data/test/perl_output/defined_name.xlsx +0 -0
  165. data/test/perl_output/demo.xlsx +0 -0
  166. data/test/perl_output/diag_border.xlsx +0 -0
  167. data/test/perl_output/fit_to_pages.xlsx +0 -0
  168. data/test/perl_output/headers.xlsx +0 -0
  169. data/test/perl_output/hide_sheet.xlsx +0 -0
  170. data/test/perl_output/hyperlink.xlsx +0 -0
  171. data/test/perl_output/indent.xlsx +0 -0
  172. data/test/perl_output/merge1.xlsx +0 -0
  173. data/test/perl_output/merge2.xlsx +0 -0
  174. data/test/perl_output/merge3.xlsx +0 -0
  175. data/test/perl_output/merge4.xlsx +0 -0
  176. data/test/perl_output/merge5.xlsx +0 -0
  177. data/test/perl_output/merge6.xlsx +0 -0
  178. data/test/perl_output/outline.xlsx +0 -0
  179. data/test/perl_output/print_scale.xlsx +0 -0
  180. data/test/perl_output/properties.xlsx +0 -0
  181. data/test/perl_output/protection.xlsx +0 -0
  182. data/test/perl_output/rich_strings.xlsx +0 -0
  183. data/test/perl_output/right_to_left.xlsx +0 -0
  184. data/test/perl_output/tab_colors.xlsx +0 -0
  185. data/test/test_delete_files.rb +37 -0
  186. data/test/test_example_match.rb +2281 -0
  187. data/test/test_xml_writer_simple.rb +63 -0
  188. data/test/workbook/test_get_chart_range.rb +59 -0
  189. data/test/workbook/test_sort_defined_names.rb +77 -0
  190. data/test/workbook/test_workbook_01.rb +29 -0
  191. data/test/workbook/test_workbook_02.rb +31 -0
  192. data/test/workbook/test_workbook_03.rb +31 -0
  193. data/test/workbook/test_workbook_new.rb +18 -0
  194. data/test/workbook/test_write_defined_name.rb +17 -0
  195. data/test/workbook/test_write_defined_names.rb +41 -0
  196. data/test/worksheet/test_calculate_spans.rb +58 -0
  197. data/test/worksheet/test_convert_date_time_01.rb +439 -0
  198. data/test/worksheet/test_convert_date_time_02.rb +478 -0
  199. data/test/worksheet/test_convert_date_time_03.rb +435 -0
  200. data/test/worksheet/test_extract_filter_tokens.rb +109 -0
  201. data/test/worksheet/test_parse_filter_expression.rb +143 -0
  202. data/test/worksheet/test_position_object.rb +50 -0
  203. data/test/worksheet/test_repeat_formula.rb +55 -0
  204. data/test/worksheet/test_worksheet_01.rb +32 -0
  205. data/test/worksheet/test_worksheet_02.rb +38 -0
  206. data/test/worksheet/test_worksheet_03.rb +44 -0
  207. data/test/worksheet/test_worksheet_04.rb +45 -0
  208. data/test/worksheet/test_write_array_formula_01.rb +99 -0
  209. data/test/worksheet/test_write_autofilter.rb +260 -0
  210. data/test/worksheet/test_write_brk.rb +18 -0
  211. data/test/worksheet/test_write_cell.rb +49 -0
  212. data/test/worksheet/test_write_cell_value.rb +33 -0
  213. data/test/worksheet/test_write_col_breaks.rb +27 -0
  214. data/test/worksheet/test_write_col_info.rb +95 -0
  215. data/test/worksheet/test_write_conditional_formatting.rb +72 -0
  216. data/test/worksheet/test_write_custom_filter.rb +18 -0
  217. data/test/worksheet/test_write_custom_filters.rb +25 -0
  218. data/test/worksheet/test_write_data_validation_01.rb +113 -0
  219. data/test/worksheet/test_write_data_validation_02.rb +528 -0
  220. data/test/worksheet/test_write_dimension.rb +94 -0
  221. data/test/worksheet/test_write_ext.rb +18 -0
  222. data/test/worksheet/test_write_ext_lst.rb +18 -0
  223. data/test/worksheet/test_write_filter.rb +18 -0
  224. data/test/worksheet/test_write_filter_column.rb +18 -0
  225. data/test/worksheet/test_write_filters.rb +32 -0
  226. data/test/worksheet/test_write_header_footer.rb +53 -0
  227. data/test/worksheet/test_write_hyperlink.rb +39 -0
  228. data/test/worksheet/test_write_hyperlinks.rb +27 -0
  229. data/test/worksheet/test_write_legacy_drawing.rb +19 -0
  230. data/test/worksheet/test_write_merge_cell.rb +18 -0
  231. data/test/worksheet/test_write_merge_cells.rb +192 -0
  232. data/test/worksheet/test_write_methods.rb +353 -0
  233. data/test/worksheet/test_write_mx_plv.rb +19 -0
  234. data/test/worksheet/test_write_page_margins.rb +98 -0
  235. data/test/worksheet/test_write_page_set_up_pr.rb +19 -0
  236. data/test/worksheet/test_write_page_setup.rb +54 -0
  237. data/test/worksheet/test_write_pane.rb +123 -0
  238. data/test/worksheet/test_write_phonetic_pr.rb +19 -0
  239. data/test/worksheet/test_write_print_options.rb +77 -0
  240. data/test/worksheet/test_write_row_breaks.rb +27 -0
  241. data/test/worksheet/test_write_row_element.rb +69 -0
  242. data/test/worksheet/test_write_selection.rb +18 -0
  243. data/test/worksheet/test_write_sheet_calc_pr.rb +18 -0
  244. data/test/worksheet/test_write_sheet_data.rb +18 -0
  245. data/test/worksheet/test_write_sheet_format_pr.rb +18 -0
  246. data/test/worksheet/test_write_sheet_pr.rb +36 -0
  247. data/test/worksheet/test_write_sheet_protection.rb +174 -0
  248. data/test/worksheet/test_write_sheet_view.rb +62 -0
  249. data/test/worksheet/test_write_sheet_view1.rb +64 -0
  250. data/test/worksheet/test_write_sheet_view2.rb +56 -0
  251. data/test/worksheet/test_write_sheet_view3.rb +83 -0
  252. data/test/worksheet/test_write_sheet_view4.rb +83 -0
  253. data/test/worksheet/test_write_sheet_view5.rb +74 -0
  254. data/test/worksheet/test_write_sheet_view6.rb +51 -0
  255. data/test/worksheet/test_write_sheet_view7.rb +71 -0
  256. data/test/worksheet/test_write_sheet_view8.rb +51 -0
  257. data/test/worksheet/test_write_sheet_view9.rb +51 -0
  258. data/test/worksheet/test_write_tab_color.rb +23 -0
  259. data/test/worksheet/test_write_worksheet.rb +19 -0
  260. data/write_xlsx.gemspec +308 -0
  261. metadata +363 -0
@@ -0,0 +1,59 @@
1
+ #!/usr/bin/env ruby
2
+ # -*- coding: utf-8 -*-
3
+
4
+ #######################################################################
5
+ #
6
+ # A demo of an Area chart in Excel::Writer::XLSX.
7
+ #
8
+ # reverse('ゥ'), March 2011, John McNamara, jmcnamara@cpan.org
9
+ # convert to ruby by Hideo NAKAMURA, cxn03651@msj.biglobe.ne.jp
10
+ #
11
+
12
+ require 'rubygems'
13
+ require 'write_xlsx'
14
+
15
+ workbook = WriteXLSX.new('chart_area.xlsx')
16
+ worksheet = workbook.add_worksheet
17
+ bold = workbook.add_format(:bold => 1)
18
+
19
+ # Add the worksheet data that the charts will refer to.
20
+ headings = [ 'Number', 'Batch 1', 'Batch 2' ]
21
+ data = [
22
+ [ 2, 3, 4, 5, 6, 7 ],
23
+ [ 40, 40, 50, 30, 25, 50 ],
24
+ [ 30, 25, 30, 10, 5, 10 ]
25
+ ]
26
+
27
+ worksheet.write('A1', headings, bold)
28
+ worksheet.write('A2', data)
29
+
30
+ # Create a new chart object. In this case an embedded chart.
31
+ chart = workbook.add_chart(:type => 'area', :embedded => 1)
32
+
33
+ # Configure the first series.
34
+ chart.add_series(
35
+ :name => '=Sheet1!$B$1',
36
+ :categories => '=Sheet1!$A$2:$A$7',
37
+ :values => '=Sheet1!$B$2:$B$7'
38
+ )
39
+
40
+ # Configure second series. Note alternative use of array ref to define
41
+ # ranges: [ sheetname, row_start, row_end, col_start, col_end ].
42
+ chart.add_series(
43
+ :name => '=Sheet1!$C$1',
44
+ :categories => [ 'Sheet1', 1, 6, 0, 0 ],
45
+ :values => [ 'Sheet1', 1, 6, 2, 2 ]
46
+ )
47
+
48
+ # Add a chart title and some axis labels.
49
+ chart.set_title(:name => 'Results of sample analysis')
50
+ chart.set_x_axis(:name => 'Test number')
51
+ chart.set_y_axis(:name => 'Sample length (mm)')
52
+
53
+ # Set an Excel chart style. Blue colors with white outline and shadow.
54
+ chart.set_style(11)
55
+
56
+ # Insert the chart into the worksheet (with an offset).
57
+ worksheet.insert_chart('D2', chart, 25, 10)
58
+
59
+ workbook.close
@@ -0,0 +1,59 @@
1
+ #!/usr/bin/env ruby
2
+ # -*- coding: utf-8 -*-
3
+
4
+ #######################################################################
5
+ #
6
+ # A demo of an Bar chart in Excel::Writer::XLSX.
7
+ #
8
+ # reverse('c'), March 2011, John McNamara, jmcnamara@cpan.org
9
+ # convert to ruby by Hideo NAKAMURA, cxn03651@msj.biglobe.ne.jp
10
+ #
11
+
12
+ require 'rubygems'
13
+ require 'write_xlsx'
14
+
15
+ workbook = WriteXLSX.new('chart_bar.xlsx')
16
+ worksheet = workbook.add_worksheet
17
+ bold = workbook.add_format(:bold => 1)
18
+
19
+ # Add the worksheet data that the charts will refer to.
20
+ headings = [ 'Number', 'Batch 1', 'Batch 2' ]
21
+ data = [
22
+ [ 2, 3, 4, 5, 6, 7 ],
23
+ [ 10, 40, 50, 20, 10, 50 ],
24
+ [ 30, 60, 70, 50, 40, 30 ]
25
+ ]
26
+
27
+ worksheet.write('A1', headings, bold)
28
+ worksheet.write('A2', data)
29
+
30
+ # Create a new chart object. In this case an embedded chart.
31
+ chart = workbook.add_chart(:type => 'bar', :embedded => 1)
32
+
33
+ # Configure the first series.
34
+ chart.add_series(
35
+ :name => '=Sheet1!$B$1',
36
+ :categories => '=Sheet1!$A$2:$A$7',
37
+ :values => '=Sheet1!$B$2:$B$7'
38
+ )
39
+
40
+ # Configure second series. Note alternative use of array ref to define
41
+ # ranges: [ sheetname, row_start, row_end, col_start, col_end ].
42
+ chart.add_series(
43
+ :name => '=Sheet1!$C$1',
44
+ :categories => [ 'Sheet1', 1, 6, 0, 0 ],
45
+ :values => [ 'Sheet1', 1, 6, 2, 2 ]
46
+ )
47
+
48
+ # Add a chart title and some axis labels.
49
+ chart.set_title(:name => 'Results of sample analysis')
50
+ chart.set_x_axis(:name => 'Test number')
51
+ chart.set_y_axis(:name => 'Sample length (mm)')
52
+
53
+ # Set an Excel chart style. Blue colors with white outline and shadow.
54
+ chart.set_style(11)
55
+
56
+ # Insert the chart into the worksheet (with an offset).
57
+ worksheet.insert_chart('D2', chart, 25, 10)
58
+
59
+ workbook.close
@@ -0,0 +1,58 @@
1
+ #!/usr/bin/env ruby
2
+ # -*- coding: utf-8 -*-
3
+
4
+ #######################################################################
5
+ #
6
+ # A demo of an Area chart in Excel::Writer::XLSX.
7
+ #
8
+ # reverse('ゥ'), March 2011, John McNamara, jmcnamara@cpan.org
9
+ # convert to ruby by Hideo NAKAMURA, cxn03651@msj.biglobe.ne.jp
10
+ #
11
+
12
+ require 'write_xlsx'
13
+
14
+ workbook = WriteXLSX.new('chart_column.xlsx')
15
+ worksheet = workbook.add_worksheet
16
+ bold = workbook.add_format(:bold => 1)
17
+
18
+ # Add the worksheet data that the charts will refer to.
19
+ headings = [ 'Number', 'Batch 1', 'Batch 2' ]
20
+ data = [
21
+ [ 2, 3, 4, 5, 6, 7 ],
22
+ [ 10, 40, 50, 20, 10, 50 ],
23
+ [ 30, 60, 70, 50, 40, 30 ]
24
+ ]
25
+
26
+ worksheet.write('A1', headings, bold)
27
+ worksheet.write('A2', data)
28
+
29
+ # Create a new chart object. In this case an embedded chart.
30
+ chart = workbook.add_chart(:type => 'column', :embedded => 1)
31
+
32
+ # Configure the first series.
33
+ chart.add_series(
34
+ :name => '=Sheet1!$B$1',
35
+ :categories => '=Sheet1!$A$2:$A$7',
36
+ :values => '=Sheet1!$B$2:$B$7'
37
+ )
38
+
39
+ # Configure second series. Note alternative use of array ref to define
40
+ # ranges: [ sheetname, row_start, row_end, col_start, col_end ].
41
+ chart.add_series(
42
+ :name => '=Sheet1!$C$1',
43
+ :categories => [ 'Sheet1', 1, 6, 0, 0 ],
44
+ :values => [ 'Sheet1', 1, 6, 2, 2 ]
45
+ )
46
+
47
+ # Add a chart title and some axis labels.
48
+ chart.set_title(:name => 'Results of sample analysis')
49
+ chart.set_x_axis(:name => 'Test number')
50
+ chart.set_y_axis(:name => 'Sample length (mm)')
51
+
52
+ # Set an Excel chart style. Blue colors with white outline and shadow.
53
+ chart.set_style(11)
54
+
55
+ # Insert the chart into the worksheet (with an offset).
56
+ worksheet.insert_chart('D2', chart, 25, 10)
57
+
58
+ workbook.close
@@ -0,0 +1,59 @@
1
+ #!/usr/bin/env ruby
2
+ # -*- coding: utf-8 -*-
3
+
4
+ #######################################################################
5
+ #
6
+ # A demo of a Line chart in Excel::Writer::XLSX.
7
+ #
8
+ # reverse('ゥ'), March 2011, John McNamara, jmcnamara@cpan.org
9
+ # convert to ruby by Hideo NAKAMURA, cxn03651@msj.biglobe.ne.jp
10
+ #
11
+
12
+ require 'rubygems'
13
+ require 'write_xlsx'
14
+
15
+ workbook = WriteXLSX.new('chart_line.xlsx')
16
+ worksheet = workbook.add_worksheet
17
+ bold = workbook.add_format(:bold => 1)
18
+
19
+ # Add the worksheet data that the charts will refer to.
20
+ headings = [ 'Number', 'Batch 1', 'Batch 2' ]
21
+ data = [
22
+ [ 2, 3, 4, 5, 6, 7 ],
23
+ [ 10, 40, 50, 20, 10, 50 ],
24
+ [ 30, 60, 70, 50, 40, 30 ]
25
+ ]
26
+
27
+ worksheet.write('A1', headings, bold)
28
+ worksheet.write('A2', data)
29
+
30
+ # Create a new chart object. In this case an embedded chart.
31
+ chart = workbook.add_chart(:type => 'line', :embedded => 1)
32
+
33
+ # Configure the first series.
34
+ chart.add_series(
35
+ :name => '=Sheet1!$B$1',
36
+ :categories => '=Sheet1!$A$2:$A$7',
37
+ :values => '=Sheet1!$B$2:$B$7'
38
+ )
39
+
40
+ # Configure second series. Note alternative use of array ref to define
41
+ # ranges: [ sheetname, row_start, row_end, col_start, col_end ].
42
+ chart.add_series(
43
+ :name => '=Sheet1!$C$1',
44
+ :categories => [ 'Sheet1', 1, 6, 0, 0 ],
45
+ :values => [ 'Sheet1', 1, 6, 2, 2 ]
46
+ )
47
+
48
+ # Add a chart title and some axis labels.
49
+ chart.set_title(:name => 'Results of sample analysis')
50
+ chart.set_x_axis(:name => 'Test number')
51
+ chart.set_y_axis(:name => 'Sample length (mm)')
52
+
53
+ # Set an Excel chart style. Blue colors with white outline and shadow.
54
+ chart.set_style(10)
55
+
56
+ # Insert the chart into the worksheet (with an offset).
57
+ worksheet.insert_chart('D2', chart, 25, 10)
58
+
59
+ workbook.close
@@ -0,0 +1,49 @@
1
+ #!/usr/bin/env ruby
2
+ # -*- coding: utf-8 -*-
3
+
4
+ #######################################################################
5
+ #
6
+ # A demo of a Pie chart in Excel::Writer::XLSX.
7
+ #
8
+ # reverse(c), March 2011, John McNamara, jmcnamara@cpan.org
9
+ # convert to ruby by Hideo NAKAMURA, cxn03651@msj.biglobe.ne.jp
10
+ #
11
+
12
+ require 'rubygems'
13
+ require 'write_xlsx'
14
+
15
+ workbook = WriteXLSX.new('chart_pie.xlsx')
16
+ worksheet = workbook.add_worksheet
17
+ bold = workbook.add_format(:bold => 1)
18
+
19
+ # Add the worksheet data that the charts will refer to.
20
+ headings = [ 'Category', 'Values' ]
21
+ data = [
22
+ [ 'Apple', 'Cherry', 'Pecan' ],
23
+ [ 60, 30, 10 ]
24
+ ]
25
+
26
+ worksheet.write('A1', headings, bold)
27
+ worksheet.write('A2', data)
28
+
29
+ # Create a new chart object. In this case an embedded chart.
30
+ chart = workbook.add_chart(:type => 'pie', :embedded => 1)
31
+
32
+ # Configure the series. Note the use of the array ref to define ranges:
33
+ # [ $sheetname, $row_start, $row_end, $col_start, $col_end ].
34
+ chart.add_series(
35
+ :name => 'Pie sales data',
36
+ :categories => [ 'Sheet1', 1, 3, 0, 0 ],
37
+ :values => [ 'Sheet1', 1, 3, 1, 1 ]
38
+ )
39
+
40
+ # Add a title.
41
+ chart.set_title(:name => 'Popular Pie Types')
42
+
43
+ # Set an Excel chart style. Blue colors with white outline and shadow.
44
+ chart.set_style(10)
45
+
46
+ # Insert the chart into the worksheet (with an offset).
47
+ worksheet.insert_chart('C2', chart, 25, 10)
48
+
49
+ workbook.close
@@ -0,0 +1,59 @@
1
+ #!/usr/bin/env ruby
2
+ # -*- coding: utf-8 -*-
3
+
4
+ #######################################################################
5
+ #
6
+ # A demo of a Scatter chart in Excel::Writer::XLSX.
7
+ #
8
+ # reverse(c), March 2011, John McNamara, jmcnamara@cpan.org
9
+ # convert to ruby by Hideo NAKAMURA, cxn03651@msj.biglobe.ne.jp
10
+ #
11
+
12
+ require 'rubygems'
13
+ require 'write_xlsx'
14
+
15
+ workbook = WriteXLSX.new('chart_scatter.xlsx')
16
+ worksheet = workbook.add_worksheet
17
+ bold = workbook.add_format(:bold => 1)
18
+
19
+ # Add the worksheet data that the charts will refer to.
20
+ headings = [ 'Number', 'Batch 1', 'Batch 2' ]
21
+ data = [
22
+ [ 2, 3, 4, 5, 6, 7 ],
23
+ [ 10, 40, 50, 20, 10, 50 ],
24
+ [ 30, 60, 70, 50, 40, 30 ]
25
+ ]
26
+
27
+ worksheet.write('A1', headings, bold)
28
+ worksheet.write('A2', data)
29
+
30
+ # Create a new chart object. In this case an embedded chart.
31
+ chart = workbook.add_chart(:type => 'scatter', :embedded => 1)
32
+
33
+ # Configure the first series.
34
+ chart.add_series(
35
+ :name => '=Sheet1!$B$1',
36
+ :categories => '=Sheet1!$A$2:$A$7',
37
+ :values => '=Sheet1!$B$2:$B$7'
38
+ )
39
+
40
+ # Configure second series. Note alternative use of array ref to define
41
+ # ranges: [ $sheetname, $row_start, $row_end, $col_start, $col_end ].
42
+ chart.add_series(
43
+ :name => '=Sheet1!$C$1',
44
+ :categories => [ 'Sheet1', 1, 6, 0, 0 ],
45
+ :values => [ 'Sheet1', 1, 6, 2, 2 ]
46
+ )
47
+
48
+ # Add a chart title and some axis labels.
49
+ chart.set_title(:name => 'Results of sample analysis')
50
+ chart.set_x_axis(:name => 'Test number')
51
+ chart.set_y_axis(:name => 'Sample length (mm)')
52
+
53
+ # Set an Excel chart style. Blue colors with white outline and shadow.
54
+ chart.set_style(10)
55
+
56
+ # Insert the chart into the worksheet (with an offset).
57
+ worksheet.insert_chart('D2', chart, 25, 10)
58
+
59
+ workbook.close
@@ -0,0 +1,65 @@
1
+ #!/usr/bin/env ruby
2
+ # -*- coding: utf-8 -*-
3
+
4
+ #######################################################################
5
+ #
6
+ # A demo of a Stock chart in Excel::Writer::XLSX.
7
+ #
8
+ # reverse(c), March 2011, John McNamara, jmcnamara@cpan.org
9
+ # convert to ruby by Hideo NAKAMURA, cxn03651@msj.biglobe.ne.jp
10
+ #
11
+
12
+ require 'rubygems'
13
+ require 'write_xlsx'
14
+
15
+ workbook = WriteXLSX.new('chart_stock.xlsx')
16
+ worksheet = workbook.add_worksheet
17
+ bold = workbook.add_format(:bold => 1)
18
+ date_format = workbook.add_format(:num_format => 'dd/mm/yyyy')
19
+ chart = workbook.add_chart(:type => 'stock', :embedded => 1)
20
+
21
+
22
+ # Add the worksheet data that the charts will refer to.
23
+ headings = [ 'Date', 'High', 'Low', 'Close' ]
24
+ data = [
25
+ [ '2007-01-01T', '2007-01-02T', '2007-01-03T', '2007-01-04T', '2007-01-05T' ],
26
+ [ 27.2, 25.03, 19.05, 20.34, 18.5 ],
27
+ [ 23.49, 19.55, 15.12, 17.84, 16.34 ],
28
+ [ 25.45, 23.05, 17.32, 20.45, 17.34 ]
29
+ ]
30
+
31
+ worksheet.write('A1', headings, bold)
32
+
33
+ (0 .. 4).each do |row|
34
+ worksheet.write_date_time(row + 1, 0, data[0][row], date_format)
35
+ worksheet.write(row + 1, 1, data[1][row])
36
+ worksheet.write(row + 1, 2, data[2][row])
37
+ worksheet.write(row + 1, 3, data[3][row])
38
+ end
39
+
40
+ worksheet.set_column('A:D', 11)
41
+
42
+ # Add a series for each of the High-Low-Close columns.
43
+ chart.add_series(
44
+ :categories => '=Sheet1!$A$2:$A$6',
45
+ :values => '=Sheet1!$B$2:$B$6'
46
+ )
47
+
48
+ chart.add_series(
49
+ :categories => '=Sheet1!$A$2:$A$6',
50
+ :values => '=Sheet1!$C$2:$C$6'
51
+ )
52
+
53
+ chart.add_series(
54
+ :categories => '=Sheet1!$A$2:$A$6',
55
+ :values => '=Sheet1!$D$2:$D$6'
56
+ )
57
+
58
+ # Add a chart title and some axis labels.
59
+ chart.set_title(:name => 'High-Low-Close')
60
+ chart.set_x_axis(:name => 'Date')
61
+ chart.set_y_axis(:name => 'Share price')
62
+
63
+ worksheet.insert_chart('E9', chart)
64
+
65
+ workbook.close
@@ -0,0 +1,130 @@
1
+ #!/usr/bin/env ruby
2
+ # -*- coding: utf-8 -*-
3
+
4
+ ################################################################################
5
+ #
6
+ # Demonstrates Excel::Writer::XLSX's named colors and the Excel color
7
+ # palette.
8
+ #
9
+ # The set_custom_color() Worksheet method can be used to override one of the
10
+ # built-in palette values with a more suitable colour. See the main docs.
11
+ #
12
+ # reverse('©'), March 2002, 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
+
18
+ require 'rubygems'
19
+ require 'write_xlsx'
20
+
21
+ workbook = WriteXLSX.new("colors.xlsx")
22
+
23
+ # Some common formats
24
+ center = workbook.add_format(:align => 'center')
25
+ heading = workbook.add_format(:align => 'center', :bold => 1)
26
+
27
+ ######################################################################
28
+ #
29
+ # Demonstrate the named colors.
30
+ #
31
+
32
+ order = [
33
+ 0x21,
34
+ 0x0B,
35
+ 0x35,
36
+ 0x11,
37
+ 0x16,
38
+ 0x12,
39
+ 0x0D,
40
+ 0x10,
41
+ 0x17,
42
+ 0x09,
43
+ 0x0C,
44
+ 0x0F,
45
+ 0x0E,
46
+ 0x14,
47
+ 0x08,
48
+ 0x0A
49
+ ]
50
+
51
+ colors = {
52
+ 0x08 => 'black',
53
+ 0x0C => 'blue',
54
+ 0x10 => 'brown',
55
+ 0x0F => 'cyan',
56
+ 0x17 => 'gray',
57
+ 0x11 => 'green',
58
+ 0x0B => 'lime',
59
+ 0x0E => 'magenta',
60
+ 0x12 => 'navy',
61
+ 0x35 => 'orange',
62
+ 0x21 => 'pink',
63
+ 0x14 => 'purple',
64
+ 0x0A => 'red',
65
+ 0x16 => 'silver',
66
+ 0x09 => 'white',
67
+ 0x0D => 'yellow',
68
+ }
69
+
70
+ worksheet1 = workbook.add_worksheet('Named colors')
71
+
72
+ worksheet1.set_column(0, 3, 15)
73
+
74
+ worksheet1.write(0, 0, "Index", heading)
75
+ worksheet1.write(0, 1, "Index", heading)
76
+ worksheet1.write(0, 2, "Name", heading)
77
+ worksheet1.write(0, 3, "Color", heading)
78
+
79
+ i = 1
80
+
81
+ # original was colors.each....
82
+ # order unmatch between perl and ruby (of cource, it's hash!)
83
+ # so i use order array to match perl's xls order.
84
+ #
85
+ order.each do |index|
86
+ format = workbook.add_format(
87
+ :fg_color => colors[index],
88
+ :pattern => 1,
89
+ :border => 1
90
+ )
91
+
92
+ worksheet1.write(i + 1, 0, index, center)
93
+ worksheet1.write(i + 1, 1, sprintf("0x%02X", index), center)
94
+ worksheet1.write(i + 1, 2, colors[index], center)
95
+ worksheet1.write(i + 1, 3, '', format)
96
+ i += 1
97
+ end
98
+
99
+ ######################################################################
100
+ #
101
+ # Demonstrate the standard Excel colors in the range 8..63.
102
+ #
103
+
104
+ worksheet2 = workbook.add_worksheet('Standard colors')
105
+
106
+ worksheet2.set_column(0, 3, 15)
107
+
108
+ worksheet2.write(0, 0, "Index", heading)
109
+ worksheet2.write(0, 1, "Index", heading)
110
+ worksheet2.write(0, 2, "Color", heading)
111
+ worksheet2.write(0, 3, "Name", heading)
112
+
113
+ (8..63).each do |i|
114
+ format = workbook.add_format(
115
+ :fg_color => i,
116
+ :pattern => 1,
117
+ :border => 1
118
+ )
119
+
120
+ worksheet2.write((i - 7), 0, i, center)
121
+ worksheet2.write((i - 7), 1, sprintf("0x%02X", i), center)
122
+ worksheet2.write((i - 7), 2, '', format)
123
+
124
+ # Add the color names
125
+ if colors.has_key?(i)
126
+ worksheet2.write((i - 7), 3, colors[i], center)
127
+ end
128
+ end
129
+
130
+ workbook.close