write_xlsx 0.89.0 → 1.01.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (340) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/Changes +98 -0
  4. data/LICENSE.txt +1 -1
  5. data/README.md +2 -2
  6. data/examples/a_simple.rb +2 -7
  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 +5 -2
  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/conditional_format.rb +73 -46
  28. data/examples/data_validate.rb +1 -1
  29. data/examples/date_time.rb +1 -1
  30. data/examples/demo.rb +5 -8
  31. data/examples/formats.rb +1 -1
  32. data/examples/headers.rb +1 -1
  33. data/examples/hide_row_col.rb +1 -1
  34. data/examples/hide_sheet.rb +1 -1
  35. data/examples/hyperlink1.rb +5 -12
  36. data/examples/indent.rb +1 -1
  37. data/examples/macros.rb +1 -1
  38. data/examples/merge1.rb +1 -1
  39. data/examples/merge2.rb +1 -1
  40. data/examples/merge3.rb +1 -1
  41. data/examples/merge4.rb +1 -1
  42. data/examples/merge5.rb +1 -1
  43. data/examples/merge6.rb +1 -1
  44. data/examples/outline.rb +1 -1
  45. data/examples/outline_collapsed.rb +1 -1
  46. data/examples/panes.rb +1 -1
  47. data/examples/properties.rb +1 -1
  48. data/examples/regions.rb +1 -1
  49. data/examples/rich_strings.rb +1 -1
  50. data/examples/right_to_left.rb +1 -1
  51. data/examples/shape1.rb +1 -1
  52. data/examples/shape2.rb +1 -1
  53. data/examples/shape3.rb +1 -1
  54. data/examples/shape4.rb +1 -1
  55. data/examples/shape5.rb +1 -1
  56. data/examples/shape6.rb +1 -1
  57. data/examples/shape7.rb +1 -1
  58. data/examples/shape8.rb +1 -1
  59. data/examples/shape_all.rb +1 -1
  60. data/examples/sparklines1.rb +1 -1
  61. data/examples/sparklines2.rb +1 -1
  62. data/examples/stats.rb +1 -1
  63. data/examples/stats_ext.rb +1 -1
  64. data/examples/stocks.rb +1 -1
  65. data/examples/tab_colors.rb +1 -1
  66. data/examples/tables.rb +1 -1
  67. data/lib/write_xlsx/chart.rb +124 -240
  68. data/lib/write_xlsx/chart/area.rb +1 -1
  69. data/lib/write_xlsx/chart/axis.rb +4 -4
  70. data/lib/write_xlsx/chart/bar.rb +1 -1
  71. data/lib/write_xlsx/chart/caption.rb +3 -1
  72. data/lib/write_xlsx/chart/column.rb +1 -1
  73. data/lib/write_xlsx/chart/doughnut.rb +1 -1
  74. data/lib/write_xlsx/chart/legend.rb +14 -0
  75. data/lib/write_xlsx/chart/line.rb +1 -1
  76. data/lib/write_xlsx/chart/pie.rb +32 -15
  77. data/lib/write_xlsx/chart/radar.rb +1 -1
  78. data/lib/write_xlsx/chart/scatter.rb +1 -1
  79. data/lib/write_xlsx/chart/series.rb +11 -7
  80. data/lib/write_xlsx/chart/stock.rb +1 -1
  81. data/lib/write_xlsx/chartsheet.rb +35 -7
  82. data/lib/write_xlsx/drawing.rb +28 -8
  83. data/lib/write_xlsx/format.rb +19 -15
  84. data/lib/write_xlsx/package/comments.rb +57 -54
  85. data/lib/write_xlsx/package/conditional_format.rb +360 -39
  86. data/lib/write_xlsx/package/content_types.rb +10 -0
  87. data/lib/write_xlsx/package/core.rb +8 -6
  88. data/lib/write_xlsx/package/custom.rb +125 -0
  89. data/lib/write_xlsx/package/packager.rb +26 -0
  90. data/lib/write_xlsx/package/styles.rb +53 -21
  91. data/lib/write_xlsx/package/table.rb +16 -4
  92. data/lib/write_xlsx/shape.rb +4 -3
  93. data/lib/write_xlsx/sheets.rb +11 -1
  94. data/lib/write_xlsx/sparkline.rb +1 -1
  95. data/lib/write_xlsx/utility.rb +305 -35
  96. data/lib/write_xlsx/version.rb +1 -1
  97. data/lib/write_xlsx/workbook.rb +132 -12
  98. data/lib/write_xlsx/worksheet.rb +397 -163
  99. data/lib/write_xlsx/worksheet/data_validation.rb +10 -14
  100. data/lib/write_xlsx/worksheet/hyperlink.rb +4 -13
  101. data/test/chart/test_write_legend_pos.rb +9 -1
  102. data/test/chartsheet/test_write_sheet_protection.rb +91 -0
  103. data/test/drawing/test_drawing_chart_01.rb +6 -2
  104. data/test/drawing/test_drawing_image_01.rb +12 -3
  105. data/test/drawing/test_drawing_shape_01.rb +8 -5
  106. data/test/drawing/test_drawing_shape_02.rb +12 -5
  107. data/test/drawing/test_drawing_shape_03.rb +8 -5
  108. data/test/drawing/test_drawing_shape_04.rb +8 -24
  109. data/test/drawing/test_drawing_shape_05.rb +8 -5
  110. data/test/drawing/test_drawing_shape_06.rb +11 -6
  111. data/test/drawing/test_drawing_shape_07.rb +11 -6
  112. data/test/drawing/test_write_a_graphic_frame_locks.rb +1 -1
  113. data/test/drawing/test_write_c_chart.rb +1 -1
  114. data/test/drawing/test_write_c_nv_graphic_frame_pr.rb +1 -1
  115. data/test/drawing/test_write_c_nv_pr.rb +1 -1
  116. data/test/drawing/test_write_col.rb +1 -1
  117. data/test/drawing/test_write_col_off.rb +1 -1
  118. data/test/drawing/test_write_ext.rb +1 -1
  119. data/test/drawing/test_write_pos.rb +1 -1
  120. data/test/drawing/test_write_row.rb +1 -1
  121. data/test/drawing/test_write_row_off.rb +1 -1
  122. data/test/drawing/test_write_xfrm_extension.rb +1 -1
  123. data/test/drawing/test_write_xfrm_offset.rb +1 -1
  124. data/test/helper.rb +6 -1
  125. data/test/package/comments/test_comments_01.rb +54 -0
  126. data/test/package/comments/test_comments_02.rb +54 -0
  127. data/test/perl_output/chart_gauge.xlsx +0 -0
  128. data/test/perl_output/formats.xlsx +0 -0
  129. data/test/regression/_test_hyperlink31.rb +26 -0
  130. data/test/regression/images/happy.jpg +0 -0
  131. data/test/regression/images/zero_dpi.jpg +0 -0
  132. data/test/regression/test_array_formula03.rb +36 -0
  133. data/test/regression/test_autofilter08.rb +110 -0
  134. data/test/regression/test_autofilter09.rb +110 -0
  135. data/test/regression/test_autofilter10.rb +110 -0
  136. data/test/regression/test_chart_axis26.rb +10 -8
  137. data/test/regression/test_chart_axis27.rb +1 -1
  138. data/test/regression/test_chart_axis28.rb +1 -1
  139. data/test/regression/test_chart_axis29.rb +1 -1
  140. data/test/regression/test_chart_axis33.rb +1 -1
  141. data/test/regression/test_chart_axis42.rb +44 -0
  142. data/test/regression/test_chart_axis43.rb +44 -0
  143. data/test/regression/test_chart_axis44.rb +54 -0
  144. data/test/regression/test_chart_axis45.rb +54 -0
  145. data/test/regression/test_chart_axis46.rb +54 -0
  146. data/test/regression/test_chart_bar08.rb +3 -0
  147. data/test/regression/test_chart_bar11.rb +3 -0
  148. data/test/regression/test_chart_bar14.rb +3 -0
  149. data/test/regression/test_chart_chartarea05.rb +16 -17
  150. data/test/regression/test_chart_chartarea06.rb +49 -0
  151. data/test/regression/test_chart_combined10.rb +43 -0
  152. data/test/regression/test_chart_combined11.rb +63 -0
  153. data/test/regression/test_chart_data_labels25.rb +61 -0
  154. data/test/regression/test_chart_doughnut07.rb +37 -0
  155. data/test/regression/test_chart_font09.rb +1 -1
  156. data/test/regression/test_chart_format26.rb +48 -0
  157. data/test/regression/test_chart_format27.rb +58 -0
  158. data/test/regression/test_chart_format28.rb +52 -0
  159. data/test/regression/test_chart_format29.rb +59 -0
  160. data/test/regression/test_chart_format30.rb +53 -0
  161. data/test/regression/test_chart_format31.rb +60 -0
  162. data/test/regression/test_chart_legend03.rb +41 -0
  163. data/test/regression/test_chart_legend04.rb +41 -0
  164. data/test/regression/test_chart_legend05.rb +41 -0
  165. data/test/regression/test_chart_legend06.rb +41 -0
  166. data/test/regression/test_chart_legend07.rb +38 -0
  167. data/test/regression/test_chart_size03.rb +4 -1
  168. data/test/regression/test_chart_table03.rb +56 -0
  169. data/test/regression/test_comment13.rb +36 -0
  170. data/test/regression/test_comment14.rb +29 -0
  171. data/test/regression/test_cond_format14.rb +42 -0
  172. data/test/regression/test_cond_format15.rb +53 -0
  173. data/test/regression/test_cond_format16.rb +53 -0
  174. data/test/regression/test_cond_format17.rb +37 -0
  175. data/test/regression/test_cond_format18.rb +136 -0
  176. data/test/regression/test_cond_format19.rb +64 -0
  177. data/test/regression/test_cond_format20.rb +43 -0
  178. data/test/regression/test_date_1904_01.rb +1 -1
  179. data/test/regression/test_escapes04.rb +3 -0
  180. data/test/regression/test_escapes05.rb +3 -0
  181. data/test/regression/test_escapes07.rb +3 -0
  182. data/test/regression/test_escapes08.rb +3 -0
  183. data/test/regression/test_format15.rb +26 -0
  184. data/test/regression/test_hyperlink01.rb +3 -0
  185. data/test/regression/test_hyperlink02.rb +3 -0
  186. data/test/regression/test_hyperlink03.rb +4 -0
  187. data/test/regression/test_hyperlink04.rb +3 -0
  188. data/test/regression/test_hyperlink05.rb +3 -0
  189. data/test/regression/test_hyperlink06.rb +3 -0
  190. data/test/regression/test_hyperlink07.rb +3 -0
  191. data/test/regression/test_hyperlink08.rb +3 -0
  192. data/test/regression/test_hyperlink09.rb +3 -0
  193. data/test/regression/test_hyperlink10.rb +3 -0
  194. data/test/regression/test_hyperlink11.rb +3 -0
  195. data/test/regression/test_hyperlink12.rb +3 -0
  196. data/test/regression/test_hyperlink13.rb +3 -0
  197. data/test/regression/test_hyperlink14.rb +3 -0
  198. data/test/regression/test_hyperlink15.rb +3 -0
  199. data/test/regression/test_hyperlink16.rb +3 -0
  200. data/test/regression/test_hyperlink17.rb +3 -0
  201. data/test/regression/test_hyperlink18.rb +3 -0
  202. data/test/regression/test_hyperlink20.rb +3 -0
  203. data/test/regression/test_hyperlink21.rb +3 -0
  204. data/test/regression/test_hyperlink22.rb +3 -0
  205. data/test/regression/test_hyperlink23.rb +3 -0
  206. data/test/regression/test_hyperlink24.rb +3 -0
  207. data/test/regression/test_hyperlink25.rb +3 -0
  208. data/test/regression/test_hyperlink26.rb +3 -0
  209. data/test/regression/test_hyperlink27.rb +27 -0
  210. data/test/regression/test_hyperlink28.rb +50 -0
  211. data/test/regression/test_hyperlink29.rb +27 -0
  212. data/test/regression/test_hyperlink30.rb +36 -0
  213. data/test/regression/test_image08.rb +5 -4
  214. data/test/regression/test_image15.rb +4 -2
  215. data/test/regression/test_image28.rb +1 -1
  216. data/test/regression/test_image35.rb +26 -0
  217. data/test/regression/test_image36.rb +26 -0
  218. data/test/regression/test_image44.rb +28 -0
  219. data/test/regression/test_image45.rb +28 -0
  220. data/test/regression/test_image46.rb +29 -0
  221. data/test/regression/test_image47.rb +28 -0
  222. data/test/regression/test_object_position01.rb +26 -0
  223. data/test/regression/test_object_position02.rb +26 -0
  224. data/test/regression/test_object_position03.rb +26 -0
  225. data/test/regression/test_object_position04.rb +44 -0
  226. data/test/regression/test_object_position06.rb +28 -0
  227. data/test/regression/test_object_position07.rb +28 -0
  228. data/test/regression/test_object_position08.rb +47 -0
  229. data/test/regression/test_object_position09.rb +50 -0
  230. data/test/regression/test_object_position10.rb +28 -0
  231. data/test/regression/test_properties01.rb +1 -4
  232. data/test/regression/test_properties02.rb +1 -4
  233. data/test/regression/test_properties03.rb +26 -0
  234. data/test/regression/test_properties04.rb +61 -0
  235. data/test/regression/test_properties05.rb +30 -0
  236. data/test/regression/test_shape_connect01.rb +4 -2
  237. data/test/regression/test_table03.rb +3 -0
  238. data/test/regression/test_table04.rb +3 -0
  239. data/test/regression/test_table05.rb +3 -0
  240. data/test/regression/test_table06.rb +3 -0
  241. data/test/regression/test_table20.rb +34 -0
  242. data/test/regression/test_table21.rb +36 -0
  243. data/test/regression/test_table22.rb +32 -0
  244. data/test/regression/test_table23.rb +56 -0
  245. data/test/regression/test_utf8_11.rb +23 -0
  246. data/test/regression/xlsx_files/array_formula03.xlsx +0 -0
  247. data/test/regression/xlsx_files/autofilter08.xlsx +0 -0
  248. data/test/regression/xlsx_files/autofilter09.xlsx +0 -0
  249. data/test/regression/xlsx_files/autofilter10.xlsx +0 -0
  250. data/test/regression/xlsx_files/chart_axis26.xlsx +0 -0
  251. data/test/regression/xlsx_files/chart_axis27.xlsx +0 -0
  252. data/test/regression/xlsx_files/chart_axis28.xlsx +0 -0
  253. data/test/regression/xlsx_files/chart_axis29.xlsx +0 -0
  254. data/test/regression/xlsx_files/chart_axis33.xlsx +0 -0
  255. data/test/regression/xlsx_files/chart_axis42.xlsx +0 -0
  256. data/test/regression/xlsx_files/chart_axis43.xlsx +0 -0
  257. data/test/regression/xlsx_files/chart_axis44.xlsx +0 -0
  258. data/test/regression/xlsx_files/chart_axis45.xlsx +0 -0
  259. data/test/regression/xlsx_files/chart_axis46.xlsx +0 -0
  260. data/test/regression/xlsx_files/chart_chartarea05.xlsx +0 -0
  261. data/test/regression/xlsx_files/chart_chartarea06.xlsx +0 -0
  262. data/test/regression/xlsx_files/chart_combined10.xlsx +0 -0
  263. data/test/regression/xlsx_files/chart_combined11.xlsx +0 -0
  264. data/test/regression/xlsx_files/chart_data_labels25.xlsx +0 -0
  265. data/test/regression/xlsx_files/chart_doughnut07.xlsx +0 -0
  266. data/test/regression/xlsx_files/chart_font09.xlsx +0 -0
  267. data/test/regression/xlsx_files/chart_format26.xlsx +0 -0
  268. data/test/regression/xlsx_files/chart_format27.xlsx +0 -0
  269. data/test/regression/xlsx_files/chart_format28.xlsx +0 -0
  270. data/test/regression/xlsx_files/chart_format29.xlsx +0 -0
  271. data/test/regression/xlsx_files/chart_format30.xlsx +0 -0
  272. data/test/regression/xlsx_files/chart_format31.xlsx +0 -0
  273. data/test/regression/xlsx_files/chart_legend03.xlsx +0 -0
  274. data/test/regression/xlsx_files/chart_legend04.xlsx +0 -0
  275. data/test/regression/xlsx_files/chart_legend05.xlsx +0 -0
  276. data/test/regression/xlsx_files/chart_legend06.xlsx +0 -0
  277. data/test/regression/xlsx_files/chart_legend07.xlsx +0 -0
  278. data/test/regression/xlsx_files/chart_table03.xlsx +0 -0
  279. data/test/regression/xlsx_files/comment13.xlsx +0 -0
  280. data/test/regression/xlsx_files/comment14.xlsx +0 -0
  281. data/test/regression/xlsx_files/cond_format14.xlsx +0 -0
  282. data/test/regression/xlsx_files/cond_format15.xlsx +0 -0
  283. data/test/regression/xlsx_files/cond_format16.xlsx +0 -0
  284. data/test/regression/xlsx_files/cond_format17.xlsx +0 -0
  285. data/test/regression/xlsx_files/cond_format18.xlsx +0 -0
  286. data/test/regression/xlsx_files/cond_format19.xlsx +0 -0
  287. data/test/regression/xlsx_files/cond_format20.xlsx +0 -0
  288. data/test/regression/xlsx_files/date_1904_01.xlsx +0 -0
  289. data/test/regression/xlsx_files/format15.xlsx +0 -0
  290. data/test/regression/xlsx_files/hyperlink27.xlsx +0 -0
  291. data/test/regression/xlsx_files/hyperlink28.xlsx +0 -0
  292. data/test/regression/xlsx_files/hyperlink29.xlsx +0 -0
  293. data/test/regression/xlsx_files/hyperlink30.xlsx +0 -0
  294. data/test/regression/xlsx_files/hyperlink31.xlsx +0 -0
  295. data/test/regression/xlsx_files/image35.xlsx +0 -0
  296. data/test/regression/xlsx_files/image36.xlsx +0 -0
  297. data/test/regression/xlsx_files/image44.xlsx +0 -0
  298. data/test/regression/xlsx_files/image45.xlsx +0 -0
  299. data/test/regression/xlsx_files/image46.xlsx +0 -0
  300. data/test/regression/xlsx_files/image47.xlsx +0 -0
  301. data/test/regression/xlsx_files/object_position01.xlsx +0 -0
  302. data/test/regression/xlsx_files/object_position02.xlsx +0 -0
  303. data/test/regression/xlsx_files/object_position03.xlsx +0 -0
  304. data/test/regression/xlsx_files/object_position04.xlsx +0 -0
  305. data/test/regression/xlsx_files/object_position06.xlsx +0 -0
  306. data/test/regression/xlsx_files/object_position07.xlsx +0 -0
  307. data/test/regression/xlsx_files/object_position08.xlsx +0 -0
  308. data/test/regression/xlsx_files/object_position09.xlsx +0 -0
  309. data/test/regression/xlsx_files/object_position10.xlsx +0 -0
  310. data/test/regression/xlsx_files/properties03.xlsx +0 -0
  311. data/test/regression/xlsx_files/properties04.xlsx +0 -0
  312. data/test/regression/xlsx_files/properties05.xlsx +0 -0
  313. data/test/regression/xlsx_files/table21.xlsx +0 -0
  314. data/test/regression/xlsx_files/table22.xlsx +0 -0
  315. data/test/regression/xlsx_files/table23.xlsx +0 -0
  316. data/test/regression/xlsx_files/utf8_11.xlsx +0 -0
  317. data/test/test_example_match.rb +836 -771
  318. data/test/workbook/test_check_sheetname.rb +61 -0
  319. data/test/workbook/test_worksheet_by_name.rb +35 -0
  320. data/test/workbook/test_write_workbook_view.rb +117 -0
  321. data/test/worksheet/test_cond_format_22.rb +266 -0
  322. data/test/worksheet/test_cond_format_23.rb +242 -0
  323. data/test/worksheet/test_cond_format_24.rb +303 -0
  324. data/test/worksheet/test_data_bar_01.rb +53 -0
  325. data/test/worksheet/test_data_bar_02.rb +79 -0
  326. data/test/worksheet/test_data_bar_03.rb +147 -0
  327. data/test/worksheet/test_data_bar_04.rb +145 -0
  328. data/test/worksheet/test_data_bar_05.rb +147 -0
  329. data/test/worksheet/test_data_bar_06.rb +145 -0
  330. data/test/worksheet/test_data_bar_07.rb +146 -0
  331. data/test/worksheet/test_data_bar_08.rb +54 -0
  332. data/test/worksheet/test_data_bar_09.rb +80 -0
  333. data/test/worksheet/test_data_bar_10.rb +165 -0
  334. data/test/worksheet/test_data_bar_11.rb +167 -0
  335. data/test/worksheet/test_data_bar_12.rb +104 -0
  336. data/test/worksheet/test_write_data_validation_02.rb +44 -0
  337. data/test/worksheet/test_write_hyperlink.rb +0 -7
  338. data/test/worksheet/test_write_sheet_view.rb +19 -1
  339. metadata +308 -5
  340. data/test/package/comments/test_write_text_t.rb +0 -44
