write_xlsx 0.97.0 → 1.04.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.
Files changed (313) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/Changes +78 -0
  4. data/LICENSE.txt +1 -1
  5. data/README.md +2 -2
  6. data/examples/a_simple.rb +1 -1
  7. data/examples/add_vba_project.rb +1 -1
  8. data/examples/array_formula.rb +1 -1
  9. data/examples/chart_area.rb +5 -2
  10. data/examples/chart_bar.rb +5 -2
  11. data/examples/chart_clustered.rb +1 -1
  12. data/examples/chart_column.rb +5 -2
  13. data/examples/chart_combined.rb +1 -1
  14. data/examples/chart_data_table.rb +9 -3
  15. data/examples/chart_data_tools.rb +25 -7
  16. data/examples/chart_doughnut.rb +17 -5
  17. data/examples/chart_gauge.rb +73 -0
  18. data/examples/chart_line.rb +90 -12
  19. data/examples/chart_pareto.rb +1 -1
  20. data/examples/chart_pie.rb +9 -3
  21. data/examples/chart_radar.rb +13 -4
  22. data/examples/chart_scatter.rb +5 -2
  23. data/examples/chart_secondary_axis.rb +5 -2
  24. data/examples/chart_stock.rb +1 -1
  25. data/examples/chart_styles.rb +1 -1
  26. data/examples/colors.rb +1 -1
  27. data/examples/data_validate.rb +1 -1
  28. data/examples/date_time.rb +1 -1
  29. data/examples/demo.rb +4 -1
  30. data/examples/formats.rb +1 -1
  31. data/examples/headers.rb +1 -1
  32. data/examples/hide_row_col.rb +1 -1
  33. data/examples/hide_sheet.rb +1 -1
  34. data/examples/hyperlink1.rb +1 -1
  35. data/examples/indent.rb +1 -1
  36. data/examples/macros.rb +1 -1
  37. data/examples/merge1.rb +1 -1
  38. data/examples/merge2.rb +1 -1
  39. data/examples/merge3.rb +1 -1
  40. data/examples/merge4.rb +1 -1
  41. data/examples/merge5.rb +1 -1
  42. data/examples/merge6.rb +1 -1
  43. data/examples/outline.rb +1 -1
  44. data/examples/outline_collapsed.rb +1 -1
  45. data/examples/panes.rb +1 -1
  46. data/examples/properties.rb +1 -1
  47. data/examples/regions.rb +1 -1
  48. data/examples/rich_strings.rb +1 -1
  49. data/examples/right_to_left.rb +1 -1
  50. data/examples/shape1.rb +1 -1
  51. data/examples/shape2.rb +1 -1
  52. data/examples/shape3.rb +1 -1
  53. data/examples/shape4.rb +1 -1
  54. data/examples/shape5.rb +1 -1
  55. data/examples/shape6.rb +1 -1
  56. data/examples/shape7.rb +1 -1
  57. data/examples/shape8.rb +1 -1
  58. data/examples/shape_all.rb +1 -1
  59. data/examples/sparklines1.rb +1 -1
  60. data/examples/sparklines2.rb +1 -1
  61. data/examples/stats.rb +1 -1
  62. data/examples/stats_ext.rb +1 -1
  63. data/examples/stocks.rb +1 -1
  64. data/examples/tab_colors.rb +1 -1
  65. data/examples/tables.rb +78 -43
  66. data/lib/write_xlsx/chart.rb +43 -35
  67. data/lib/write_xlsx/chart/area.rb +1 -1
  68. data/lib/write_xlsx/chart/axis.rb +2 -2
  69. data/lib/write_xlsx/chart/bar.rb +1 -1
  70. data/lib/write_xlsx/chart/column.rb +1 -1
  71. data/lib/write_xlsx/chart/doughnut.rb +1 -1
  72. data/lib/write_xlsx/chart/legend.rb +14 -0
  73. data/lib/write_xlsx/chart/line.rb +16 -2
  74. data/lib/write_xlsx/chart/pie.rb +30 -15
  75. data/lib/write_xlsx/chart/radar.rb +1 -1
  76. data/lib/write_xlsx/chart/scatter.rb +1 -1
  77. data/lib/write_xlsx/chart/stock.rb +1 -1
  78. data/lib/write_xlsx/chartsheet.rb +35 -7
  79. data/lib/write_xlsx/drawing.rb +86 -30
  80. data/lib/write_xlsx/format.rb +9 -9
  81. data/lib/write_xlsx/package/comments.rb +61 -58
  82. data/lib/write_xlsx/package/conditional_format.rb +9 -1
  83. data/lib/write_xlsx/package/relationships.rb +4 -4
  84. data/lib/write_xlsx/package/styles.rb +26 -8
  85. data/lib/write_xlsx/package/table.rb +13 -7
  86. data/lib/write_xlsx/package/vml.rb +20 -19
  87. data/lib/write_xlsx/shape.rb +4 -3
  88. data/lib/write_xlsx/sheets.rb +18 -16
  89. data/lib/write_xlsx/sparkline.rb +1 -1
  90. data/lib/write_xlsx/utility.rb +96 -7
  91. data/lib/write_xlsx/version.rb +1 -1
  92. data/lib/write_xlsx/workbook.rb +99 -49
  93. data/lib/write_xlsx/worksheet.rb +225 -145
  94. data/lib/write_xlsx/worksheet/data_validation.rb +10 -14
  95. data/lib/write_xlsx/worksheet/hyperlink.rb +16 -37
  96. data/test/chart/test_write_legend_pos.rb +9 -1
  97. data/test/chartsheet/test_write_sheet_protection.rb +91 -0
  98. data/test/drawing/test_drawing_chart_01.rb +6 -2
  99. data/test/drawing/test_drawing_image_01.rb +12 -3
  100. data/test/drawing/test_drawing_shape_01.rb +8 -5
  101. data/test/drawing/test_drawing_shape_02.rb +12 -5
  102. data/test/drawing/test_drawing_shape_03.rb +8 -5
  103. data/test/drawing/test_drawing_shape_04.rb +8 -24
  104. data/test/drawing/test_drawing_shape_05.rb +8 -5
  105. data/test/drawing/test_drawing_shape_06.rb +11 -6
  106. data/test/drawing/test_drawing_shape_07.rb +11 -6
  107. data/test/drawing/test_write_a_graphic_frame_locks.rb +1 -1
  108. data/test/drawing/test_write_c_chart.rb +1 -1
  109. data/test/drawing/test_write_c_nv_graphic_frame_pr.rb +1 -1
  110. data/test/drawing/test_write_c_nv_pr.rb +1 -1
  111. data/test/drawing/test_write_col.rb +1 -1
  112. data/test/drawing/test_write_col_off.rb +1 -1
  113. data/test/drawing/test_write_ext.rb +1 -1
  114. data/test/drawing/test_write_pos.rb +1 -1
  115. data/test/drawing/test_write_row.rb +1 -1
  116. data/test/drawing/test_write_row_off.rb +1 -1
  117. data/test/drawing/test_write_xfrm_extension.rb +1 -1
  118. data/test/drawing/test_write_xfrm_offset.rb +1 -1
  119. data/test/package/comments/test_comments_01.rb +54 -0
  120. data/test/package/comments/test_comments_02.rb +54 -0
  121. data/test/perl_output/chart_gauge.xlsx +0 -0
  122. data/test/perl_output/chart_line.xlsx +0 -0
  123. data/test/perl_output/comments2.xlsx +0 -0
  124. data/test/perl_output/formats.xlsx +0 -0
  125. data/test/perl_output/tables.xlsx +0 -0
  126. data/test/regression/images/happy.jpg +0 -0
  127. data/test/regression/images/red2.png +0 -0
  128. data/test/regression/test_array_formula03.rb +36 -0
  129. data/test/regression/test_autofilter08.rb +110 -0
  130. data/test/regression/test_autofilter09.rb +110 -0
  131. data/test/regression/test_autofilter10.rb +110 -0
  132. data/test/regression/test_chart_axis26.rb +10 -8
  133. data/test/regression/test_chart_axis27.rb +1 -1
  134. data/test/regression/test_chart_axis28.rb +1 -1
  135. data/test/regression/test_chart_axis29.rb +1 -1
  136. data/test/regression/test_chart_axis33.rb +1 -1
  137. data/test/regression/test_chart_axis42.rb +44 -0
  138. data/test/regression/test_chart_axis43.rb +44 -0
  139. data/test/regression/test_chart_axis44.rb +54 -0
  140. data/test/regression/test_chart_axis45.rb +54 -0
  141. data/test/regression/test_chart_axis46.rb +54 -0
  142. data/test/regression/test_chart_combined10.rb +43 -0
  143. data/test/regression/test_chart_combined11.rb +63 -0
  144. data/test/regression/test_chart_data_labels25.rb +1 -1
  145. data/test/regression/test_chart_doughnut07.rb +37 -0
  146. data/test/regression/test_chart_font09.rb +1 -1
  147. data/test/regression/test_chart_legend03.rb +41 -0
  148. data/test/regression/test_chart_legend04.rb +41 -0
  149. data/test/regression/test_chart_legend05.rb +41 -0
  150. data/test/regression/test_chart_legend06.rb +41 -0
  151. data/test/regression/test_chart_legend07.rb +38 -0
  152. data/test/regression/test_chart_line05.rb +43 -0
  153. data/test/regression/test_chart_line06.rb +43 -0
  154. data/test/regression/test_chart_size03.rb +4 -1
  155. data/test/regression/test_comment13.rb +36 -0
  156. data/test/regression/test_comment14.rb +29 -0
  157. data/test/regression/test_comment15.rb +28 -0
  158. data/test/regression/test_comment16.rb +34 -0
  159. data/test/regression/test_cond_format19.rb +64 -0
  160. data/test/regression/test_cond_format20.rb +43 -0
  161. data/test/regression/test_format15.rb +26 -0
  162. data/test/regression/test_header_image15.rb +36 -0
  163. data/test/regression/test_header_image16.rb +42 -0
  164. data/test/regression/test_header_image17.rb +46 -0
  165. data/test/regression/test_header_image18.rb +48 -0
  166. data/test/regression/test_header_image19.rb +36 -0
  167. data/test/regression/test_hyperlink32.rb +27 -0
  168. data/test/regression/test_hyperlink33.rb +28 -0
  169. data/test/regression/test_hyperlink34.rb +33 -0
  170. data/test/regression/test_hyperlink35.rb +39 -0
  171. data/test/regression/test_hyperlink36.rb +34 -0
  172. data/test/regression/test_hyperlink37.rb +33 -0
  173. data/test/regression/test_hyperlink38.rb +27 -0
  174. data/test/regression/test_hyperlink39.rb +27 -0
  175. data/test/regression/test_hyperlink40.rb +27 -0
  176. data/test/regression/test_hyperlink41.rb +27 -0
  177. data/test/regression/test_hyperlink42.rb +27 -0
  178. data/test/regression/test_hyperlink43.rb +27 -0
  179. data/test/regression/test_hyperlink44.rb +27 -0
  180. data/test/regression/test_hyperlink45.rb +27 -0
  181. data/test/regression/test_hyperlink47.rb +27 -0
  182. data/test/regression/test_hyperlink48.rb +31 -0
  183. data/test/regression/test_hyperlink49.rb +29 -0
  184. data/test/regression/test_image06.rb +5 -5
  185. data/test/regression/test_image08.rb +5 -4
  186. data/test/regression/test_image15.rb +4 -2
  187. data/test/regression/test_image28.rb +1 -1
  188. data/test/regression/test_image36.rb +26 -0
  189. data/test/regression/test_image44.rb +28 -0
  190. data/test/regression/test_image45.rb +29 -0
  191. data/test/regression/test_image46.rb +29 -0
  192. data/test/regression/test_image47.rb +28 -0
  193. data/test/regression/test_image48.rb +32 -0
  194. data/test/regression/test_image49.rb +38 -0
  195. data/test/regression/test_image50.rb +24 -0
  196. data/test/regression/test_image51.rb +30 -0
  197. data/test/regression/test_object_position01.rb +26 -0
  198. data/test/regression/test_object_position02.rb +26 -0
  199. data/test/regression/test_object_position03.rb +26 -0
  200. data/test/regression/test_object_position04.rb +44 -0
  201. data/test/regression/test_object_position06.rb +28 -0
  202. data/test/regression/test_object_position07.rb +28 -0
  203. data/test/regression/test_object_position08.rb +47 -0
  204. data/test/regression/test_object_position09.rb +50 -0
  205. data/test/regression/test_object_position10.rb +28 -0
  206. data/test/regression/test_object_position12.rb +25 -0
  207. data/test/regression/test_object_position13.rb +25 -0
  208. data/test/regression/test_object_position14.rb +25 -0
  209. data/test/regression/test_object_position15.rb +29 -0
  210. data/test/regression/test_object_position16.rb +29 -0
  211. data/test/regression/test_object_position17.rb +29 -0
  212. data/test/regression/test_object_position18.rb +29 -0
  213. data/test/regression/test_object_position19.rb +29 -0
  214. data/test/regression/test_object_position20.rb +29 -0
  215. data/test/regression/test_shape_connect01.rb +4 -2
  216. data/test/regression/test_table23.rb +56 -0
  217. data/test/regression/test_table24.rb +27 -0
  218. data/test/regression/test_table25.rb +27 -0
  219. data/test/regression/xlsx_files/array_formula03.xlsx +0 -0
  220. data/test/regression/xlsx_files/autofilter08.xlsx +0 -0
  221. data/test/regression/xlsx_files/autofilter09.xlsx +0 -0
  222. data/test/regression/xlsx_files/autofilter10.xlsx +0 -0
  223. data/test/regression/xlsx_files/chart_axis26.xlsx +0 -0
  224. data/test/regression/xlsx_files/chart_axis27.xlsx +0 -0
  225. data/test/regression/xlsx_files/chart_axis28.xlsx +0 -0
  226. data/test/regression/xlsx_files/chart_axis29.xlsx +0 -0
  227. data/test/regression/xlsx_files/chart_axis33.xlsx +0 -0
  228. data/test/regression/xlsx_files/chart_axis42.xlsx +0 -0
  229. data/test/regression/xlsx_files/chart_axis43.xlsx +0 -0
  230. data/test/regression/xlsx_files/chart_axis44.xlsx +0 -0
  231. data/test/regression/xlsx_files/chart_axis45.xlsx +0 -0
  232. data/test/regression/xlsx_files/chart_axis46.xlsx +0 -0
  233. data/test/regression/xlsx_files/chart_combined10.xlsx +0 -0
  234. data/test/regression/xlsx_files/chart_combined11.xlsx +0 -0
  235. data/test/regression/xlsx_files/chart_data_labels25.xlsx +0 -0
  236. data/test/regression/xlsx_files/chart_doughnut07.xlsx +0 -0
  237. data/test/regression/xlsx_files/chart_font09.xlsx +0 -0
  238. data/test/regression/xlsx_files/chart_legend03.xlsx +0 -0
  239. data/test/regression/xlsx_files/chart_legend04.xlsx +0 -0
  240. data/test/regression/xlsx_files/chart_legend05.xlsx +0 -0
  241. data/test/regression/xlsx_files/chart_legend06.xlsx +0 -0
  242. data/test/regression/xlsx_files/chart_legend07.xlsx +0 -0
  243. data/test/regression/xlsx_files/chart_line05.xlsx +0 -0
  244. data/test/regression/xlsx_files/chart_line06.xlsx +0 -0
  245. data/test/regression/xlsx_files/comment13.xlsx +0 -0
  246. data/test/regression/xlsx_files/comment14.xlsx +0 -0
  247. data/test/regression/xlsx_files/comment15.xlsx +0 -0
  248. data/test/regression/xlsx_files/comment16.xlsx +0 -0
  249. data/test/regression/xlsx_files/cond_format19.xlsx +0 -0
  250. data/test/regression/xlsx_files/cond_format20.xlsx +0 -0
  251. data/test/regression/xlsx_files/format15.xlsx +0 -0
  252. data/test/regression/xlsx_files/header_image15.xlsx +0 -0
  253. data/test/regression/xlsx_files/header_image16.xlsx +0 -0
  254. data/test/regression/xlsx_files/header_image17.xlsx +0 -0
  255. data/test/regression/xlsx_files/header_image18.xlsx +0 -0
  256. data/test/regression/xlsx_files/header_image19.xlsx +0 -0
  257. data/test/regression/xlsx_files/hyperlink32.xlsx +0 -0
  258. data/test/regression/xlsx_files/hyperlink33.xlsx +0 -0
  259. data/test/regression/xlsx_files/hyperlink34.xlsx +0 -0
  260. data/test/regression/xlsx_files/hyperlink35.xlsx +0 -0
  261. data/test/regression/xlsx_files/hyperlink36.xlsx +0 -0
  262. data/test/regression/xlsx_files/hyperlink37.xlsx +0 -0
  263. data/test/regression/xlsx_files/hyperlink38.xlsx +0 -0
  264. data/test/regression/xlsx_files/hyperlink39.xlsx +0 -0
  265. data/test/regression/xlsx_files/hyperlink40.xlsx +0 -0
  266. data/test/regression/xlsx_files/hyperlink41.xlsx +0 -0
  267. data/test/regression/xlsx_files/hyperlink42.xlsx +0 -0
  268. data/test/regression/xlsx_files/hyperlink43.xlsx +0 -0
  269. data/test/regression/xlsx_files/hyperlink44.xlsx +0 -0
  270. data/test/regression/xlsx_files/hyperlink45.xlsx +0 -0
  271. data/test/regression/xlsx_files/hyperlink46.xlsx +0 -0
  272. data/test/regression/xlsx_files/hyperlink47.xlsx +0 -0
  273. data/test/regression/xlsx_files/hyperlink48.xlsx +0 -0
  274. data/test/regression/xlsx_files/hyperlink49.xlsx +0 -0
  275. data/test/regression/xlsx_files/image06.xlsx +0 -0
  276. data/test/regression/xlsx_files/image36.xlsx +0 -0
  277. data/test/regression/xlsx_files/image44.xlsx +0 -0
  278. data/test/regression/xlsx_files/image45.xlsx +0 -0
  279. data/test/regression/xlsx_files/image46.xlsx +0 -0
  280. data/test/regression/xlsx_files/image47.xlsx +0 -0
  281. data/test/regression/xlsx_files/image48.xlsx +0 -0
  282. data/test/regression/xlsx_files/image49.xlsx +0 -0
  283. data/test/regression/xlsx_files/image50.xlsx +0 -0
  284. data/test/regression/xlsx_files/image51.xlsx +0 -0
  285. data/test/regression/xlsx_files/object_position01.xlsx +0 -0
  286. data/test/regression/xlsx_files/object_position02.xlsx +0 -0
  287. data/test/regression/xlsx_files/object_position03.xlsx +0 -0
  288. data/test/regression/xlsx_files/object_position04.xlsx +0 -0
  289. data/test/regression/xlsx_files/object_position06.xlsx +0 -0
  290. data/test/regression/xlsx_files/object_position07.xlsx +0 -0
  291. data/test/regression/xlsx_files/object_position08.xlsx +0 -0
  292. data/test/regression/xlsx_files/object_position09.xlsx +0 -0
  293. data/test/regression/xlsx_files/object_position10.xlsx +0 -0
  294. data/test/regression/xlsx_files/object_position12.xlsx +0 -0
  295. data/test/regression/xlsx_files/object_position13.xlsx +0 -0
  296. data/test/regression/xlsx_files/object_position14.xlsx +0 -0
  297. data/test/regression/xlsx_files/object_position15.xlsx +0 -0
  298. data/test/regression/xlsx_files/object_position16.xlsx +0 -0
  299. data/test/regression/xlsx_files/object_position17.xlsx +0 -0
  300. data/test/regression/xlsx_files/object_position18.xlsx +0 -0
  301. data/test/regression/xlsx_files/object_position19.xlsx +0 -0
  302. data/test/regression/xlsx_files/object_position20.xlsx +0 -0
  303. data/test/regression/xlsx_files/table23.xlsx +0 -0
  304. data/test/regression/xlsx_files/table24.xlsx +0 -0
  305. data/test/regression/xlsx_files/table25.xlsx +0 -0
  306. data/test/test_example_match.rb +955 -780
  307. data/test/workbook/test_check_sheetname.rb +51 -0
  308. data/test/workbook/test_write_workbook_view.rb +36 -0
  309. data/test/worksheet/test_write_data_validation_02.rb +17 -0
  310. data/test/worksheet/test_write_sheet_view.rb +19 -1
  311. data/write_xlsx.gemspec +1 -0
  312. metadata +349 -7
  313. data/test/package/comments/test_write_text_t.rb +0 -44
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d1ecd38fb615885768458a04b082d759437fbaf7fb2e07900cc558d18e400e51
4
- data.tar.gz: d1fa5e1696685c9bba199b4ee922c488144f5a2f852644e24fcedd38fed29035
3
+ metadata.gz: 9c3893d317a3ab9f246b62c9d6b6b3a727abd9ab539da4edf52c4029f076d566
4
+ data.tar.gz: 64861b9ce57ebd55ce67508b33be19705049a8db520edfacc1fd40d8547c2b9c
5
5
  SHA512:
