write_xlsx 0.89.0 → 1.01.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 (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,61 @@
1
+ # -*- coding: utf-8 -*-
2
+ require 'helper'
3
+
4
+ class TestCheckSheetname < Minitest::Test
5
+ def setup
6
+ @workbook = WriteXLSX.new(StringIO.new)
7
+ @workbook.add_worksheet
8
+ end
9
+
10
+ def test_check_sheetname_duplicate_names
11
+ duplicate_names = ['Sheet1', 'sheet1']
12
+
13
+ duplicate_names.each do |sheetname|
14
+ assert_raises RuntimeError, "'#{sheetname}' passed incorrectly" do
15
+ @workbook.add_worksheet(sheetname)
16
+ end
17
+ end
18
+ end
19
+
20
+ def test_check_sheetname_invalid_characters
21
+ invalid_characters = [
22
+ 'Sheet[', 'Sheet]', 'Sheet:', 'Sheet*', 'Sheet/', 'Sheet\\'
23
+ ]
24
+
25
+ invalid_characters.each do |sheetname|
26
+ assert_raises RuntimeError, "'#{sheetname}' passed incorrectly" do
27
+ @workbook.add_worksheet(sheetname)
28
+ end
29
+ end
30
+ end
31
+
32
+ def test_check_sheetname_long_name
33
+ long_name = ['name_that_is_longer_than_thirty_one_characters']
34
+
35
+ long_name.each do |sheetname|
36
+ assert_raises RuntimeError, "'#{sheetname}' passed incorrectly" do
37
+ @workbook.add_worksheet(sheetname)
38
+ end
39
+ end
40
+ end
41
+
42
+ def test_check_sheetname_invalid_start_stop_character
43
+ invalid_start_end_character = ["Sheet'", "'Sheet", "'Sheet'"]
44
+
45
+ invalid_start_end_character.each do |sheetname|
46
+ assert_raises RuntimeError, "'#{sheetname}' passed incorrectly" do
47
+ @workbook.add_worksheet(sheetname)
48
+ end
49
+ end
50
+ end
51
+
52
+ def test_check_sheetname_reserved_name
53
+ reserved_names = ['History', 'history', 'HISTORY', 'HisTory']
54
+
55
+ reserved_names.each do |sheetname|
56
+ assert_raises RuntimeError, "'#{sheetname}' passed incorrectly" do
57
+ @workbook.add_worksheet(sheetname)
58
+ end
59
+ end
60
+ end
61
+ end
@@ -0,0 +1,35 @@
1
+ # -*- coding: utf-8 -*-
2
+ require 'helper'
3
+
4
+ class TestWorksheeByName < Minitest::Test
5
+ def test_worksheet_by_name
6
+ io = StringIO.new
7
+ workbook = WriteXLSX.new(io)
8
+
9
+ # Test a valid explicit name.
10
+ expected = workbook.add_worksheet
11
+ result = workbook.worksheet_by_name('Sheet1')
12
+ assert_equal(expected, result)
13
+ result = workbook.get_worksheet_by_name('Sheet1')
14
+ assert_equal(expected, result)
15
+
16
+ # Test a valid explicit name.
17
+ expected = workbook.add_worksheet('Sheet 2')
18
+ result = workbook.worksheet_by_name('Sheet 2')
19
+ assert_equal(expected, result)
20
+ result = workbook.get_worksheet_by_name('Sheet 2')
21
+ assert_equal(expected, result)
22
+
23
+ # Test an invalid name.
24
+ result = workbook.worksheet_by_name('Sheet3')
25
+ assert_nil(result)
26
+ result = workbook.get_worksheet_by_name('Sheet3')
27
+ assert_nil(result)
28
+
29
+ # Test an invalid name.
30
+ result = workbook.worksheet_by_name()
31
+ assert_nil(result)
32
+ result = workbook.get_worksheet_by_name()
33
+ assert_nil(result)
34
+ end
35
+ end
@@ -0,0 +1,117 @@
1
+ # -*- coding: utf-8 -*-
2
+ require 'helper'
3
+ require 'write_xlsx'
4
+ require 'stringio'
5
+
6
+ class TestGetChartRange < Minitest::Test
7
+ def setup
8
+ @workbook = WriteXLSX.new(StringIO.new)
9
+ end
10
+
11
+ def test_write_workbook_view_1
12
+ expected = '<workbookView xWindow="240" yWindow="15" windowWidth="16095" windowHeight="9660"/>'
13
+ result = @workbook.__send__('write_workbook_view')
14
+
15
+ assert_equal(expected, result)
16
+ end
17
+
18
+ def test_write_workbook_view_second_tab_selected
19
+ expected = '<workbookView xWindow="240" yWindow="15" windowWidth="16095" windowHeight="9660" activeTab="1"/>'
20
+
21
+ @workbook.activesheet = 1
22
+ result = @workbook.__send__('write_workbook_view')
23
+
24
+ assert_equal(expected, result)
25
+ end
26
+
27
+ def test_write_workbook_view_second_tab_selected_first_sheet_set
28
+ expected = '<workbookView xWindow="240" yWindow="15" windowWidth="16095" windowHeight="9660" firstSheet="2" activeTab="1"/>'
29
+
30
+ @workbook.firstsheet = 1
31
+ @workbook.activesheet = 1
32
+ result = @workbook.__send__('write_workbook_view')
33
+
34
+ assert_equal(expected, result)
35
+ end
36
+
37
+ def test_write_workbook_view_with_set_size
38
+ expected = '<workbookView xWindow="240" yWindow="15" windowWidth="16095" windowHeight="9660"/>'
39
+
40
+ @workbook.set_size
41
+ result = @workbook.__send__('write_workbook_view')
42
+
43
+ assert_equal(expected, result)
44
+ end
45
+
46
+ def test_write_workbook_view_with_set_size_0_0
47
+ expected = '<workbookView xWindow="240" yWindow="15" windowWidth="16095" windowHeight="9660"/>'
48
+
49
+ @workbook.set_size(0, 0)
50
+ result = @workbook.__send__('write_workbook_view')
51
+
52
+ assert_equal(expected, result)
53
+ end
54
+
55
+ def test_write_workbook_view_with_set_size_1073_644
56
+ expected = '<workbookView xWindow="240" yWindow="15" windowWidth="16095" windowHeight="9660"/>'
57
+
58
+ @workbook.set_size(1073, 644)
59
+ result = @workbook.__send__('write_workbook_view')
60
+
61
+ assert_equal(expected, result)
62
+ end
63
+
64
+ def test_write_workbook_view_with_set_size_123_70
65
+ expected = '<workbookView xWindow="240" yWindow="15" windowWidth="1845" windowHeight="1050"/>'
66
+
67
+ @workbook.set_size(123, 70)
68
+ result = @workbook.__send__('write_workbook_view')
69
+
70
+ assert_equal(expected, result)
71
+ end
72
+
73
+ def test_write_workbook_view_with_set_size_719_490
74
+ expected = '<workbookView xWindow="240" yWindow="15" windowWidth="10785" windowHeight="7350"/>'
75
+
76
+ @workbook.set_size(719, 490)
77
+ result = @workbook.__send__('write_workbook_view')
78
+
79
+ assert_equal(expected, result)
80
+ end
81
+
82
+ def test_set_tab_ratio_wirhout_param
83
+ expected = '<workbookView xWindow="240" yWindow="15" windowWidth="16095" windowHeight="9660"/>'
84
+
85
+ @workbook.set_tab_ratio
86
+ result = @workbook.__send__('write_workbook_view')
87
+
88
+ assert_equal(expected, result)
89
+ end
90
+
91
+ def test_set_tab_ratio_with_34_6
92
+ expected = '<workbookView xWindow="240" yWindow="15" windowWidth="16095" windowHeight="9660" tabRatio="346"/>'
93
+
94
+ @workbook.set_tab_ratio(34.6)
95
+ result = @workbook.__send__('write_workbook_view')
96
+
97
+ assert_equal(expected, result)
98
+ end
99
+
100
+ def test_set_tab_ratio_with_0
101
+ expected = '<workbookView xWindow="240" yWindow="15" windowWidth="16095" windowHeight="9660" tabRatio="0"/>'
102
+
103
+ @workbook.set_tab_ratio(0)
104
+ result = @workbook.__send__('write_workbook_view')
105
+
106
+ assert_equal(expected, result)
107
+ end
108
+
109
+ def test_set_tab_ratio_with_100
110
+ expected = '<workbookView xWindow="240" yWindow="15" windowWidth="16095" windowHeight="9660" tabRatio="1000"/>'
111
+
112
+ @workbook.set_tab_ratio(100)
113
+ result = @workbook.__send__('write_workbook_view')
114
+
115
+ assert_equal(expected, result)
116
+ end
117
+ end
@@ -0,0 +1,266 @@
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.conditional_formatting(
38
+ 'A1',
39
+ {
40
+ :type => 'icon_set',
41
+ :icon_style => '3_arrows'
42
+ }
43
+ )
44
+
45
+ @worksheet.conditional_formatting(
46
+ 'A2',
47
+ {
48
+ :type => 'icon_set',
49
+ :icon_style => '3_flags'
50
+ }
51
+ )
52
+
53
+ @worksheet.conditional_formatting(
54
+ 'A3',
55
+ {
56
+ :type => 'icon_set',
57
+ :icon_style => '3_traffic_lights_rimmed'
58
+ }
59
+ )
60
+
61
+ @worksheet.conditional_formatting(
62
+ 'A4',
63
+ {
64
+ :type => 'icon_set',
65
+ :icon_style => '3_symbols_circled'
66
+ }
67
+ )
68
+
69
+ @worksheet.conditional_formatting(
70
+ 'A5',
71
+ {
72
+ :type => 'icon_set',
73
+ :icon_style => '4_arrows'
74
+ }
75
+ )
76
+
77
+ @worksheet.conditional_formatting(
78
+ 'A6',
79
+ {
80
+ :type => 'icon_set',
81
+ :icon_style => '4_red_to_black'
82
+ }
83
+ )
84
+
85
+ @worksheet.conditional_formatting(
86
+ 'A7',
87
+ {
88
+ :type => 'icon_set',
89
+ :icon_style => '4_traffic_lights'
90
+ }
91
+ )
92
+
93
+ @worksheet.conditional_formatting(
94
+ 'A8',
95
+ {
96
+ :type => 'icon_set',
97
+ :icon_style => '5_arrows_gray'
98
+ }
99
+ )
100
+
101
+ @worksheet.conditional_formatting(
102
+ 'A9',
103
+ {
104
+ :type => 'icon_set',
105
+ :icon_style => '5_quarters'
106
+ }
107
+ )
108
+
109
+ # End test code.
110
+
111
+ @worksheet.assemble_xml_file
112
+ result = got_to_array(@worksheet.instance_variable_get(:@writer).string)
113
+
114
+ expected = expected_to_array(expected_xml)
115
+ assert_equal(expected, result)
116
+ end
117
+
118
+ def expected_xml
119
+ <<EOS
120
+ <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
121
+ <worksheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships">
122
+ <dimension ref="A1:A9"/>
123
+ <sheetViews>
124
+ <sheetView tabSelected="1" workbookViewId="0"/>
125
+ </sheetViews>
126
+ <sheetFormatPr defaultRowHeight="15"/>
127
+ <sheetData>
128
+ <row r="1" spans="1:1">
129
+ <c r="A1">
130
+ <v>1</v>
131
+ </c>
132
+ </row>
133
+ <row r="2" spans="1:1">
134
+ <c r="A2">
135
+ <v>2</v>
136
+ </c>
137
+ </row>
138
+ <row r="3" spans="1:1">
139
+ <c r="A3">
140
+ <v>3</v>
141
+ </c>
142
+ </row>
143
+ <row r="4" spans="1:1">
144
+ <c r="A4">
145
+ <v>4</v>
146
+ </c>
147
+ </row>
148
+ <row r="5" spans="1:1">
149
+ <c r="A5">
150
+ <v>5</v>
151
+ </c>
152
+ </row>
153
+ <row r="6" spans="1:1">
154
+ <c r="A6">
155
+ <v>6</v>
156
+ </c>
157
+ </row>
158
+ <row r="7" spans="1:1">
159
+ <c r="A7">
160
+ <v>7</v>
161
+ </c>
162
+ </row>
163
+ <row r="8" spans="1:1">
164
+ <c r="A8">
165
+ <v>8</v>
166
+ </c>
167
+ </row>
168
+ <row r="9" spans="1:1">
169
+ <c r="A9">
170
+ <v>9</v>
171
+ </c>
172
+ </row>
173
+ </sheetData>
174
+ <conditionalFormatting sqref="A1">
175
+ <cfRule type="iconSet" priority="1">
176
+ <iconSet iconSet="3Arrows">
177
+ <cfvo type="percent" val="0"/>
178
+ <cfvo type="percent" val="33"/>
179
+ <cfvo type="percent" val="67"/>
180
+ </iconSet>
181
+ </cfRule>
182
+ </conditionalFormatting>
183
+ <conditionalFormatting sqref="A2">
184
+ <cfRule type="iconSet" priority="2">
185
+ <iconSet iconSet="3Flags">
186
+ <cfvo type="percent" val="0"/>
187
+ <cfvo type="percent" val="33"/>
188
+ <cfvo type="percent" val="67"/>
189
+ </iconSet>
190
+ </cfRule>
191
+ </conditionalFormatting>
192
+ <conditionalFormatting sqref="A3">
193
+ <cfRule type="iconSet" priority="3">
194
+ <iconSet iconSet="3TrafficLights2">
195
+ <cfvo type="percent" val="0"/>
196
+ <cfvo type="percent" val="33"/>
197
+ <cfvo type="percent" val="67"/>
198
+ </iconSet>
199
+ </cfRule>
200
+ </conditionalFormatting>
201
+ <conditionalFormatting sqref="A4">
202
+ <cfRule type="iconSet" priority="4">
203
+ <iconSet iconSet="3Symbols">
204
+ <cfvo type="percent" val="0"/>
205
+ <cfvo type="percent" val="33"/>
206
+ <cfvo type="percent" val="67"/>
207
+ </iconSet>
208
+ </cfRule>
209
+ </conditionalFormatting>
210
+ <conditionalFormatting sqref="A5">
211
+ <cfRule type="iconSet" priority="5">
212
+ <iconSet iconSet="4Arrows">
213
+ <cfvo type="percent" val="0"/>
214
+ <cfvo type="percent" val="25"/>
215
+ <cfvo type="percent" val="50"/>
216
+ <cfvo type="percent" val="75"/>
217
+ </iconSet>
218
+ </cfRule>
219
+ </conditionalFormatting>
220
+ <conditionalFormatting sqref="A6">
221
+ <cfRule type="iconSet" priority="6">
222
+ <iconSet iconSet="4RedToBlack">
223
+ <cfvo type="percent" val="0"/>
224
+ <cfvo type="percent" val="25"/>
225
+ <cfvo type="percent" val="50"/>
226
+ <cfvo type="percent" val="75"/>
227
+ </iconSet>
228
+ </cfRule>
229
+ </conditionalFormatting>
230
+ <conditionalFormatting sqref="A7">
231
+ <cfRule type="iconSet" priority="7">
232
+ <iconSet iconSet="4TrafficLights">
233
+ <cfvo type="percent" val="0"/>
234
+ <cfvo type="percent" val="25"/>
235
+ <cfvo type="percent" val="50"/>
236
+ <cfvo type="percent" val="75"/>
237
+ </iconSet>
238
+ </cfRule>
239
+ </conditionalFormatting>
240
+ <conditionalFormatting sqref="A8">
241
+ <cfRule type="iconSet" priority="8">
242
+ <iconSet iconSet="5ArrowsGray">
243
+ <cfvo type="percent" val="0"/>
244
+ <cfvo type="percent" val="20"/>
245
+ <cfvo type="percent" val="40"/>
246
+ <cfvo type="percent" val="60"/>
247
+ <cfvo type="percent" val="80"/>
248
+ </iconSet>
249
+ </cfRule>
250
+ </conditionalFormatting>
251
+ <conditionalFormatting sqref="A9">
252
+ <cfRule type="iconSet" priority="9">
253
+ <iconSet iconSet="5Quarters">
254
+ <cfvo type="percent" val="0"/>
255
+ <cfvo type="percent" val="20"/>
256
+ <cfvo type="percent" val="40"/>
257
+ <cfvo type="percent" val="60"/>
258
+ <cfvo type="percent" val="80"/>
259
+ </iconSet>
260
+ </cfRule>
261
+ </conditionalFormatting>
262
+ <pageMargins left="0.7" right="0.7" top="0.75" bottom="0.75" header="0.3" footer="0.3"/>
263
+ </worksheet>
264
+ EOS
265
+ end
266
+ end