@@ -0,0 +1,242 @@
1
+ # -*- coding: utf-8 -*-
2
+ require 'helper'
3
+ require 'write_xlsx'
4
+ require 'stringio'
5
+
6
+ class TestCondFormat23 < Minitest::Test
7
+ def setup
8
+ @workbook = WriteXLSX.new(StringIO.new)
9
+ @worksheet = @workbook.add_worksheet('')
10
+ end
11
+
12
+ ###############################################################################
13
+ #
14
+ # Tests for Excel::Writer::XLSX::Worksheet methods.
15
+ #
16
+
17
+ ###############################################################################
18
+ #
19
+ # Test the _assemble_xml_file() method.
20
+ #
21
+ # Test conditional formats.
22
+ #
23
+ def test_conditional_formats
24
+ @worksheet.select
25
+
26
+ # Start test code.
27
+ @worksheet.write('A1', 1)
28
+ @worksheet.write('A2', 2)
29
+ @worksheet.write('A3', 3)
30
+ @worksheet.write('A4', 4)
31
+ @worksheet.write('A5', 5)
32
+ @worksheet.write('A6', 6)
33
+ @worksheet.write('A7', 7)
34
+ @worksheet.write('A8', 8)
35
+
36
+ @worksheet.conditional_formatting(
37
+ 'A1',
38
+ {
39
+ :type => 'icon_set',
40
+ :icon_style => '3_arrows_gray'
41
+ }
42
+ )
43
+
44
+ @worksheet.conditional_formatting(
45
+ 'A2',
46
+ {
47
+ :type => 'icon_set',
48
+ :icon_style => '3_traffic_lights'
49
+ }
50
+ )
51
+
52
+ @worksheet.conditional_formatting(
53
+ 'A3',
54
+ {
55
+ :type => 'icon_set',
56
+ :icon_style => '3_signs'
57
+ }
58
+ )
59
+
60
+ @worksheet.conditional_formatting(
61
+ 'A4',
62
+ {
63
+ :type => 'icon_set',
64
+ :icon_style => '3_symbols'
65
+ }
66
+ )
67
+
68
+ @worksheet.conditional_formatting(
69
+ 'A5',
70
+ {
71
+ :type => 'icon_set',
72
+ :icon_style => '4_arrows_gray'
73
+ }
74
+ )
75
+
76
+ @worksheet.conditional_formatting(
77
+ 'A6',
78
+ {
79
+ :type => 'icon_set',
80
+ :icon_style => '4_ratings'
81
+ }
82
+ )
83
+
84
+ @worksheet.conditional_formatting(
85
+ 'A7',
86
+ {
87
+ :type => 'icon_set',
88
+ :icon_style => '5_arrows'
89
+ }
90
+ )
91
+
92
+ @worksheet.conditional_formatting(
93
+ 'A8',
94
+ {
95
+ :type => 'icon_set',
96
+ :icon_style => '5_ratings'
97
+ }
98
+ )
99
+
100
+ # End test code.
101
+
102
+ @worksheet.assemble_xml_file
103
+ result = got_to_array(@worksheet.instance_variable_get(:@writer).string)
104
+
105
+ expected = expected_to_array(expected_xml)
106
+ assert_equal(expected, result)
107
+ end
108
+
109
+ def expected_xml
110
+ <<EOS
111
+ <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
112
+ <worksheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships">
113
+ <dimension ref="A1:A8"/>
114
+ <sheetViews>
115
+ <sheetView tabSelected="1" workbookViewId="0"/>
116
+ </sheetViews>
117
+ <sheetFormatPr defaultRowHeight="15"/>
118
+ <sheetData>
119
+ <row r="1" spans="1:1">
120
+ <c r="A1">
121
+ <v>1</v>
122
+ </c>
123
+ </row>
124
+ <row r="2" spans="1:1">
125
+ <c r="A2">
126
+ <v>2</v>
127
+ </c>
128
+ </row>
129
+ <row r="3" spans="1:1">
130
+ <c r="A3">
131
+ <v>3</v>
132
+ </c>
133
+ </row>
134
+ <row r="4" spans="1:1">
135
+ <c r="A4">
136
+ <v>4</v>
137
+ </c>
138
+ </row>
139
+ <row r="5" spans="1:1">
140
+ <c r="A5">
141
+ <v>5</v>
142
+ </c>
143
+ </row>
144
+ <row r="6" spans="1:1">
145
+ <c r="A6">
146
+ <v>6</v>
147
+ </c>
148
+ </row>
149
+ <row r="7" spans="1:1">
150
+ <c r="A7">
151
+ <v>7</v>
152
+ </c>
153
+ </row>
154
+ <row r="8" spans="1:1">
155
+ <c r="A8">
156
+ <v>8</v>
157
+ </c>
158
+ </row>
159
+ </sheetData>
160
+ <conditionalFormatting sqref="A1">
161
+ <cfRule type="iconSet" priority="1">
162
+ <iconSet iconSet="3ArrowsGray">
163
+ <cfvo type="percent" val="0"/>
164
+ <cfvo type="percent" val="33"/>
165
+ <cfvo type="percent" val="67"/>
166
+ </iconSet>
167
+ </cfRule>
168
+ </conditionalFormatting>
169
+ <conditionalFormatting sqref="A2">
170
+ <cfRule type="iconSet" priority="2">
171
+ <iconSet>
172
+ <cfvo type="percent" val="0"/>
173
+ <cfvo type="percent" val="33"/>
174
+ <cfvo type="percent" val="67"/>
175
+ </iconSet>
176
+ </cfRule>
177
+ </conditionalFormatting>
178
+ <conditionalFormatting sqref="A3">
179
+ <cfRule type="iconSet" priority="3">
180
+ <iconSet iconSet="3Signs">
181
+ <cfvo type="percent" val="0"/>
182
+ <cfvo type="percent" val="33"/>
183
+ <cfvo type="percent" val="67"/>
184
+ </iconSet>
185
+ </cfRule>
186
+ </conditionalFormatting>
187
+ <conditionalFormatting sqref="A4">
188
+ <cfRule type="iconSet" priority="4">
189
+ <iconSet iconSet="3Symbols2">
190
+ <cfvo type="percent" val="0"/>
191
+ <cfvo type="percent" val="33"/>
192
+ <cfvo type="percent" val="67"/>
193
+ </iconSet>
194
+ </cfRule>
195
+ </conditionalFormatting>
196
+ <conditionalFormatting sqref="A5">
197
+ <cfRule type="iconSet" priority="5">
198
+ <iconSet iconSet="4ArrowsGray">
199
+ <cfvo type="percent" val="0"/>
200
+ <cfvo type="percent" val="25"/>
201
+ <cfvo type="percent" val="50"/>
202
+ <cfvo type="percent" val="75"/>
203
+ </iconSet>
204
+ </cfRule>
205
+ </conditionalFormatting>
206
+ <conditionalFormatting sqref="A6">
207
+ <cfRule type="iconSet" priority="6">
208
+ <iconSet iconSet="4Rating">
209
+ <cfvo type="percent" val="0"/>
210
+ <cfvo type="percent" val="25"/>
211
+ <cfvo type="percent" val="50"/>
212
+ <cfvo type="percent" val="75"/>
213
+ </iconSet>
214
+ </cfRule>
215
+ </conditionalFormatting>
216
+ <conditionalFormatting sqref="A7">
217
+ <cfRule type="iconSet" priority="7">
218
+ <iconSet iconSet="5Arrows">
219
+ <cfvo type="percent" val="0"/>
220
+ <cfvo type="percent" val="20"/>
221
+ <cfvo type="percent" val="40"/>
222
+ <cfvo type="percent" val="60"/>
223
+ <cfvo type="percent" val="80"/>
224
+ </iconSet>
225
+ </cfRule>
226
+ </conditionalFormatting>
227
+ <conditionalFormatting sqref="A8">
228
+ <cfRule type="iconSet" priority="8">
229
+ <iconSet iconSet="5Rating">
230
+ <cfvo type="percent" val="0"/>
231
+ <cfvo type="percent" val="20"/>
232
+ <cfvo type="percent" val="40"/>
233
+ <cfvo type="percent" val="60"/>
234
+ <cfvo type="percent" val="80"/>
235
+ </iconSet>
236
+ </cfRule>
237
+ </conditionalFormatting>
238
+ <pageMargins left="0.7" right="0.7" top="0.75" bottom="0.75" header="0.3" footer="0.3"/>
239
+ </worksheet>
240
+ EOS
241
+ end
242
+ end
@@ -0,0 +1,303 @@
1
+ # -*- coding: utf-8 -*-
2
+ require 'helper'
3
+ require 'write_xlsx'
4
+ require 'stringio'
5
+
6
+ class TestCondFormat22 < Minitest::Test
7
+ def setup
8
+ @workbook = WriteXLSX.new(StringIO.new)
9
+ @worksheet = @workbook.add_worksheet('')
10
+ end
11
+
12
+ ###############################################################################
13
+ #
14
+ # Tests for Excel::Writer::XLSX::Worksheet methods.
15
+ #
16
+
17
+ ###############################################################################
18
+ #
19
+ # Test the _assemble_xml_file() method.
20
+ #
21
+ # Test conditional formats.
22
+ #
23
+ def test_conditional_formats
24
+ @worksheet.select
25
+
26
+ # Start test code.
27
+ @worksheet.write('A1', 1)
28
+ @worksheet.write('A2', 2)
29
+ @worksheet.write('A3', 3)
30
+ @worksheet.write('A4', 4)
31
+ @worksheet.write('A5', 5)
32
+ @worksheet.write('A6', 6)
33
+ @worksheet.write('A7', 7)
34
+ @worksheet.write('A8', 8)
35
+ @worksheet.write('A9', 9)
36
+
37
+ @worksheet.write('A12', 75)
38
+
39
+ @worksheet.conditional_formatting(
40
+ 'A1',
41
+ {
42
+ :type => 'icon_set',
43
+ :icon_style => '3_arrows',
44
+ :reverse_icons => 1
45
+ }
46
+ )
47
+
48
+ @worksheet.conditional_formatting(
49
+ 'A2',
50
+ {
51
+ :type => 'icon_set',
52
+ :icon_style => '3_flags',
53
+ :icons_only => 1
54
+ }
55
+ )
56
+
57
+ @worksheet.conditional_formatting(
58
+ 'A3',
59
+ {
60
+ :type => 'icon_set',
61
+ :icon_style => '3_traffic_lights_rimmed',
62
+ :icons_only => 1,
63
+ :reverse_icons => 1
64
+ }
65
+ )
66
+
67
+ @worksheet.conditional_formatting(
68
+ 'A4',
69
+ {
70
+ :type => 'icon_set',
71
+ :icon_style => '3_symbols_circled',
72
+ :icons => [
73
+ {:value => 80},
74
+ {:value => 20}
75
+ ]
76
+ }
77
+ )
78
+
79
+ @worksheet.conditional_formatting(
80
+ 'A5',
81
+ {
82
+ :type => 'icon_set',
83
+ :icon_style => '4_arrows',
84
+ :icons => [
85
+ {:criteria => '>'},
86
+ {:criteria => '>'},
87
+ {:criteria => '>'}
88
+ ]
89
+ }
90
+ )
91
+
92
+ @worksheet.conditional_formatting(
93
+ 'A6',
94
+ {
95
+ :type => 'icon_set',
96
+ :icon_style => '4_red_to_black',
97
+ :icons => [
98
+ {:criteria => '>=', :type => 'number', :value => 90},
99
+ {:criteria => '<', :type => 'percentile', :value => 50},
100
+ {:criteria => '<=', :type => 'percent', :value => 25}
101
+ ]
102
+ }
103
+ )
104
+
105
+ @worksheet.conditional_formatting(
106
+ 'A7',
107
+ {
108
+ :type => 'icon_set',
109
+ :icon_style => '4_traffic_lights',
110
+ :icons => [ {:value => '=$A$12'} ]
111
+ }
112
+ )
113
+
114
+ @worksheet.conditional_formatting(
115
+ 'A8',
116
+ {
117
+ :type => 'icon_set',
118
+ :icon_style => '5_arrows_gray',
119
+ :icons => [
120
+ {:type => 'formula', :value => '=$A$12'}
121
+ ]
122
+ }
123
+ )
124
+
125
+ @worksheet.conditional_formatting(
126
+ 'A9',
127
+ {
128
+ :type => 'icon_set',
129
+ :icon_style => '5_quarters',
130
+ :icons => [
131
+ {:type => 'percentile', :value => 70},
132
+ {:type => 'percentile', :value => 50},
133
+ {:type => 'percentile', :value => 30},
134
+ {:type => 'percentile', :value => 10},
135
+ {:type => 'percentile', :value => -1}
136
+ ],
137
+ :reverse_icons => 1
138
+ }
139
+ )
140
+
141
+ # End test code.
142
+
143
+ @worksheet.assemble_xml_file
144
+ result = got_to_array(@worksheet.instance_variable_get(:@writer).string)
145
+
146
+ expected = expected_to_array(expected_xml)
147
+ assert_equal(expected, result)
148
+ end
149
+
150
+ def expected_xml
151
+ <<EOS
152
+ <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
153
+ <worksheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships">
154
+ <dimension ref="A1:A12"/>
155
+ <sheetViews>
156
+ <sheetView tabSelected="1" workbookViewId="0"/>
157
+ </sheetViews>
158
+ <sheetFormatPr defaultRowHeight="15"/>
159
+ <sheetData>
160
+ <row r="1" spans="1:1">
161
+ <c r="A1">
162
+ <v>1</v>
163
+ </c>
164
+ </row>
165
+ <row r="2" spans="1:1">
166
+ <c r="A2">
167
+ <v>2</v>
168
+ </c>
169
+ </row>
170
+ <row r="3" spans="1:1">
171
+ <c r="A3">
172
+ <v>3</v>
173
+ </c>
174
+ </row>
175
+ <row r="4" spans="1:1">
176
+ <c r="A4">
177
+ <v>4</v>
178
+ </c>
179
+ </row>
180
+ <row r="5" spans="1:1">
181
+ <c r="A5">
182
+ <v>5</v>
183
+ </c>
184
+ </row>
185
+ <row r="6" spans="1:1">
186
+ <c r="A6">
187
+ <v>6</v>
188
+ </c>
189
+ </row>
190
+ <row r="7" spans="1:1">
191
+ <c r="A7">
192
+ <v>7</v>
193
+ </c>
194
+ </row>
195
+ <row r="8" spans="1:1">
196
+ <c r="A8">
197
+ <v>8</v>
198
+ </c>
199
+ </row>
200
+ <row r="9" spans="1:1">
201
+ <c r="A9">
202
+ <v>9</v>
203
+ </c>
204
+ </row>
205
+ <row r="12" spans="1:1">
206
+ <c r="A12">
207
+ <v>75</v>
208
+ </c>
209
+ </row>
210
+ </sheetData>
211
+ <conditionalFormatting sqref="A1">
212
+ <cfRule type="iconSet" priority="1">
213
+ <iconSet iconSet="3Arrows" reverse="1">
214
+ <cfvo type="percent" val="0"/>
215
+ <cfvo type="percent" val="33"/>
216
+ <cfvo type="percent" val="67"/>
217
+ </iconSet>
218
+ </cfRule>
219
+ </conditionalFormatting>
220
+ <conditionalFormatting sqref="A2">
221
+ <cfRule type="iconSet" priority="2">
222
+ <iconSet iconSet="3Flags" showValue="0">
223
+ <cfvo type="percent" val="0"/>
224
+ <cfvo type="percent" val="33"/>
225
+ <cfvo type="percent" val="67"/>
226
+ </iconSet>
227
+ </cfRule>
228
+ </conditionalFormatting>
229
+ <conditionalFormatting sqref="A3">
230
+ <cfRule type="iconSet" priority="3">
231
+ <iconSet iconSet="3TrafficLights2" showValue="0" reverse="1">
232
+ <cfvo type="percent" val="0"/>
233
+ <cfvo type="percent" val="33"/>
234
+ <cfvo type="percent" val="67"/>
235
+ </iconSet>
236
+ </cfRule>
237
+ </conditionalFormatting>
238
+ <conditionalFormatting sqref="A4">
239
+ <cfRule type="iconSet" priority="4">
240
+ <iconSet iconSet="3Symbols">
241
+ <cfvo type="percent" val="0"/>
242
+ <cfvo type="percent" val="20"/>
243
+ <cfvo type="percent" val="80"/>
244
+ </iconSet>
245
+ </cfRule>
246
+ </conditionalFormatting>
247
+ <conditionalFormatting sqref="A5">
248
+ <cfRule type="iconSet" priority="5">
249
+ <iconSet iconSet="4Arrows">
250
+ <cfvo type="percent" val="0"/>
251
+ <cfvo type="percent" val="25" gte="0"/>
252
+ <cfvo type="percent" val="50" gte="0"/>
253
+ <cfvo type="percent" val="75" gte="0"/>
254
+ </iconSet>
255
+ </cfRule>
256
+ </conditionalFormatting>
257
+ <conditionalFormatting sqref="A6">
258
+ <cfRule type="iconSet" priority="6">
259
+ <iconSet iconSet="4RedToBlack">
260
+ <cfvo type="percent" val="0"/>
261
+ <cfvo type="percent" val="25"/>
262
+ <cfvo type="percentile" val="50"/>
263
+ <cfvo type="num" val="90"/>
264
+ </iconSet>
265
+ </cfRule>
266
+ </conditionalFormatting>
267
+ <conditionalFormatting sqref="A7">
268
+ <cfRule type="iconSet" priority="7">
269
+ <iconSet iconSet="4TrafficLights">
270
+ <cfvo type="percent" val="0"/>
271
+ <cfvo type="percent" val="25"/>
272
+ <cfvo type="percent" val="50"/>
273
+ <cfvo type="percent" val="$A$12"/>
274
+ </iconSet>
275
+ </cfRule>
276
+ </conditionalFormatting>
277
+ <conditionalFormatting sqref="A8">
278
+ <cfRule type="iconSet" priority="8">
279
+ <iconSet iconSet="5ArrowsGray">
280
+ <cfvo type="percent" val="0"/>
281
+ <cfvo type="percent" val="20"/>
282
+ <cfvo type="percent" val="40"/>
283
+ <cfvo type="percent" val="60"/>
284
+ <cfvo type="formula" val="$A$12"/>
285
+ </iconSet>
286
+ </cfRule>
287
+ </conditionalFormatting>
288
+ <conditionalFormatting sqref="A9">
289
+ <cfRule type="iconSet" priority="9">
290
+ <iconSet iconSet="5Quarters" reverse="1">
291
+ <cfvo type="percent" val="0"/>
292
+ <cfvo type="percentile" val="10"/>
293
+ <cfvo type="percentile" val="30"/>
294
+ <cfvo type="percentile" val="50"/>
295
+ <cfvo type="percentile" val="70"/>
296
+ </iconSet>
297
+ </cfRule>
298
+ </conditionalFormatting>
299
+ <pageMargins left="0.7" right="0.7" top="0.75" bottom="0.75" header="0.3" footer="0.3"/>
300
+ </worksheet>
301
+ EOS
302
+ end
303
+ end