6
- metadata.gz: 1162adaf9f347ef7f9e986b0596877edc9a4e059b1055e5913c576583017af41b78710c44252c2ced77b06dcdd818af269f3c98282e9bc767f211237e8313fac
7
- data.tar.gz: cd4eb41156f364e4685487ae32876d8b35d7907f7f7068442fb22d2afc6a24217794bea5e571720d6db14b80b7c7368ac08502071d5290cc696cd80588901cdd
6
+ metadata.gz: c3870b13ed05dca60597ecc86662d15d2ec143667e6ff29349c4409d2dd7966eb9f7246f14071a06524a15f5039cb8ec2d4c6c4fb99206b1377f452abe94eddc
7
+ data.tar.gz: b776541fecba7724e59e5742939e331944ea9a08d87eba2528d29404f9f34bbab8a8abe548fd52735a15c72e42e54c54cc73ad5c06765521647771178229fab0
data/.gitignore CHANGED
@@ -6,6 +6,7 @@ GTAGS
6
6
  .bundle
7
7
  .config
8
8
  .yardoc
9
+ .byebug_history
9
10
  Gemfile.lock
10
11
  InstalledFiles
11
12
  _site
data/Changes CHANGED
@@ -1,5 +1,83 @@
1
1
  Change history of write_xlsx rubygem.
2
2
 
3
+ 2021-02-14 v1.04.0
4
+
5
+ Added support for "stacked" and "percent_stacked" Line charts.
6
+
7
+ Fix for worksheet objects (charts and images) that are inserted with an
8
+ offset that starts in a hidden cell.
9
+
10
+ Removed error in add_worksheet() for sheet name "History" which is a
11
+ reserved name in English version of Excel. However, this is an allowed
12
+ worksheet name in some Excel variants so the warning has been turned into
13
+ a documentation note instead.
14
+
15
+
16
+ 2021-02-13 v1.03.0
17
+
18
+ Fix for duplicate images being copied to an Excel::Writer::XLSX
19
+ file. Excel uses an optimization where it only stores one copy of a
20
+ repeated/duplicate image in a workbook. WriteXLSX didn't do
21
+ this which meant that the file size would increase when then was a large
22
+ number of repeated images. This release fixes that issue and replicates
23
+ Excel's behaviour.
24
+
25
+ 2021-02-12 v1.02.0
26
+
27
+ Added support for hyperlinks in worksheet images.
28
+
29
+ Increased allowable url length from 255 to 2079 characters, as allowed in
30
+ more recent versions of Excel.
31
+
32
+
33
+ 2021-02-08 v1.01.0
34
+
35
+ Added support for stacked and East Asian vertical chart fonts.
36
+
37
+ Added option to control positioning of charts or images when cells are
38
+ resized.
39
+
40
+ Added support for combining Pie/Doughnut charts.
41
+
42
+ Fixed sizing of cell comment boxes when they cross columns/rows that have
43
+ size changes that occur after the comment is written. Comments should
44
+ now behave like other worksheet objects such as images and charts.
45
+
46
+ Fix for structured reference in chart ranges.
47
+
48
+ 2021-01-23 v1.00.0
49
+
50
+ Fixed issue where images that started in hidden rows/columns weren't placed
51
+ correctly in the worksheet.
52
+
53
+
54
+ 2021-01-08 v0.99.0
55
+
56
+ Added font and font_size parameters to write_comment().
57
+
58
+ Allow formulas in date field of data_validation().
59
+
60
+ Added top_left chart legend position.
61
+
62
+ Added legend formatting options.
63
+
64
+ Added set_tab_ratio() method to set the ratio between the worksheet tabs
65
+ and the horizontal slider.
66
+
67
+ Added worksheet hide_row_col_headers() method to turn off worksheet row
68
+ and column headings.
69
+
70
+ Add functionality to align chart category axis labels.
71
+
72
+ Fix for issue with special characters in worksheet table functions.
73
+
74
+ Fix handling of 'num_format': '0' in duplicate formats.
75
+
76
+
77
+ 2021-01-03 v0.98.0
78
+
79
+ fixed for autofilter rule with blanks plus another filter.
80
+
3
81
  2021-01-02 v0.97.0
4
82
 
5
83
  Added Excel 2010 data bar features such as solid fills and control over
data/LICENSE.txt CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2012-2020 Hideo NAKAMURA
1
+ Copyright (c) 2012-2021 Hideo NAKAMURA
2
2
 
3
3
  MIT License
4
4
 
data/README.md CHANGED
@@ -5,7 +5,7 @@
5
5
 
6
6
  gem to create a new file in the Excel 2007+ XLSX format, and you can use the
7
7
  same interface as writeexcel gem. write_xlsx is converted from Perl's module
8
- [Excel::Writer::XLSX-0.97](https://github.com/jmcnamara/excel-writer-xlsx) .
8
+ [Excel::Writer::XLSX-1.04](https://github.com/jmcnamara/excel-writer-xlsx/tree/CPAN_1.04)
9
9
 
10
10
  ## Description
11
11
 
@@ -85,7 +85,7 @@ the first worksheet in an Excel XML spreadsheet called ruby.xlsx:
85
85
  Original Perl module was written by John McNamara(jmcnamara@cpan.org).
86
86
 
87
87
  Converted to ruby by Hideo NAKAMURA(nakamrua.hideo@gmail.com)
88
- Copyright (c) 2012-2020 Hideo NAKAMURA.
88
+ Copyright (c) 2012-2021 Hideo NAKAMURA.
89
89
 
90
90
  See LICENSE.txt for further details.
91
91
 
data/examples/a_simple.rb CHANGED
@@ -7,7 +7,7 @@
7
7
  # write text and numbers to an Excel xlsx file.
8
8
  #
9
9
  # reverse(c), March 2001, John McNamara, jmcnamara@cpan.org
10
- # convert to ruby by Hideo NAKAMURA, cxn03651@msj.biglobe.ne.jp
10
+ # convert to ruby by Hideo NAKAMURA, nakamura.hideo@gmail.com
11
11
  #
12
12
 
13
13
  require 'write_xlsx'
@@ -10,7 +10,7 @@
10
10
  # used to extract the vbaProject.bin file.
11
11
  #
12
12
  # reverse('(c)'), November 2012, John McNamara, jmcnamara@cpan.org
13
- # convert to ruby by Hideo NAKAMURA, cxn03651@msj.biglobe.ne.jp
13
+ # convert to ruby by Hideo NAKAMURA, nakamura.hideo@gmail.com
14
14
  #
15
15
 
16
16
  require 'write_xlsx'
@@ -7,7 +7,7 @@
7
7
  # array formulas.
8
8
  #
9
9
  # reverse(c), August 2004, John McNamara, jmcnamara@cpan.org
10
- # convert to ruby by Hideo NAKAMURA, cxn03651@msj.biglobe.ne.jp
10
+ # convert to ruby by Hideo NAKAMURA, nakamura.hideo@gmail.com
11
11
  #
12
12
 
13
13
  require 'write_xlsx'
@@ -6,7 +6,7 @@
6
6
  # A demo of an Area chart in Excel::Writer::XLSX.
7
7
  #
8
8
  # reverse('ゥ'), March 2011, John McNamara, jmcnamara@cpan.org
9
- # convert to ruby by Hideo NAKAMURA, cxn03651@msj.biglobe.ne.jp
9
+ # convert to ruby by Hideo NAKAMURA, nakamura.hideo@gmail.com
10
10
  #
11
11
 
12
12
  require 'write_xlsx'
@@ -53,6 +53,9 @@
53
53
  chart.set_style(11)
54
54
 
55
55
  # Insert the chart into the worksheet (with an offset).
56
- worksheet.insert_chart('D2', chart, 25, 10)
56
+ worksheet.insert_chart(
57
+ 'D2', chart,
58
+ :x_offset => 25, :y_offset => 10
59
+ )
57
60
 
58
61
  workbook.close
@@ -6,7 +6,7 @@
6
6
  # A demo of an Bar chart in Excel::Writer::XLSX.
7
7
  #
8
8
  # reverse('c'), March 2011, John McNamara, jmcnamara@cpan.org
9
- # convert to ruby by Hideo NAKAMURA, cxn03651@msj.biglobe.ne.jp
9
+ # convert to ruby by Hideo NAKAMURA, nakamura.hideo@gmail.com
10
10
  #
11
11
 
12
12
  require 'write_xlsx'
@@ -53,6 +53,9 @@
53
53
  chart.set_style(11)
54
54
 
55
55
  # Insert the chart into the worksheet (with an offset).
56
- worksheet.insert_chart('D2', chart, 25, 10)
56
+ worksheet.insert_chart(
57
+ 'D2', chart,
58
+ :x_offset => 25, :y_offset => 10
59
+ )
57
60
 
58
61
  workbook.close
@@ -5,7 +5,7 @@
5
5
  # A demo of a clustered category chart in Excel::Writer::XLSX.
6
6
  #
7
7
  # reverse ('(c)'), March 2015, John McNamara, jmcnamara@cpan.org
8
- # convert to ruby by Hideo NAKAMURA, cxn03651@msj.biglobe.ne.jp
8
+ # convert to ruby by Hideo NAKAMURA, nakamura.hideo@gmail.com
9
9
  #
10
10
 
11
11
  require 'write_xlsx'
@@ -6,7 +6,7 @@
6
6
  # A demo of an Area chart in Excel::Writer::XLSX.
7
7
  #
8
8
  # reverse('ゥ'), March 2011, John McNamara, jmcnamara@cpan.org
9
- # convert to ruby by Hideo NAKAMURA, cxn03651@msj.biglobe.ne.jp
9
+ # convert to ruby by Hideo NAKAMURA, nakamura.hideo@gmail.com
10
10
  #
11
11
 
12
12
  require 'write_xlsx'
@@ -53,6 +53,9 @@
53
53
  chart.set_style(11)
54
54
 
55
55
  # Insert the chart into the worksheet (with an offset).
56
- worksheet.insert_chart('D2', chart, 25, 10)
56
+ worksheet.insert_chart(
57
+ 'D2', chart,
58
+ :x_offset => 25, :y_offset => 10
59
+ )
57
60
 
58
61
  workbook.close
@@ -6,7 +6,7 @@
6
6
  # An example of a Combined chart in WriteXLSX.
7
7
  #
8
8
  # reverse ('(c)'), March 2015, John McNamara, jmcnamara@cpan.org
9
- # convert to ruby by Hideo NAKAMURA, cxn03651@msj.biglobe.ne.jp
9
+ # convert to ruby by Hideo NAKAMURA, nakamura.hideo@gmail.com
10
10
  #
11
11
 
12
12
  require 'write_xlsx'
@@ -7,7 +7,7 @@
7
7
  # WriteXLSX.
8
8
  #
9
9
  # reverse ('(c)'), December 2012, John McNamara, jmcnamara@cpan.org
10
- # convert to ruby by Hideo NAKAMURA, cxn03651@msj.biglobe.ne.jp
10
+ # convert to ruby by Hideo NAKAMURA, nakamura.hideo@gmail.com
11
11
  #
12
12
 
13
13
  require 'write_xlsx'
@@ -54,7 +54,10 @@
54
54
  chart1.set_table
55
55
 
56
56
  # Insert the chart into the worksheet (with an offset).
57
- worksheet.insert_chart('D2', chart1, 25, 10)
57
+ worksheet.insert_chart(
58
+ 'D2', chart1,
59
+ :x_offset => 25, :y_offset => 10
60
+ )
58
61
 
59
62
  #
60
63
  # Create a second charat.
@@ -88,6 +91,9 @@
88
91
  chart2.set_legend(:position => 'none')
89
92
 
90
93
  # Insert the chart into the worksheet (with an offset).
91
- worksheet.insert_chart('D18', chart2, 25, 11)
94
+ worksheet.insert_chart(
95
+ 'D18', chart2,
96
+ :x_offset => 25, :y_offset => 11
97
+ )
92
98
 
93
99
  workbook.close
@@ -10,7 +10,7 @@
10
10
  # High-Low Lines and Up-Down Bars.
11
11
  #
12
12
  # reverse ('(c)'), December 2012, John McNamara, jmcnamara@cpan.org
13
- # convert to ruby by Hideo NAKAMURA, cxn03651@msj.biglobe.ne.jp
13
+ # convert to ruby by Hideo NAKAMURA, nakamura.hideo@gmail.com
14
14
  #
15
15
 
16
16
  require 'write_xlsx'
@@ -62,7 +62,10 @@
62
62
  chart1.set_title(:name => 'Chart with Trendlines')
63
63
 
64
64
  # Insert the chart into the worksheet (with an offset).
65
- worksheet.insert_chart('D2', chart1, 25, 10)
65
+ worksheet.insert_chart(
66
+ 'D2', chart1,
67
+ :x_offset => 25, :y_offset => 10
68
+ )
66
69
 
67
70
 
68
71
  #######################################################################
@@ -91,7 +94,10 @@
91
94
  chart2.set_title(:name => 'Chart with Data Labels and Markers')
92
95
 
93
96
  # Insert the chart into the worksheet (with an offset).
94
- worksheet.insert_chart('D18', chart2, 25, 10)
97
+ worksheet.insert_chart(
98
+ 'D18', chart2,
99
+ :x_offset => 25, :y_offset => 10
100
+ )
95
101
 
96
102
 
97
103
  #######################################################################
@@ -119,7 +125,10 @@
119
125
  chart3.set_title(:name => 'Chart with Error Bars')
120
126
 
121
127
  # Insert the chart into the worksheet (with an offset).
122
- worksheet.insert_chart('D34', chart3, 25, 10)
128
+ worksheet.insert_chart(
129
+ 'D34', chart3,
130
+ :x_offset => 25, :y_offset => 10
131
+ )
123
132
 
124
133
 
125
134
  #######################################################################
@@ -149,7 +158,10 @@
149
158
  chart4.set_title(:name => 'Chart with Up-Down Bars')
150
159
 
151
160
  # Insert the chart into the worksheet (with an offset).
152
- worksheet.insert_chart('D50', chart4, 25, 10)
161
+ worksheet.insert_chart(
162
+ 'D50', chart4,
163
+ :x_offset => 25, :y_offset => 10
164
+ )
153
165
 
154
166
 
155
167
  #######################################################################
@@ -179,7 +191,10 @@
179
191
  chart5.set_title(:name => 'Chart with High-Low Lines')
180
192
 
181
193
  # Insert the chart into the worksheet (with an offset).
182
- worksheet.insert_chart('D66', chart5, 25, 10)
194
+ worksheet.insert_chart(
195
+ 'D66', chart5,
196
+ :x_offset => 25, :y_offset => 10
197
+ )
183
198
 
184
199
 
185
200
  #######################################################################
@@ -209,6 +224,9 @@
209
224
  chart6.set_title(:name => 'Chart with Drop Lines')
210
225
 
211
226
  # Insert the chart into the worksheet (with an offset).
212
- worksheet.insert_chart('D82', chart6, 25, 10)
227
+ worksheet.insert_chart(
228
+ 'D82', chart6,
229
+ :x_offset => 25, :y_offset => 10
230
+ )
213
231
 
214
232
  workbook.close
@@ -12,7 +12,7 @@
12
12
  # formatting to each point in the series.
13
13
  #
14
14
  # reverse ('(c)'), March 2011, John McNamara, jmcnamara@cpan.org
15
- # convert to ruby by Hideo NAKAMURA, cxn03651@msj.biglobe.ne.jp
15
+ # convert to ruby by Hideo NAKAMURA, nakamura.hideo@gmail.com
16
16
  #
17
17
 
18
18
  require 'write_xlsx'
@@ -50,7 +50,10 @@
50
50
  chart1.set_style(10)
51
51
 
52
52
  # Insert the chart into the worksheet (with an offset).
53
- worksheet.insert_chart('C2', chart1, 25, 10)
53
+ worksheet.insert_chart(
54
+ 'C2', chart1,
55
+ :x_offset => 25, :y_offset => 10
56
+ )
54
57
 
55
58
 
56
59
  #
@@ -77,7 +80,10 @@
77
80
 
78
81
 
79
82
  # Insert the chart into the worksheet (with an offset).
80
- worksheet.insert_chart('C18', chart2, 25, 10)
83
+ worksheet.insert_chart(
84
+ 'C18', chart2,
85
+ :x_offset => 25, :y_offset => 10
86
+ )
81
87
 
82
88
 
83
89
  #
@@ -101,7 +107,10 @@
101
107
  chart3.set_rotation(90)
102
108
 
103
109
  # Insert the chart into the worksheet (with an offset).
104
- worksheet.insert_chart('C34', chart3, 25, 10)
110
+ worksheet.insert_chart(
111
+ 'C34', chart3,
112
+ :x_offset => 25, :y_offset => 10
113
+ )
105
114
 
106
115
 
107
116
  #
@@ -125,6 +134,9 @@
125
134
  chart4.set_hole_size(33)
126
135
 
127
136
  # Insert the chart into the worksheet (with an offset).
128
- worksheet.insert_chart('C50', chart4, 25, 10)
137
+ worksheet.insert_chart(
138
+ 'C50', chart4,
139
+ :x_offset => 25, :y_offset => 10
140
+ )
129
141
 
130
142
  workbook.close
@@ -0,0 +1,73 @@
1
+ # #!/usr/bin/env ruby
2
+
3
+ # #######################################################################
4
+ # #
5
+ # # A demo of an Gauge Chart in WriteXLSX gem.
6
+ # #
7
+ # # A Gauge Chart isn't a native chart type in Excel. It is constructed by
8
+ # # combining a doughnut chart and a pie chart and by using some non-filled
9
+ # # elements. This example follows the following online example of how to create
10
+ # # a Gauge Chart in Excel: https://www.excel-easy.com/examples/gauge-chart.html
11
+ # #
12
+ # # reverse ('(c)'), May 2019, John McNamara, jmcnamara@cpan.org
13
+ # # convert to ruby by Hideo NAKAMURA, nakamura.hideo@gmail.com
14
+ # #
15
+
16
+ require 'write_xlsx'
17
+
18
+ workbook = WriteXLSX.new('chart_gauge.xlsx')
19
+ worksheet = workbook.add_worksheet
20
+
21
+ chart_doughnut = workbook.add_chart(:type => 'doughnut', :embedded => 1)
22
+ chart_pie = workbook.add_chart(:type => 'pie', :embedded => 1)
23
+
24
+ # Add some data for the Doughnut and Pie charts. This is set up so the
25
+ # gauge goes from 0-100. It is initially set at 75%.
26
+ worksheet.write_col('H2', ['Donut', 25, 50, 25, 100])
27
+ worksheet.write_col('I2', ['Pie', 75, 1, '=200-I4-I3'])
28
+
29
+ # Configure the doughnut chart as the background for the gauge.
30
+ chart_doughnut.add_series(
31
+ :name => '=Sheet1!$H$2',
32
+ :values => '=Sheet1!$H$3:$H$6',
33
+ :points => [
34
+ { :fill => { :color => 'green' } },
35
+ { :fill => { :color => 'yellow' } },
36
+ { :fill => { :color => 'red' } },
37
+ { :fill => { :none => 1 } }
38
+ ]
39
+ )
40
+
41
+ # Rotate chart so the gauge parts are above the horizontal.
42
+ chart_doughnut.set_rotation(270)
43
+
44
+ # Turn off the chart legend.
45
+ chart_doughnut.set_legend(:none => 1)
46
+
47
+ # Turn off the chart fill and border.
48
+ chart_doughnut.set_chartarea(
49
+ :border => { :none => 1 },
50
+ :fill => { :none => 1 }
51
+ )
52
+
53
+ # Configure the pie chart as the needle for the gauge.
54
+ chart_pie.add_series(
55
+ :name => '=Sheet1!$I$2',
56
+ :values => '=Sheet1!$I$3:$I$6',
57
+ :points => [
58
+ { :fill => { :none => 1 } },
59
+ { :fill => { :color => 'black' } },
60
+ { :fill => { :none => 1 } }
61
+ ]
62
+ )
63
+
64
+ # Rotate the pie chart/needle to align with the doughnut/gauge.
65
+ chart_pie.set_rotation(270)
66
+
67
+ # Combine the pie and doughnut charts.
68
+ chart_doughnut.combine(chart_pie)
69
+
70
+ # Insert the chart into the worksheet.
71
+ worksheet.insert_chart('A1', chart_doughnut)
72
+
73
+ workbook.close