write_xlsx 1.09.4 → 1.09.5

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 (2053) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +108 -0
  3. data/.rubocop_todo.yml +445 -0
  4. data/Changes +3 -0
  5. data/Gemfile +2 -0
  6. data/Rakefile +14 -8
  7. data/examples/array_formula.rb +2 -2
  8. data/examples/autofilter.rb +13 -18
  9. data/examples/chart_area.rb +10 -10
  10. data/examples/chart_bar.rb +10 -10
  11. data/examples/chart_column.rb +10 -10
  12. data/examples/chart_combined.rb +2 -3
  13. data/examples/chart_data_labels.rb +23 -35
  14. data/examples/chart_data_table.rb +16 -16
  15. data/examples/chart_data_tools.rb +36 -42
  16. data/examples/chart_doughnut.rb +21 -25
  17. data/examples/chart_gauge.rb +17 -17
  18. data/examples/chart_line.rb +25 -26
  19. data/examples/chart_pareto.rb +3 -3
  20. data/examples/chart_pie.rb +15 -15
  21. data/examples/chart_radar.rb +30 -30
  22. data/examples/chart_scatter.rb +10 -10
  23. data/examples/chart_secondary_axis.rb +9 -9
  24. data/examples/chart_stock.rb +10 -11
  25. data/examples/chart_styles.rb +6 -7
  26. data/examples/colors.rb +26 -29
  27. data/examples/comments1.rb +1 -0
  28. data/examples/comments2.rb +85 -114
  29. data/examples/conditional_format.rb +159 -150
  30. data/examples/data_validate.rb +135 -122
  31. data/examples/date_time.rb +29 -29
  32. data/examples/defined_name.rb +5 -5
  33. data/examples/demo.rb +10 -12
  34. data/examples/diag_border.rb +4 -5
  35. data/examples/formats.rb +93 -105
  36. data/examples/headers.rb +2 -7
  37. data/examples/hyperlink1.rb +5 -6
  38. data/examples/ignore_errors.rb +1 -1
  39. data/examples/macros.rb +6 -6
  40. data/examples/merge1.rb +0 -3
  41. data/examples/merge2.rb +9 -12
  42. data/examples/merge3.rb +6 -7
  43. data/examples/merge4.rb +2 -4
  44. data/examples/merge5.rb +6 -6
  45. data/examples/merge6.rb +1 -1
  46. data/examples/outline.rb +8 -16
  47. data/examples/outline_collapsed.rb +6 -6
  48. data/examples/panes.rb +15 -15
  49. data/examples/properties.rb +9 -9
  50. data/examples/rich_strings.rb +19 -11
  51. data/examples/shape1.rb +9 -9
  52. data/examples/shape2.rb +19 -19
  53. data/examples/shape3.rb +6 -6
  54. data/examples/shape4.rb +9 -9
  55. data/examples/shape5.rb +8 -8
  56. data/examples/shape6.rb +8 -8
  57. data/examples/shape7.rb +14 -14
  58. data/examples/shape8.rb +14 -14
  59. data/examples/shape_all.rb +6 -6
  60. data/examples/sparklines1.rb +23 -24
  61. data/examples/sparklines2.rb +151 -151
  62. data/examples/tables.rb +86 -94
  63. data/examples/update_range_format_with_params.rb +4 -4
  64. data/lib/write_xlsx/chart/area.rb +8 -9
  65. data/lib/write_xlsx/chart/axis.rb +12 -24
  66. data/lib/write_xlsx/chart/bar.rb +4 -8
  67. data/lib/write_xlsx/chart/column.rb +3 -4
  68. data/lib/write_xlsx/chart/doughnut.rb +3 -2
  69. data/lib/write_xlsx/chart/line.rb +16 -17
  70. data/lib/write_xlsx/chart/pie.rb +13 -13
  71. data/lib/write_xlsx/chart/radar.rb +8 -9
  72. data/lib/write_xlsx/chart/scatter.rb +20 -23
  73. data/lib/write_xlsx/chart/series.rb +32 -45
  74. data/lib/write_xlsx/chart/stock.rb +29 -24
  75. data/lib/write_xlsx/chart.rb +183 -217
  76. data/lib/write_xlsx/chartsheet.rb +22 -31
  77. data/lib/write_xlsx/col_name.rb +2 -1
  78. data/lib/write_xlsx/colors.rb +1 -1
  79. data/lib/write_xlsx/compatibility.rb +14 -15
  80. data/lib/write_xlsx/drawing.rb +54 -55
  81. data/lib/write_xlsx/format.rb +52 -59
  82. data/lib/write_xlsx/formats.rb +1 -0
  83. data/lib/write_xlsx/gradient.rb +5 -9
  84. data/lib/write_xlsx/package/app.rb +12 -16
  85. data/lib/write_xlsx/package/button.rb +3 -3
  86. data/lib/write_xlsx/package/comments.rb +31 -36
  87. data/lib/write_xlsx/package/conditional_format.rb +90 -110
  88. data/lib/write_xlsx/package/content_types.rb +20 -21
  89. data/lib/write_xlsx/package/core.rb +5 -4
  90. data/lib/write_xlsx/package/custom.rb +7 -7
  91. data/lib/write_xlsx/package/metadata.rb +6 -5
  92. data/lib/write_xlsx/package/packager.rb +36 -22
  93. data/lib/write_xlsx/package/relationships.rb +1 -1
  94. data/lib/write_xlsx/package/shared_strings.rb +11 -11
  95. data/lib/write_xlsx/package/styles.rb +54 -68
  96. data/lib/write_xlsx/package/table.rb +77 -95
  97. data/lib/write_xlsx/package/theme.rb +3 -3
  98. data/lib/write_xlsx/package/vml.rb +24 -31
  99. data/lib/write_xlsx/package/xml_writer_simple.rb +19 -20
  100. data/lib/write_xlsx/shape.rb +20 -31
  101. data/lib/write_xlsx/sheets.rb +37 -46
  102. data/lib/write_xlsx/sparkline.rb +11 -20
  103. data/lib/write_xlsx/utility.rb +129 -142
  104. data/lib/write_xlsx/version.rb +1 -1
  105. data/lib/write_xlsx/workbook.rb +248 -299
  106. data/lib/write_xlsx/worksheet/cell_data.rb +41 -17
  107. data/lib/write_xlsx/worksheet/data_validation.rb +65 -73
  108. data/lib/write_xlsx/worksheet/hyperlink.rb +10 -16
  109. data/lib/write_xlsx/worksheet/page_setup.rb +9 -11
  110. data/lib/write_xlsx/worksheet.rb +434 -539
  111. data/lib/write_xlsx/zip_file_utils.rb +30 -32
  112. data/lib/write_xlsx.rb +1 -3
  113. data/write_xlsx.gemspec +23 -18
  114. metadata +50 -3881
  115. data/.gitattributes +0 -1
  116. data/.gitignore +0 -45
  117. data/.travis.yml +0 -75
  118. data/bin/extract_vba.rb +0 -34
  119. data/test/chart/test_add_series.rb +0 -190
  120. data/test/chart/test_process_names.rb +0 -27
  121. data/test/chart/test_write_a_latin.rb +0 -22
  122. data/test/chart/test_write_auto.rb +0 -15
  123. data/test/chart/test_write_ax_id.rb +0 -15
  124. data/test/chart/test_write_ax_pos.rb +0 -15
  125. data/test/chart/test_write_cross_ax.rb +0 -15
  126. data/test/chart/test_write_crosses.rb +0 -15
  127. data/test/chart/test_write_d_lbls.rb +0 -292
  128. data/test/chart/test_write_format_code.rb +0 -16
  129. data/test/chart/test_write_idx.rb +0 -15
  130. data/test/chart/test_write_label_align.rb +0 -15
  131. data/test/chart/test_write_label_offset.rb +0 -15
  132. data/test/chart/test_write_lang.rb +0 -15
  133. data/test/chart/test_write_layout.rb +0 -15
  134. data/test/chart/test_write_legend.rb +0 -16
  135. data/test/chart/test_write_legend_pos.rb +0 -23
  136. data/test/chart/test_write_major_gridlines.rb +0 -15
  137. data/test/chart/test_write_marker.rb +0 -17
  138. data/test/chart/test_write_marker_size.rb +0 -15
  139. data/test/chart/test_write_marker_value.rb +0 -16
  140. data/test/chart/test_write_num_cache.rb +0 -16
  141. data/test/chart/test_write_number_format.rb +0 -48
  142. data/test/chart/test_write_order.rb +0 -15
  143. data/test/chart/test_write_orientation.rb +0 -15
  144. data/test/chart/test_write_page_margins.rb +0 -15
  145. data/test/chart/test_write_page_setup.rb +0 -15
  146. data/test/chart/test_write_plot_vis_only.rb +0 -15
  147. data/test/chart/test_write_pt.rb +0 -16
  148. data/test/chart/test_write_pt_count.rb +0 -16
  149. data/test/chart/test_write_series_formula.rb +0 -16
  150. data/test/chart/test_write_style.rb +0 -41
  151. data/test/chart/test_write_symbol.rb +0 -16
  152. data/test/chart/test_write_tick_lbl_pos.rb +0 -16
  153. data/test/chart/test_write_v.rb +0 -16
  154. data/test/chartsheet/test_chartsheet01.rb +0 -31
  155. data/test/chartsheet/test_write_sheet_protection.rb +0 -91
  156. data/test/drawing/test_drawing_chart_01.rb +0 -54
  157. data/test/drawing/test_drawing_image_01.rb +0 -68
  158. data/test/drawing/test_drawing_shape_01.rb +0 -71
  159. data/test/drawing/test_drawing_shape_02.rb +0 -80
  160. data/test/drawing/test_drawing_shape_03.rb +0 -41
  161. data/test/drawing/test_drawing_shape_04.rb +0 -105
  162. data/test/drawing/test_drawing_shape_05.rb +0 -48
  163. data/test/drawing/test_drawing_shape_06.rb +0 -47
  164. data/test/drawing/test_drawing_shape_07.rb +0 -52
  165. data/test/drawing/test_write_a_graphic_frame_locks.rb +0 -18
  166. data/test/drawing/test_write_c_chart.rb +0 -18
  167. data/test/drawing/test_write_c_nv_graphic_frame_pr.rb +0 -28
  168. data/test/drawing/test_write_c_nv_pr.rb +0 -18
  169. data/test/drawing/test_write_col.rb +0 -18
  170. data/test/drawing/test_write_col_off.rb +0 -18
  171. data/test/drawing/test_write_pos.rb +0 -18
  172. data/test/drawing/test_write_row.rb +0 -18
  173. data/test/drawing/test_write_row_off.rb +0 -18
  174. data/test/drawing/test_write_xdr_ext.rb +0 -18
  175. data/test/drawing/test_write_xfrm_extension.rb +0 -18
  176. data/test/drawing/test_write_xfrm_offset.rb +0 -18
  177. data/test/helper.rb +0 -206
  178. data/test/package/app/test_app01.rb +0 -44
  179. data/test/package/app/test_app02.rb +0 -46
  180. data/test/package/app/test_app03.rb +0 -53
  181. data/test/package/comments/test_comments_01.rb +0 -54
  182. data/test/package/comments/test_comments_02.rb +0 -54
  183. data/test/package/content_types/test_content_types.rb +0 -35
  184. data/test/package/content_types/test_write_default.rb +0 -13
  185. data/test/package/content_types/test_write_override.rb +0 -13
  186. data/test/package/core/test_core01.rb +0 -28
  187. data/test/package/core/test_core02.rb +0 -42
  188. data/test/package/relationships/test_relationships.rb +0 -28
  189. data/test/package/relationships/test_sheet_rels.rb +0 -22
  190. data/test/package/shared_strings/test_shared_strings01.rb +0 -30
  191. data/test/package/shared_strings/test_shared_strings02.rb +0 -30
  192. data/test/package/shared_strings/test_write_si.rb +0 -16
  193. data/test/package/styles/test_styles_01.rb +0 -60
  194. data/test/package/styles/test_styles_02.rb +0 -95
  195. data/test/package/styles/test_styles_03.rb +0 -81
  196. data/test/package/styles/test_styles_04.rb +0 -207
  197. data/test/package/styles/test_styles_05.rb +0 -141
  198. data/test/package/styles/test_styles_06.rb +0 -95
  199. data/test/package/styles/test_styles_07.rb +0 -95
  200. data/test/package/styles/test_styles_08.rb +0 -100
  201. data/test/package/styles/test_styles_09.rb +0 -86
  202. data/test/package/table/test_table01.rb +0 -42
  203. data/test/package/table/test_table02.rb +0 -44
  204. data/test/package/table/test_table03.rb +0 -48
  205. data/test/package/table/test_table04.rb +0 -46
  206. data/test/package/table/test_table05.rb +0 -46
  207. data/test/package/table/test_table06.rb +0 -52
  208. data/test/package/table/test_table07.rb +0 -47
  209. data/test/package/table/test_table08.rb +0 -53
  210. data/test/package/table/test_table09.rb +0 -65
  211. data/test/package/table/test_table10.rb +0 -45
  212. data/test/package/table/test_table11.rb +0 -60
  213. data/test/package/table/test_table12.rb +0 -60
  214. data/test/package/table/test_table13.rb +0 -69
  215. data/test/package/table/test_write_auto_filter.rb +0 -23
  216. data/test/package/table/test_write_table_column.rb +0 -22
  217. data/test/package/table/test_write_table_style_info.rb +0 -26
  218. data/test/package/vml/test_write_auto_fill.rb +0 -14
  219. data/test/package/vml/test_write_div.rb +0 -14
  220. data/test/package/vml/test_write_idmap.rb +0 -14
  221. data/test/package/vml/test_write_path.rb +0 -30
  222. data/test/package/vml/test_write_shapelayout.rb +0 -14
  223. data/test/package/vml/test_write_shapetype.rb +0 -22
  224. data/test/package/vml/test_write_stroke.rb +0 -14
  225. data/test/perl_output/a_simple.xlsx +0 -0
  226. data/test/perl_output/add_vba_project.xlsm +0 -0
  227. data/test/perl_output/array_formula.xlsx +0 -0
  228. data/test/perl_output/autofilter.xlsx +0 -0
  229. data/test/perl_output/background.xlsx +0 -0
  230. data/test/perl_output/chart_area.xlsx +0 -0
  231. data/test/perl_output/chart_bar.xlsx +0 -0
  232. data/test/perl_output/chart_column.xlsx +0 -0
  233. data/test/perl_output/chart_combined.xlsx +0 -0
  234. data/test/perl_output/chart_data_labels.xlsx +0 -0
  235. data/test/perl_output/chart_data_table.xlsx +0 -0
  236. data/test/perl_output/chart_data_tools.xlsx +0 -0
  237. data/test/perl_output/chart_doughnut.xlsx +0 -0
  238. data/test/perl_output/chart_gauge.xlsx +0 -0
  239. data/test/perl_output/chart_line.xlsx +0 -0
  240. data/test/perl_output/chart_pareto.xlsx +0 -0
  241. data/test/perl_output/chart_pie.xlsx +0 -0
  242. data/test/perl_output/chart_radar.xlsx +0 -0
  243. data/test/perl_output/chart_scatter.xlsx +0 -0
  244. data/test/perl_output/chart_scatter06.xlsx +0 -0
  245. data/test/perl_output/chart_secondary_axis.xlsx +0 -0
  246. data/test/perl_output/chart_stock.xlsx +0 -0
  247. data/test/perl_output/comments1.xlsx +0 -0
  248. data/test/perl_output/comments2.xlsx +0 -0
  249. data/test/perl_output/conditional_format.xlsx +0 -0
  250. data/test/perl_output/data_validate.xlsx +0 -0
  251. data/test/perl_output/date_time.xlsx +0 -0
  252. data/test/perl_output/defined_name.xlsx +0 -0
  253. data/test/perl_output/demo.xlsx +0 -0
  254. data/test/perl_output/diag_border.xlsx +0 -0
  255. data/test/perl_output/fit_to_pages.xlsx +0 -0
  256. data/test/perl_output/formats.xlsx +0 -0
  257. data/test/perl_output/headers.xlsx +0 -0
  258. data/test/perl_output/hide_first_sheet.xlsx +0 -0
  259. data/test/perl_output/hide_row_col.xlsx +0 -0
  260. data/test/perl_output/hide_sheet.xlsx +0 -0
  261. data/test/perl_output/hyperlink.xlsx +0 -0
  262. data/test/perl_output/ignore_errors.xlsx +0 -0
  263. data/test/perl_output/indent.xlsx +0 -0
  264. data/test/perl_output/keep_leading_zeros.xlsx +0 -0
  265. data/test/perl_output/merge1.xlsx +0 -0
  266. data/test/perl_output/merge2.xlsx +0 -0
  267. data/test/perl_output/merge3.xlsx +0 -0
  268. data/test/perl_output/merge4.xlsx +0 -0
  269. data/test/perl_output/merge5.xlsx +0 -0
  270. data/test/perl_output/merge6.xlsx +0 -0
  271. data/test/perl_output/multi_line.xlsx +0 -0
  272. data/test/perl_output/outline.xlsx +0 -0
  273. data/test/perl_output/outline_collapsed.xlsx +0 -0
  274. data/test/perl_output/panes.xlsx +0 -0
  275. data/test/perl_output/print_scale.xlsx +0 -0
  276. data/test/perl_output/properties.xlsx +0 -0
  277. data/test/perl_output/protection.xlsx +0 -0
  278. data/test/perl_output/regions.xlsx +0 -0
  279. data/test/perl_output/rich_strings.xlsx +0 -0
  280. data/test/perl_output/right_to_left.xlsx +0 -0
  281. data/test/perl_output/shape1.xlsx +0 -0
  282. data/test/perl_output/shape2.xlsx +0 -0
  283. data/test/perl_output/shape3.xlsx +0 -0
  284. data/test/perl_output/shape4.xlsx +0 -0
  285. data/test/perl_output/shape5.xlsx +0 -0
  286. data/test/perl_output/shape6.xlsx +0 -0
  287. data/test/perl_output/shape7.xlsx +0 -0
  288. data/test/perl_output/shape8.xlsx +0 -0
  289. data/test/perl_output/shape_all.xlsx +0 -0
  290. data/test/perl_output/sparklines1.xlsx +0 -0
  291. data/test/perl_output/sparklines2.xlsx +0 -0
  292. data/test/perl_output/stats.xlsx +0 -0
  293. data/test/perl_output/stats_ext.xlsx +0 -0
  294. data/test/perl_output/stocks.xlsx +0 -0
  295. data/test/perl_output/tab_colors.xlsx +0 -0
  296. data/test/perl_output/tables.xlsx +0 -0
  297. data/test/regression/_test_hyperlink31.rb +0 -26
  298. data/test/regression/disabled_test_vml04.rb +0 -41
  299. data/test/regression/images/black_150.jpg +0 -0
  300. data/test/regression/images/black_150.png +0 -0
  301. data/test/regression/images/black_150e.png +0 -0
  302. data/test/regression/images/black_300.jpg +0 -0
  303. data/test/regression/images/black_300.png +0 -0
  304. data/test/regression/images/black_300e.png +0 -0
  305. data/test/regression/images/black_72.jpg +0 -0
  306. data/test/regression/images/black_72.png +0 -0
  307. data/test/regression/images/black_72e.png +0 -0
  308. data/test/regression/images/black_96.jpg +0 -0
  309. data/test/regression/images/black_96.png +0 -0
  310. data/test/regression/images/blue.jpg +0 -0
  311. data/test/regression/images/blue.png +0 -0
  312. data/test/regression/images/grey.jpg +0 -0
  313. data/test/regression/images/grey.png +0 -0
  314. data/test/regression/images/happy.jpg +0 -0
  315. data/test/regression/images/issue32.png +0 -0
  316. data/test/regression/images/logo.gif +0 -0
  317. data/test/regression/images/logo.jpg +0 -0
  318. data/test/regression/images/logo.png +0 -0
  319. data/test/regression/images/mylogo.png +0 -0
  320. data/test/regression/images/red.bmp +0 -0
  321. data/test/regression/images/red.gif +0 -0
  322. data/test/regression/images/red.jpg +0 -0
  323. data/test/regression/images/red.png +0 -0
  324. data/test/regression/images/red2.png +0 -0
  325. data/test/regression/images/red_208.png +0 -0
  326. data/test/regression/images/red_64x20.png +0 -0
  327. data/test/regression/images/train.jpg +0 -0
  328. data/test/regression/images/yellow.jpg +0 -0
  329. data/test/regression/images/yellow.png +0 -0
  330. data/test/regression/images/zero_dpi.jpg +0 -0
  331. data/test/regression/klt.csv +0 -4
  332. data/test/regression/test_array_formula01.rb +0 -31
  333. data/test/regression/test_array_formula02.rb +0 -32
  334. data/test/regression/test_array_formula03.rb +0 -36
  335. data/test/regression/test_array_formula04.rb +0 -31
  336. data/test/regression/test_autofilter00.rb +0 -84
  337. data/test/regression/test_autofilter01.rb +0 -86
  338. data/test/regression/test_autofilter02.rb +0 -104
  339. data/test/regression/test_autofilter03.rb +0 -104
  340. data/test/regression/test_autofilter04.rb +0 -107
  341. data/test/regression/test_autofilter05.rb +0 -108
  342. data/test/regression/test_autofilter06.rb +0 -108
  343. data/test/regression/test_autofilter07.rb +0 -107
  344. data/test/regression/test_autofilter08.rb +0 -110
  345. data/test/regression/test_autofilter09.rb +0 -110
  346. data/test/regression/test_autofilter10.rb +0 -110
  347. data/test/regression/test_background01.rb +0 -23
  348. data/test/regression/test_background02.rb +0 -23
  349. data/test/regression/test_background03.rb +0 -24
  350. data/test/regression/test_background04.rb +0 -25
  351. data/test/regression/test_background05.rb +0 -25
  352. data/test/regression/test_background06.rb +0 -31
  353. data/test/regression/test_background07.rb +0 -37
  354. data/test/regression/test_button01.rb +0 -23
  355. data/test/regression/test_button02.rb +0 -29
  356. data/test/regression/test_button03.rb +0 -24
  357. data/test/regression/test_button04.rb +0 -25
  358. data/test/regression/test_button05.rb +0 -28
  359. data/test/regression/test_button06.rb +0 -28
  360. data/test/regression/test_button07.rb +0 -35
  361. data/test/regression/test_button08.rb +0 -28
  362. data/test/regression/test_button13.rb +0 -30
  363. data/test/regression/test_button14.rb +0 -31
  364. data/test/regression/test_chart_area01.rb +0 -45
  365. data/test/regression/test_chart_area02.rb +0 -45
  366. data/test/regression/test_chart_area03.rb +0 -45
  367. data/test/regression/test_chart_area04.rb +0 -44
  368. data/test/regression/test_chart_axis01.rb +0 -45
  369. data/test/regression/test_chart_axis02.rb +0 -45
  370. data/test/regression/test_chart_axis03.rb +0 -67
  371. data/test/regression/test_chart_axis04.rb +0 -52
  372. data/test/regression/test_chart_axis05.rb +0 -47
  373. data/test/regression/test_chart_axis06.rb +0 -49
  374. data/test/regression/test_chart_axis07.rb +0 -53
  375. data/test/regression/test_chart_axis08.rb +0 -52
  376. data/test/regression/test_chart_axis09.rb +0 -46
  377. data/test/regression/test_chart_axis10.rb +0 -52
  378. data/test/regression/test_chart_axis11.rb +0 -46
  379. data/test/regression/test_chart_axis12.rb +0 -46
  380. data/test/regression/test_chart_axis13.rb +0 -52
  381. data/test/regression/test_chart_axis14.rb +0 -66
  382. data/test/regression/test_chart_axis15.rb +0 -47
  383. data/test/regression/test_chart_axis16.rb +0 -69
  384. data/test/regression/test_chart_axis17.rb +0 -45
  385. data/test/regression/test_chart_axis18.rb +0 -43
  386. data/test/regression/test_chart_axis19.rb +0 -45
  387. data/test/regression/test_chart_axis20.rb +0 -45
  388. data/test/regression/test_chart_axis21.rb +0 -49
  389. data/test/regression/test_chart_axis22.rb +0 -44
  390. data/test/regression/test_chart_axis23.rb +0 -45
  391. data/test/regression/test_chart_axis24.rb +0 -45
  392. data/test/regression/test_chart_axis25.rb +0 -44
  393. data/test/regression/test_chart_axis26.rb +0 -46
  394. data/test/regression/test_chart_axis27.rb +0 -44
  395. data/test/regression/test_chart_axis28.rb +0 -44
  396. data/test/regression/test_chart_axis29.rb +0 -43
  397. data/test/regression/test_chart_axis30.rb +0 -40
  398. data/test/regression/test_chart_axis31.rb +0 -40
  399. data/test/regression/test_chart_axis32.rb +0 -40
  400. data/test/regression/test_chart_axis33.rb +0 -44
  401. data/test/regression/test_chart_axis34.rb +0 -43
  402. data/test/regression/test_chart_axis35.rb +0 -43
  403. data/test/regression/test_chart_axis36.rb +0 -43
  404. data/test/regression/test_chart_axis37.rb +0 -45
  405. data/test/regression/test_chart_axis38.rb +0 -43
  406. data/test/regression/test_chart_axis39.rb +0 -50
  407. data/test/regression/test_chart_axis40.rb +0 -44
  408. data/test/regression/test_chart_axis41.rb +0 -48
  409. data/test/regression/test_chart_axis42.rb +0 -44
  410. data/test/regression/test_chart_axis43.rb +0 -44
  411. data/test/regression/test_chart_axis44.rb +0 -54
  412. data/test/regression/test_chart_axis45.rb +0 -54
  413. data/test/regression/test_chart_axis46.rb +0 -54
  414. data/test/regression/test_chart_axis47.rb +0 -52
  415. data/test/regression/test_chart_axis48.rb +0 -53
  416. data/test/regression/test_chart_bar01.rb +0 -44
  417. data/test/regression/test_chart_bar02.rb +0 -54
  418. data/test/regression/test_chart_bar03.rb +0 -66
  419. data/test/regression/test_chart_bar04.rb +0 -69
  420. data/test/regression/test_chart_bar05.rb +0 -39
  421. data/test/regression/test_chart_bar06.rb +0 -49
  422. data/test/regression/test_chart_bar07.rb +0 -53
  423. data/test/regression/test_chart_bar08.rb +0 -43
  424. data/test/regression/test_chart_bar09.rb +0 -42
  425. data/test/regression/test_chart_bar10.rb +0 -46
  426. data/test/regression/test_chart_bar11.rb +0 -72
  427. data/test/regression/test_chart_bar12.rb +0 -38
  428. data/test/regression/test_chart_bar13.rb +0 -48
  429. data/test/regression/test_chart_bar14.rb +0 -64
  430. data/test/regression/test_chart_bar15.rb +0 -51
  431. data/test/regression/test_chart_bar16.rb +0 -49
  432. data/test/regression/test_chart_bar17.rb +0 -45
  433. data/test/regression/test_chart_bar18.rb +0 -56
  434. data/test/regression/test_chart_bar19.rb +0 -48
  435. data/test/regression/test_chart_bar20.rb +0 -45
  436. data/test/regression/test_chart_bar21.rb +0 -49
  437. data/test/regression/test_chart_bar22.rb +0 -66
  438. data/test/regression/test_chart_bar23.rb +0 -60
  439. data/test/regression/test_chart_bar24.rb +0 -44
  440. data/test/regression/test_chart_blank01.rb +0 -41
  441. data/test/regression/test_chart_blank02.rb +0 -41
  442. data/test/regression/test_chart_blank03.rb +0 -41
  443. data/test/regression/test_chart_blank04.rb +0 -41
  444. data/test/regression/test_chart_blank05.rb +0 -44
  445. data/test/regression/test_chart_blank06.rb +0 -41
  446. data/test/regression/test_chart_chartarea01.rb +0 -52
  447. data/test/regression/test_chart_chartarea02.rb +0 -52
  448. data/test/regression/test_chart_chartarea03.rb +0 -55
  449. data/test/regression/test_chart_chartarea04.rb +0 -71
  450. data/test/regression/test_chart_chartarea05.rb +0 -49
  451. data/test/regression/test_chart_chartarea06.rb +0 -49
  452. data/test/regression/test_chart_clustered01.rb +0 -65
  453. data/test/regression/test_chart_column01.rb +0 -39
  454. data/test/regression/test_chart_column02.rb +0 -44
  455. data/test/regression/test_chart_column03.rb +0 -44
  456. data/test/regression/test_chart_column04.rb +0 -44
  457. data/test/regression/test_chart_column05.rb +0 -39
  458. data/test/regression/test_chart_column06.rb +0 -45
  459. data/test/regression/test_chart_column07.rb +0 -40
  460. data/test/regression/test_chart_column08.rb +0 -42
  461. data/test/regression/test_chart_column09.rb +0 -39
  462. data/test/regression/test_chart_column10.rb +0 -39
  463. data/test/regression/test_chart_column11.rb +0 -41
  464. data/test/regression/test_chart_column12.rb +0 -37
  465. data/test/regression/test_chart_combined01.rb +0 -37
  466. data/test/regression/test_chart_combined02.rb +0 -43
  467. data/test/regression/test_chart_combined03.rb +0 -45
  468. data/test/regression/test_chart_combined04.rb +0 -47
  469. data/test/regression/test_chart_combined05.rb +0 -49
  470. data/test/regression/test_chart_combined06.rb +0 -49
  471. data/test/regression/test_chart_combined07.rb +0 -53
  472. data/test/regression/test_chart_combined08.rb +0 -65
  473. data/test/regression/test_chart_combined09.rb +0 -50
  474. data/test/regression/test_chart_combined10.rb +0 -43
  475. data/test/regression/test_chart_combined11.rb +0 -63
  476. data/test/regression/test_chart_crossing01.rb +0 -49
  477. data/test/regression/test_chart_crossing02.rb +0 -47
  478. data/test/regression/test_chart_crossing03.rb +0 -52
  479. data/test/regression/test_chart_crossing04.rb +0 -52
  480. data/test/regression/test_chart_crossing05.rb +0 -46
  481. data/test/regression/test_chart_crossing06.rb +0 -46
  482. data/test/regression/test_chart_data_labels01.rb +0 -47
  483. data/test/regression/test_chart_data_labels02.rb +0 -47
  484. data/test/regression/test_chart_data_labels03.rb +0 -47
  485. data/test/regression/test_chart_data_labels04.rb +0 -47
  486. data/test/regression/test_chart_data_labels05.rb +0 -50
  487. data/test/regression/test_chart_data_labels06.rb +0 -50
  488. data/test/regression/test_chart_data_labels07.rb +0 -40
  489. data/test/regression/test_chart_data_labels08.rb +0 -46
  490. data/test/regression/test_chart_data_labels09.rb +0 -47
  491. data/test/regression/test_chart_data_labels10.rb +0 -47
  492. data/test/regression/test_chart_data_labels11.rb +0 -37
  493. data/test/regression/test_chart_data_labels12.rb +0 -37
  494. data/test/regression/test_chart_data_labels13.rb +0 -37
  495. data/test/regression/test_chart_data_labels14.rb +0 -37
  496. data/test/regression/test_chart_data_labels15.rb +0 -37
  497. data/test/regression/test_chart_data_labels16.rb +0 -40
  498. data/test/regression/test_chart_data_labels17.rb +0 -63
  499. data/test/regression/test_chart_data_labels18.rb +0 -53
  500. data/test/regression/test_chart_data_labels19.rb +0 -53
  501. data/test/regression/test_chart_data_labels20.rb +0 -44
  502. data/test/regression/test_chart_data_labels21.rb +0 -48
  503. data/test/regression/test_chart_data_labels22.rb +0 -47
  504. data/test/regression/test_chart_data_labels23.rb +0 -50
  505. data/test/regression/test_chart_data_labels24.rb +0 -50
  506. data/test/regression/test_chart_data_labels25.rb +0 -61
  507. data/test/regression/test_chart_data_labels26.rb +0 -44
  508. data/test/regression/test_chart_data_labels27.rb +0 -44
  509. data/test/regression/test_chart_data_labels28.rb +0 -52
  510. data/test/regression/test_chart_data_labels29.rb +0 -43
  511. data/test/regression/test_chart_data_labels30.rb +0 -46
  512. data/test/regression/test_chart_data_labels31.rb +0 -49
  513. data/test/regression/test_chart_data_labels32.rb +0 -54
  514. data/test/regression/test_chart_data_labels33.rb +0 -52
  515. data/test/regression/test_chart_data_labels34.rb +0 -54
  516. data/test/regression/test_chart_data_labels35.rb +0 -46
  517. data/test/regression/test_chart_data_labels36.rb +0 -54
  518. data/test/regression/test_chart_data_labels37.rb +0 -51
  519. data/test/regression/test_chart_data_labels38.rb +0 -54
  520. data/test/regression/test_chart_data_labels39.rb +0 -53
  521. data/test/regression/test_chart_data_labels40.rb +0 -53
  522. data/test/regression/test_chart_data_labels41.rb +0 -54
  523. data/test/regression/test_chart_data_labels42.rb +0 -58
  524. data/test/regression/test_chart_data_labels43.rb +0 -58
  525. data/test/regression/test_chart_data_labels44.rb +0 -56
  526. data/test/regression/test_chart_data_labels45.rb +0 -57
  527. data/test/regression/test_chart_data_labels46.rb +0 -61
  528. data/test/regression/test_chart_data_labels47.rb +0 -61
  529. data/test/regression/test_chart_data_labels48.rb +0 -55
  530. data/test/regression/test_chart_data_labels49.rb +0 -55
  531. data/test/regression/test_chart_data_labels50.rb +0 -57
  532. data/test/regression/test_chart_date01.rb +0 -53
  533. data/test/regression/test_chart_date02.rb +0 -59
  534. data/test/regression/test_chart_date03.rb +0 -59
  535. data/test/regression/test_chart_date04.rb +0 -61
  536. data/test/regression/test_chart_date05.rb +0 -57
  537. data/test/regression/test_chart_display_units01.rb +0 -35
  538. data/test/regression/test_chart_display_units02.rb +0 -36
  539. data/test/regression/test_chart_display_units03.rb +0 -36
  540. data/test/regression/test_chart_display_units04.rb +0 -36
  541. data/test/regression/test_chart_display_units05.rb +0 -36
  542. data/test/regression/test_chart_display_units06.rb +0 -36
  543. data/test/regression/test_chart_display_units07.rb +0 -36
  544. data/test/regression/test_chart_display_units08.rb +0 -36
  545. data/test/regression/test_chart_display_units09.rb +0 -36
  546. data/test/regression/test_chart_display_units10.rb +0 -36
  547. data/test/regression/test_chart_display_units11.rb +0 -36
  548. data/test/regression/test_chart_display_units12.rb +0 -41
  549. data/test/regression/test_chart_doughnut01.rb +0 -39
  550. data/test/regression/test_chart_doughnut02.rb +0 -38
  551. data/test/regression/test_chart_doughnut03.rb +0 -38
  552. data/test/regression/test_chart_doughnut04.rb +0 -38
  553. data/test/regression/test_chart_doughnut05.rb +0 -38
  554. data/test/regression/test_chart_doughnut06.rb +0 -34
  555. data/test/regression/test_chart_doughnut07.rb +0 -37
  556. data/test/regression/test_chart_drop_lines01.rb +0 -46
  557. data/test/regression/test_chart_drop_lines02.rb +0 -51
  558. data/test/regression/test_chart_drop_lines03.rb +0 -46
  559. data/test/regression/test_chart_drop_lines04.rb +0 -64
  560. data/test/regression/test_chart_errorbars01.rb +0 -46
  561. data/test/regression/test_chart_errorbars02.rb +0 -56
  562. data/test/regression/test_chart_errorbars03.rb +0 -52
  563. data/test/regression/test_chart_errorbars04.rb +0 -47
  564. data/test/regression/test_chart_errorbars05.rb +0 -46
  565. data/test/regression/test_chart_errorbars06.rb +0 -46
  566. data/test/regression/test_chart_errorbars07.rb +0 -65
  567. data/test/regression/test_chart_errorbars08.rb +0 -50
  568. data/test/regression/test_chart_errorbars09.rb +0 -50
  569. data/test/regression/test_chart_errorbars10.rb +0 -52
  570. data/test/regression/test_chart_font01.rb +0 -54
  571. data/test/regression/test_chart_font02.rb +0 -56
  572. data/test/regression/test_chart_font03.rb +0 -59
  573. data/test/regression/test_chart_font04.rb +0 -57
  574. data/test/regression/test_chart_font05.rb +0 -54
  575. data/test/regression/test_chart_font06.rb +0 -84
  576. data/test/regression/test_chart_font07.rb +0 -44
  577. data/test/regression/test_chart_font08.rb +0 -44
  578. data/test/regression/test_chart_font09.rb +0 -40
  579. data/test/regression/test_chart_format01.rb +0 -44
  580. data/test/regression/test_chart_format02.rb +0 -45
  581. data/test/regression/test_chart_format03.rb +0 -46
  582. data/test/regression/test_chart_format04.rb +0 -45
  583. data/test/regression/test_chart_format05.rb +0 -45
  584. data/test/regression/test_chart_format06.rb +0 -50
  585. data/test/regression/test_chart_format07.rb +0 -55
  586. data/test/regression/test_chart_format08.rb +0 -50
  587. data/test/regression/test_chart_format09.rb +0 -54
  588. data/test/regression/test_chart_format10.rb +0 -57
  589. data/test/regression/test_chart_format11.rb +0 -61
  590. data/test/regression/test_chart_format12.rb +0 -58
  591. data/test/regression/test_chart_format13.rb +0 -50
  592. data/test/regression/test_chart_format14.rb +0 -54
  593. data/test/regression/test_chart_format15.rb +0 -52
  594. data/test/regression/test_chart_format16.rb +0 -55
  595. data/test/regression/test_chart_format17.rb +0 -39
  596. data/test/regression/test_chart_format18.rb +0 -43
  597. data/test/regression/test_chart_format19.rb +0 -46
  598. data/test/regression/test_chart_format20.rb +0 -54
  599. data/test/regression/test_chart_format21.rb +0 -47
  600. data/test/regression/test_chart_format22.rb +0 -47
  601. data/test/regression/test_chart_format23.rb +0 -47
  602. data/test/regression/test_chart_format24.rb +0 -52
  603. data/test/regression/test_chart_format25.rb +0 -46
  604. data/test/regression/test_chart_format26.rb +0 -48
  605. data/test/regression/test_chart_format27.rb +0 -58
  606. data/test/regression/test_chart_format28.rb +0 -52
  607. data/test/regression/test_chart_format29.rb +0 -59
  608. data/test/regression/test_chart_format30.rb +0 -53
  609. data/test/regression/test_chart_format31.rb +0 -60
  610. data/test/regression/test_chart_gap01.rb +0 -47
  611. data/test/regression/test_chart_gap02.rb +0 -47
  612. data/test/regression/test_chart_gap03.rb +0 -47
  613. data/test/regression/test_chart_gap04.rb +0 -54
  614. data/test/regression/test_chart_gap05.rb +0 -56
  615. data/test/regression/test_chart_gradient01.rb +0 -43
  616. data/test/regression/test_chart_gradient02.rb +0 -43
  617. data/test/regression/test_chart_gradient03.rb +0 -46
  618. data/test/regression/test_chart_gradient04.rb +0 -46
  619. data/test/regression/test_chart_gradient05.rb +0 -46
  620. data/test/regression/test_chart_gradient06.rb +0 -46
  621. data/test/regression/test_chart_gradient07.rb +0 -44
  622. data/test/regression/test_chart_gradient08.rb +0 -43
  623. data/test/regression/test_chart_gradient09.rb +0 -43
  624. data/test/regression/test_chart_gradient10.rb +0 -43
  625. data/test/regression/test_chart_gradient11.rb +0 -43
  626. data/test/regression/test_chart_gradient12.rb +0 -46
  627. data/test/regression/test_chart_gradient13.rb +0 -46
  628. data/test/regression/test_chart_gridlines01.rb +0 -42
  629. data/test/regression/test_chart_gridlines02.rb +0 -47
  630. data/test/regression/test_chart_gridlines03.rb +0 -63
  631. data/test/regression/test_chart_gridlines04.rb +0 -44
  632. data/test/regression/test_chart_gridlines05.rb +0 -48
  633. data/test/regression/test_chart_gridlines06.rb +0 -53
  634. data/test/regression/test_chart_gridlines07.rb +0 -69
  635. data/test/regression/test_chart_gridlines08.rb +0 -45
  636. data/test/regression/test_chart_gridlines09.rb +0 -67
  637. data/test/regression/test_chart_layout01.rb +0 -48
  638. data/test/regression/test_chart_layout02.rb +0 -48
  639. data/test/regression/test_chart_layout03.rb +0 -49
  640. data/test/regression/test_chart_layout04.rb +0 -47
  641. data/test/regression/test_chart_layout05.rb +0 -64
  642. data/test/regression/test_chart_layout06.rb +0 -48
  643. data/test/regression/test_chart_layout07.rb +0 -48
  644. data/test/regression/test_chart_layout08.rb +0 -49
  645. data/test/regression/test_chart_legend01.rb +0 -41
  646. data/test/regression/test_chart_legend02.rb +0 -41
  647. data/test/regression/test_chart_legend03.rb +0 -41
  648. data/test/regression/test_chart_legend04.rb +0 -41
  649. data/test/regression/test_chart_legend05.rb +0 -41
  650. data/test/regression/test_chart_legend06.rb +0 -41
  651. data/test/regression/test_chart_legend07.rb +0 -38
  652. data/test/regression/test_chart_line01.rb +0 -39
  653. data/test/regression/test_chart_line02.rb +0 -44
  654. data/test/regression/test_chart_line03.rb +0 -39
  655. data/test/regression/test_chart_line04.rb +0 -39
  656. data/test/regression/test_chart_line05.rb +0 -43
  657. data/test/regression/test_chart_line06.rb +0 -43
  658. data/test/regression/test_chart_name01.rb +0 -43
  659. data/test/regression/test_chart_name02.rb +0 -55
  660. data/test/regression/test_chart_name03.rb +0 -55
  661. data/test/regression/test_chart_order01.rb +0 -54
  662. data/test/regression/test_chart_order02.rb +0 -54
  663. data/test/regression/test_chart_order03.rb +0 -60
  664. data/test/regression/test_chart_pattern01.rb +0 -49
  665. data/test/regression/test_chart_pattern02.rb +0 -106
  666. data/test/regression/test_chart_pattern03.rb +0 -105
  667. data/test/regression/test_chart_pattern04.rb +0 -105
  668. data/test/regression/test_chart_pattern05.rb +0 -105
  669. data/test/regression/test_chart_pattern06.rb +0 -105
  670. data/test/regression/test_chart_pattern07.rb +0 -105
  671. data/test/regression/test_chart_pattern08.rb +0 -105
  672. data/test/regression/test_chart_pattern09.rb +0 -57
  673. data/test/regression/test_chart_pattern10.rb +0 -57
  674. data/test/regression/test_chart_pie01.rb +0 -36
  675. data/test/regression/test_chart_pie02.rb +0 -38
  676. data/test/regression/test_chart_pie03.rb +0 -38
  677. data/test/regression/test_chart_pie04.rb +0 -38
  678. data/test/regression/test_chart_pie05.rb +0 -38
  679. data/test/regression/test_chart_points01.rb +0 -37
  680. data/test/regression/test_chart_points02.rb +0 -40
  681. data/test/regression/test_chart_points03.rb +0 -42
  682. data/test/regression/test_chart_points04.rb +0 -52
  683. data/test/regression/test_chart_points05.rb +0 -49
  684. data/test/regression/test_chart_points06.rb +0 -49
  685. data/test/regression/test_chart_radar01.rb +0 -39
  686. data/test/regression/test_chart_radar02.rb +0 -43
  687. data/test/regression/test_chart_radar03.rb +0 -43
  688. data/test/regression/test_chart_scatter01.rb +0 -45
  689. data/test/regression/test_chart_scatter02.rb +0 -49
  690. data/test/regression/test_chart_scatter03.rb +0 -49
  691. data/test/regression/test_chart_scatter04.rb +0 -49
  692. data/test/regression/test_chart_scatter05.rb +0 -49
  693. data/test/regression/test_chart_scatter06.rb +0 -51
  694. data/test/regression/test_chart_scatter07.rb +0 -59
  695. data/test/regression/test_chart_scatter08.rb +0 -57
  696. data/test/regression/test_chart_scatter09.rb +0 -59
  697. data/test/regression/test_chart_scatter10.rb +0 -59
  698. data/test/regression/test_chart_scatter11.rb +0 -59
  699. data/test/regression/test_chart_scatter12.rb +0 -51
  700. data/test/regression/test_chart_scatter13.rb +0 -51
  701. data/test/regression/test_chart_scatter14.rb +0 -52
  702. data/test/regression/test_chart_scatter15.rb +0 -44
  703. data/test/regression/test_chart_size01.rb +0 -41
  704. data/test/regression/test_chart_size02.rb +0 -41
  705. data/test/regression/test_chart_size03.rb +0 -42
  706. data/test/regression/test_chart_size04.rb +0 -41
  707. data/test/regression/test_chart_size05.rb +0 -39
  708. data/test/regression/test_chart_sparse01.rb +0 -51
  709. data/test/regression/test_chart_stock01.rb +0 -65
  710. data/test/regression/test_chart_stock02.rb +0 -71
  711. data/test/regression/test_chart_str01.rb +0 -43
  712. data/test/regression/test_chart_str02.rb +0 -47
  713. data/test/regression/test_chart_table01.rb +0 -42
  714. data/test/regression/test_chart_table02.rb +0 -47
  715. data/test/regression/test_chart_table03.rb +0 -56
  716. data/test/regression/test_chart_title01.rb +0 -39
  717. data/test/regression/test_chart_title02.rb +0 -39
  718. data/test/regression/test_chartsheet01.rb +0 -41
  719. data/test/regression/test_chartsheet02.rb +0 -48
  720. data/test/regression/test_chartsheet03.rb +0 -46
  721. data/test/regression/test_chartsheet04.rb +0 -46
  722. data/test/regression/test_chartsheet05.rb +0 -46
  723. data/test/regression/test_chartsheet06.rb +0 -42
  724. data/test/regression/test_chartsheet07.rb +0 -55
  725. data/test/regression/test_chartsheet08.rb +0 -59
  726. data/test/regression/test_chartsheet09.rb +0 -50
  727. data/test/regression/test_comment01.rb +0 -27
  728. data/test/regression/test_comment02.rb +0 -28
  729. data/test/regression/test_comment03.rb +0 -31
  730. data/test/regression/test_comment04.rb +0 -36
  731. data/test/regression/test_comment06.rb +0 -33
  732. data/test/regression/test_comment07.rb +0 -35
  733. data/test/regression/test_comment08.rb +0 -35
  734. data/test/regression/test_comment09.rb +0 -31
  735. data/test/regression/test_comment10.rb +0 -30
  736. data/test/regression/test_comment11.rb +0 -31
  737. data/test/regression/test_comment12.rb +0 -30
  738. data/test/regression/test_comment13.rb +0 -36
  739. data/test/regression/test_comment14.rb +0 -29
  740. data/test/regression/test_comment15.rb +0 -28
  741. data/test/regression/test_comment16.rb +0 -34
  742. data/test/regression/test_cond_format01.rb +0 -45
  743. data/test/regression/test_cond_format02.rb +0 -40
  744. data/test/regression/test_cond_format03.rb +0 -51
  745. data/test/regression/test_cond_format04.rb +0 -50
  746. data/test/regression/test_cond_format05.rb +0 -40
  747. data/test/regression/test_cond_format06.rb +0 -44
  748. data/test/regression/test_cond_format07.rb +0 -61
  749. data/test/regression/test_cond_format08.rb +0 -45
  750. data/test/regression/test_cond_format10.rb +0 -42
  751. data/test/regression/test_cond_format11.rb +0 -46
  752. data/test/regression/test_cond_format12.rb +0 -46
  753. data/test/regression/test_cond_format13.rb +0 -52
  754. data/test/regression/test_cond_format14.rb +0 -42
  755. data/test/regression/test_cond_format15.rb +0 -53
  756. data/test/regression/test_cond_format16.rb +0 -53
  757. data/test/regression/test_cond_format17.rb +0 -37
  758. data/test/regression/test_cond_format18.rb +0 -136
  759. data/test/regression/test_cond_format19.rb +0 -64
  760. data/test/regression/test_cond_format20.rb +0 -43
  761. data/test/regression/test_custom_colors01.rb +0 -33
  762. data/test/regression/test_data_validation01.rb +0 -22
  763. data/test/regression/test_data_validation02.rb +0 -27
  764. data/test/regression/test_data_validation03.rb +0 -44
  765. data/test/regression/test_data_validation04.rb +0 -37
  766. data/test/regression/test_data_validation05.rb +0 -36
  767. data/test/regression/test_data_validation08.rb +0 -24
  768. data/test/regression/test_date_1904_01.rb +0 -31
  769. data/test/regression/test_date_1904_02.rb +0 -34
  770. data/test/regression/test_date_examples01.rb +0 -48
  771. data/test/regression/test_default_format01.rb +0 -22
  772. data/test/regression/test_default_row01.rb +0 -26
  773. data/test/regression/test_default_row02.rb +0 -28
  774. data/test/regression/test_default_row03.rb +0 -28
  775. data/test/regression/test_default_row04.rb +0 -31
  776. data/test/regression/test_default_row05.rb +0 -32
  777. data/test/regression/test_defined_name01.rb +0 -45
  778. data/test/regression/test_defined_name02.rb +0 -30
  779. data/test/regression/test_defined_name03.rb +0 -30
  780. data/test/regression/test_defined_name04.rb +0 -50
  781. data/test/regression/test_dynamic_array01.rb +0 -25
  782. data/test/regression/test_escapes01.rb +0 -35
  783. data/test/regression/test_escapes02.rb +0 -32
  784. data/test/regression/test_escapes03.rb +0 -33
  785. data/test/regression/test_escapes04.rb +0 -31
  786. data/test/regression/test_escapes05.rb +0 -32
  787. data/test/regression/test_escapes06.rb +0 -26
  788. data/test/regression/test_escapes07.rb +0 -29
  789. data/test/regression/test_escapes08.rb +0 -30
  790. data/test/regression/test_excel2003_style01.rb +0 -21
  791. data/test/regression/test_excel2003_style02.rb +0 -37
  792. data/test/regression/test_excel2003_style03.rb +0 -40
  793. data/test/regression/test_excel2003_style04.rb +0 -24
  794. data/test/regression/test_excel2003_style05.rb +0 -31
  795. data/test/regression/test_excel2003_style06.rb +0 -31
  796. data/test/regression/test_excel2003_style07.rb +0 -31
  797. data/test/regression/test_excel2003_style08.rb +0 -26
  798. data/test/regression/test_firstsheet01.rb +0 -43
  799. data/test/regression/test_fit_to_pages01.rb +0 -35
  800. data/test/regression/test_fit_to_pages02.rb +0 -35
  801. data/test/regression/test_fit_to_pages03.rb +0 -35
  802. data/test/regression/test_fit_to_pages04.rb +0 -35
  803. data/test/regression/test_fit_to_pages05.rb +0 -35
  804. data/test/regression/test_format01.rb +0 -35
  805. data/test/regression/test_format02.rb +0 -47
  806. data/test/regression/test_format03.rb +0 -31
  807. data/test/regression/test_format04.rb +0 -41
  808. data/test/regression/test_format05.rb +0 -26
  809. data/test/regression/test_format11.rb +0 -28
  810. data/test/regression/test_format12.rb +0 -41
  811. data/test/regression/test_format13.rb +0 -31
  812. data/test/regression/test_format14.rb +0 -26
  813. data/test/regression/test_format15.rb +0 -26
  814. data/test/regression/test_format16.rb +0 -24
  815. data/test/regression/test_format17.rb +0 -24
  816. data/test/regression/test_formula_results01.rb +0 -37
  817. data/test/regression/test_gridlines01.rb +0 -34
  818. data/test/regression/test_header01.rb +0 -28
  819. data/test/regression/test_header02.rb +0 -28
  820. data/test/regression/test_header03.rb +0 -31
  821. data/test/regression/test_header04.rb +0 -30
  822. data/test/regression/test_header_image01.rb +0 -26
  823. data/test/regression/test_header_image02.rb +0 -33
  824. data/test/regression/test_header_image03.rb +0 -34
  825. data/test/regression/test_header_image04.rb +0 -34
  826. data/test/regression/test_header_image05.rb +0 -28
  827. data/test/regression/test_header_image06.rb +0 -32
  828. data/test/regression/test_header_image07.rb +0 -29
  829. data/test/regression/test_header_image08.rb +0 -33
  830. data/test/regression/test_header_image09.rb +0 -32
  831. data/test/regression/test_header_image10.rb +0 -36
  832. data/test/regression/test_header_image11.rb +0 -28
  833. data/test/regression/test_header_image12.rb +0 -28
  834. data/test/regression/test_header_image13.rb +0 -36
  835. data/test/regression/test_header_image14.rb +0 -36
  836. data/test/regression/test_header_image15.rb +0 -36
  837. data/test/regression/test_header_image16.rb +0 -42
  838. data/test/regression/test_header_image17.rb +0 -46
  839. data/test/regression/test_header_image18.rb +0 -48
  840. data/test/regression/test_header_image19.rb +0 -36
  841. data/test/regression/test_hide01.rb +0 -25
  842. data/test/regression/test_hyperlink01.rb +0 -26
  843. data/test/regression/test_hyperlink02.rb +0 -30
  844. data/test/regression/test_hyperlink03.rb +0 -36
  845. data/test/regression/test_hyperlink04.rb +0 -34
  846. data/test/regression/test_hyperlink05.rb +0 -29
  847. data/test/regression/test_hyperlink06.rb +0 -28
  848. data/test/regression/test_hyperlink07.rb +0 -23
  849. data/test/regression/test_hyperlink08.rb +0 -27
  850. data/test/regression/test_hyperlink09.rb +0 -28
  851. data/test/regression/test_hyperlink10.rb +0 -27
  852. data/test/regression/test_hyperlink11.rb +0 -27
  853. data/test/regression/test_hyperlink12.rb +0 -28
  854. data/test/regression/test_hyperlink13.rb +0 -27
  855. data/test/regression/test_hyperlink14.rb +0 -27
  856. data/test/regression/test_hyperlink15.rb +0 -29
  857. data/test/regression/test_hyperlink16.rb +0 -29
  858. data/test/regression/test_hyperlink17.rb +0 -30
  859. data/test/regression/test_hyperlink18.rb +0 -30
  860. data/test/regression/test_hyperlink20.rb +0 -32
  861. data/test/regression/test_hyperlink21.rb +0 -27
  862. data/test/regression/test_hyperlink22.rb +0 -27
  863. data/test/regression/test_hyperlink23.rb +0 -27
  864. data/test/regression/test_hyperlink24.rb +0 -27
  865. data/test/regression/test_hyperlink25.rb +0 -30
  866. data/test/regression/test_hyperlink26.rb +0 -30
  867. data/test/regression/test_hyperlink27.rb +0 -27
  868. data/test/regression/test_hyperlink28.rb +0 -50
  869. data/test/regression/test_hyperlink29.rb +0 -27
  870. data/test/regression/test_hyperlink30.rb +0 -36
  871. data/test/regression/test_hyperlink32.rb +0 -27
  872. data/test/regression/test_hyperlink33.rb +0 -28
  873. data/test/regression/test_hyperlink34.rb +0 -33
  874. data/test/regression/test_hyperlink35.rb +0 -39
  875. data/test/regression/test_hyperlink36.rb +0 -34
  876. data/test/regression/test_hyperlink37.rb +0 -33
  877. data/test/regression/test_hyperlink38.rb +0 -27
  878. data/test/regression/test_hyperlink39.rb +0 -27
  879. data/test/regression/test_hyperlink40.rb +0 -27
  880. data/test/regression/test_hyperlink41.rb +0 -27
  881. data/test/regression/test_hyperlink42.rb +0 -27
  882. data/test/regression/test_hyperlink43.rb +0 -27
  883. data/test/regression/test_hyperlink44.rb +0 -27
  884. data/test/regression/test_hyperlink45.rb +0 -27
  885. data/test/regression/test_hyperlink47.rb +0 -27
  886. data/test/regression/test_hyperlink48.rb +0 -31
  887. data/test/regression/test_hyperlink49.rb +0 -29
  888. data/test/regression/test_hyperlink50.rb +0 -27
  889. data/test/regression/test_hyperlink51.rb +0 -27
  890. data/test/regression/test_ignore_error01.rb +0 -23
  891. data/test/regression/test_ignore_error02.rb +0 -24
  892. data/test/regression/test_ignore_error03.rb +0 -26
  893. data/test/regression/test_ignore_error04.rb +0 -26
  894. data/test/regression/test_ignore_error05.rb +0 -32
  895. data/test/regression/test_ignore_error06.rb +0 -32
  896. data/test/regression/test_image01.rb +0 -23
  897. data/test/regression/test_image02.rb +0 -23
  898. data/test/regression/test_image03.rb +0 -23
  899. data/test/regression/test_image04.rb +0 -23
  900. data/test/regression/test_image05.rb +0 -26
  901. data/test/regression/test_image06.rb +0 -36
  902. data/test/regression/test_image07.rb +0 -25
  903. data/test/regression/test_image08.rb +0 -27
  904. data/test/regression/test_image09.rb +0 -24
  905. data/test/regression/test_image10.rb +0 -24
  906. data/test/regression/test_image11.rb +0 -24
  907. data/test/regression/test_image12.rb +0 -27
  908. data/test/regression/test_image13.rb +0 -27
  909. data/test/regression/test_image14.rb +0 -29
  910. data/test/regression/test_image15.rb +0 -31
  911. data/test/regression/test_image16.rb +0 -24
  912. data/test/regression/test_image17.rb +0 -23
  913. data/test/regression/test_image18.rb +0 -27
  914. data/test/regression/test_image19.rb +0 -24
  915. data/test/regression/test_image22.rb +0 -24
  916. data/test/regression/test_image23.rb +0 -30
  917. data/test/regression/test_image24.rb +0 -24
  918. data/test/regression/test_image25.rb +0 -24
  919. data/test/regression/test_image26.rb +0 -30
  920. data/test/regression/test_image27.rb +0 -24
  921. data/test/regression/test_image28.rb +0 -27
  922. data/test/regression/test_image29.rb +0 -27
  923. data/test/regression/test_image30.rb +0 -27
  924. data/test/regression/test_image31.rb +0 -30
  925. data/test/regression/test_image32.rb +0 -28
  926. data/test/regression/test_image33.rb +0 -32
  927. data/test/regression/test_image35.rb +0 -26
  928. data/test/regression/test_image36.rb +0 -26
  929. data/test/regression/test_image44.rb +0 -28
  930. data/test/regression/test_image45.rb +0 -29
  931. data/test/regression/test_image46.rb +0 -29
  932. data/test/regression/test_image47.rb +0 -28
  933. data/test/regression/test_image48.rb +0 -32
  934. data/test/regression/test_image49.rb +0 -38
  935. data/test/regression/test_image50.rb +0 -24
  936. data/test/regression/test_image51.rb +0 -30
  937. data/test/regression/test_image52.rb +0 -26
  938. data/test/regression/test_image53.rb +0 -26
  939. data/test/regression/test_image54.rb +0 -26
  940. data/test/regression/test_image55.rb +0 -27
  941. data/test/regression/test_image56.rb +0 -23
  942. data/test/regression/test_image57.rb +0 -23
  943. data/test/regression/test_landscape01.rb +0 -27
  944. data/test/regression/test_macro01.rb +0 -29
  945. data/test/regression/test_merge_cells01.rb +0 -25
  946. data/test/regression/test_merge_range01.rb +0 -24
  947. data/test/regression/test_merge_range02.rb +0 -24
  948. data/test/regression/test_merge_range03.rb +0 -26
  949. data/test/regression/test_merge_range04.rb +0 -24
  950. data/test/regression/test_merge_range05.rb +0 -24
  951. data/test/regression/test_object_position01.rb +0 -26
  952. data/test/regression/test_object_position02.rb +0 -26
  953. data/test/regression/test_object_position03.rb +0 -26
  954. data/test/regression/test_object_position04.rb +0 -44
  955. data/test/regression/test_object_position06.rb +0 -28
  956. data/test/regression/test_object_position07.rb +0 -28
  957. data/test/regression/test_object_position08.rb +0 -47
  958. data/test/regression/test_object_position09.rb +0 -50
  959. data/test/regression/test_object_position10.rb +0 -28
  960. data/test/regression/test_object_position12.rb +0 -25
  961. data/test/regression/test_object_position13.rb +0 -25
  962. data/test/regression/test_object_position14.rb +0 -25
  963. data/test/regression/test_object_position15.rb +0 -29
  964. data/test/regression/test_object_position16.rb +0 -29
  965. data/test/regression/test_object_position17.rb +0 -29
  966. data/test/regression/test_object_position18.rb +0 -29
  967. data/test/regression/test_object_position19.rb +0 -29
  968. data/test/regression/test_object_position20.rb +0 -29
  969. data/test/regression/test_outline01.rb +0 -84
  970. data/test/regression/test_outline02.rb +0 -87
  971. data/test/regression/test_outline03.rb +0 -57
  972. data/test/regression/test_outline04.rb +0 -53
  973. data/test/regression/test_outline05.rb +0 -88
  974. data/test/regression/test_outline06.rb +0 -87
  975. data/test/regression/test_page_breaks01.rb +0 -34
  976. data/test/regression/test_page_breaks02.rb +0 -34
  977. data/test/regression/test_page_breaks03.rb +0 -34
  978. data/test/regression/test_page_breaks04.rb +0 -34
  979. data/test/regression/test_page_breaks05.rb +0 -34
  980. data/test/regression/test_page_breaks06.rb +0 -35
  981. data/test/regression/test_page_view01.rb +0 -34
  982. data/test/regression/test_panes01.rb +0 -61
  983. data/test/regression/test_print_across01.rb +0 -35
  984. data/test/regression/test_print_area01.rb +0 -34
  985. data/test/regression/test_print_area02.rb +0 -34
  986. data/test/regression/test_print_area03.rb +0 -34
  987. data/test/regression/test_print_area04.rb +0 -34
  988. data/test/regression/test_print_area05.rb +0 -34
  989. data/test/regression/test_print_area06.rb +0 -34
  990. data/test/regression/test_print_area07.rb +0 -35
  991. data/test/regression/test_print_options01.rb +0 -34
  992. data/test/regression/test_print_options02.rb +0 -34
  993. data/test/regression/test_print_options03.rb +0 -34
  994. data/test/regression/test_print_options04.rb +0 -34
  995. data/test/regression/test_print_options05.rb +0 -37
  996. data/test/regression/test_print_options06.rb +0 -35
  997. data/test/regression/test_print_options07.rb +0 -31
  998. data/test/regression/test_print_scale01.rb +0 -35
  999. data/test/regression/test_print_scale02.rb +0 -35
  1000. data/test/regression/test_properties01.rb +0 -36
  1001. data/test/regression/test_properties02.rb +0 -25
  1002. data/test/regression/test_properties03.rb +0 -26
  1003. data/test/regression/test_properties04.rb +0 -61
  1004. data/test/regression/test_properties05.rb +0 -30
  1005. data/test/regression/test_protect01.rb +0 -28
  1006. data/test/regression/test_protect02.rb +0 -30
  1007. data/test/regression/test_protect03.rb +0 -30
  1008. data/test/regression/test_protect04.rb +0 -32
  1009. data/test/regression/test_protect05.rb +0 -35
  1010. data/test/regression/test_protect06.rb +0 -35
  1011. data/test/regression/test_protect07.rb +0 -23
  1012. data/test/regression/test_quote_name01.rb +0 -48
  1013. data/test/regression/test_quote_name03.rb +0 -41
  1014. data/test/regression/test_quote_name04.rb +0 -40
  1015. data/test/regression/test_repeat01.rb +0 -34
  1016. data/test/regression/test_repeat02.rb +0 -34
  1017. data/test/regression/test_repeat03.rb +0 -35
  1018. data/test/regression/test_repeat04.rb +0 -34
  1019. data/test/regression/test_repeat05.rb +0 -41
  1020. data/test/regression/test_rich_string01.rb +0 -28
  1021. data/test/regression/test_rich_string02.rb +0 -28
  1022. data/test/regression/test_rich_string03.rb +0 -28
  1023. data/test/regression/test_rich_string04.rb +0 -28
  1024. data/test/regression/test_rich_string05.rb +0 -30
  1025. data/test/regression/test_rich_string06.rb +0 -27
  1026. data/test/regression/test_rich_string07.rb +0 -33
  1027. data/test/regression/test_rich_string08.rb +0 -29
  1028. data/test/regression/test_rich_string09.rb +0 -31
  1029. data/test/regression/test_rich_string10.rb +0 -30
  1030. data/test/regression/test_rich_string11.rb +0 -29
  1031. data/test/regression/test_rich_string12.rb +0 -32
  1032. data/test/regression/test_row_col_format01.rb +0 -24
  1033. data/test/regression/test_row_col_format02.rb +0 -25
  1034. data/test/regression/test_row_col_format03.rb +0 -24
  1035. data/test/regression/test_row_col_format04.rb +0 -25
  1036. data/test/regression/test_row_col_format05.rb +0 -26
  1037. data/test/regression/test_row_col_format06.rb +0 -29
  1038. data/test/regression/test_row_col_format07.rb +0 -24
  1039. data/test/regression/test_row_col_format08.rb +0 -34
  1040. data/test/regression/test_row_col_format09.rb +0 -33
  1041. data/test/regression/test_row_col_format10.rb +0 -24
  1042. data/test/regression/test_row_col_format11.rb +0 -23
  1043. data/test/regression/test_row_col_format12.rb +0 -23
  1044. data/test/regression/test_row_col_format13.rb +0 -28
  1045. data/test/regression/test_row_col_format14.rb +0 -28
  1046. data/test/regression/test_selection01.rb +0 -23
  1047. data/test/regression/test_selection02.rb +0 -33
  1048. data/test/regression/test_set_column01.rb +0 -63
  1049. data/test/regression/test_set_column02.rb +0 -64
  1050. data/test/regression/test_set_column03.rb +0 -34
  1051. data/test/regression/test_set_column04.rb +0 -42
  1052. data/test/regression/test_set_column05.rb +0 -52
  1053. data/test/regression/test_set_column06.rb +0 -49
  1054. data/test/regression/test_set_column07.rb +0 -45
  1055. data/test/regression/test_set_column08.rb +0 -42
  1056. data/test/regression/test_set_column09.rb +0 -31
  1057. data/test/regression/test_set_column10.rb +0 -55
  1058. data/test/regression/test_set_column11.rb +0 -48
  1059. data/test/regression/test_set_print_scale01.rb +0 -36
  1060. data/test/regression/test_set_row01.rb +0 -35
  1061. data/test/regression/test_set_row02.rb +0 -35
  1062. data/test/regression/test_set_row03.rb +0 -35
  1063. data/test/regression/test_set_row04.rb +0 -35
  1064. data/test/regression/test_set_start_page01.rb +0 -33
  1065. data/test/regression/test_set_start_page02.rb +0 -33
  1066. data/test/regression/test_set_start_page03.rb +0 -33
  1067. data/test/regression/test_shape01.rb +0 -25
  1068. data/test/regression/test_shape02.rb +0 -42
  1069. data/test/regression/test_shape03.rb +0 -45
  1070. data/test/regression/test_shape04.rb +0 -43
  1071. data/test/regression/test_shape_connect01.rb +0 -48
  1072. data/test/regression/test_shape_connect02.rb +0 -42
  1073. data/test/regression/test_shape_connect03.rb +0 -78
  1074. data/test/regression/test_shape_connect04.rb +0 -75
  1075. data/test/regression/test_shape_scale01.rb +0 -45
  1076. data/test/regression/test_shape_stencil01.rb +0 -39
  1077. data/test/regression/test_shared_strings01.rb +0 -32
  1078. data/test/regression/test_shared_strings02.rb +0 -45
  1079. data/test/regression/test_shared_strings_encoding.rb +0 -0
  1080. data/test/regression/test_simple01.rb +0 -24
  1081. data/test/regression/test_simple02.rb +0 -32
  1082. data/test/regression/test_simple03.rb +0 -39
  1083. data/test/regression/test_simple04.rb +0 -29
  1084. data/test/regression/test_simple05.rb +0 -40
  1085. data/test/regression/test_tab_color01.rb +0 -20
  1086. data/test/regression/test_table01.rb +0 -27
  1087. data/test/regression/test_table02.rb +0 -37
  1088. data/test/regression/test_table03.rb +0 -33
  1089. data/test/regression/test_table04.rb +0 -37
  1090. data/test/regression/test_table05.rb +0 -41
  1091. data/test/regression/test_table06.rb +0 -44
  1092. data/test/regression/test_table07.rb +0 -29
  1093. data/test/regression/test_table08.rb +0 -48
  1094. data/test/regression/test_table09.rb +0 -65
  1095. data/test/regression/test_table10.rb +0 -68
  1096. data/test/regression/test_table11.rb +0 -37
  1097. data/test/regression/test_table12.rb +0 -36
  1098. data/test/regression/test_table13.rb +0 -51
  1099. data/test/regression/test_table14.rb +0 -51
  1100. data/test/regression/test_table15.rb +0 -37
  1101. data/test/regression/test_table16.rb +0 -37
  1102. data/test/regression/test_table17.rb +0 -70
  1103. data/test/regression/test_table20.rb +0 -34
  1104. data/test/regression/test_table21.rb +0 -36
  1105. data/test/regression/test_table22.rb +0 -32
  1106. data/test/regression/test_table23.rb +0 -56
  1107. data/test/regression/test_table24.rb +0 -27
  1108. data/test/regression/test_table25.rb +0 -27
  1109. data/test/regression/test_table26.rb +0 -38
  1110. data/test/regression/test_tutorial01.rb +0 -38
  1111. data/test/regression/test_tutorial02.rb +0 -44
  1112. data/test/regression/test_tutorial03.rb +0 -49
  1113. data/test/regression/test_types02.rb +0 -25
  1114. data/test/regression/test_types08.rb +0 -31
  1115. data/test/regression/test_update_range_format_with_params.rb +0 -42
  1116. data/test/regression/test_urls_as_strings.rb +0 -25
  1117. data/test/regression/test_utf8_01.rb +0 -23
  1118. data/test/regression/test_utf8_03.rb +0 -23
  1119. data/test/regression/test_utf8_04.rb +0 -23
  1120. data/test/regression/test_utf8_05.rb +0 -26
  1121. data/test/regression/test_utf8_06.rb +0 -28
  1122. data/test/regression/test_utf8_07.rb +0 -27
  1123. data/test/regression/test_utf8_08.rb +0 -38
  1124. data/test/regression/test_utf8_09.rb +0 -20
  1125. data/test/regression/test_utf8_10.rb +0 -42
  1126. data/test/regression/test_utf8_11.rb +0 -23
  1127. data/test/regression/test_vml01.rb +0 -29
  1128. data/test/regression/test_vml02.rb +0 -31
  1129. data/test/regression/test_vml03.rb +0 -40
  1130. data/test/regression/xlsx_files/array_formula01.xlsx +0 -0
  1131. data/test/regression/xlsx_files/array_formula02.xlsx +0 -0
  1132. data/test/regression/xlsx_files/array_formula03.xlsx +0 -0
  1133. data/test/regression/xlsx_files/array_formula04.xlsx +0 -0
  1134. data/test/regression/xlsx_files/autofilter00.xlsx +0 -0
  1135. data/test/regression/xlsx_files/autofilter01.xlsx +0 -0
  1136. data/test/regression/xlsx_files/autofilter02.xlsx +0 -0
  1137. data/test/regression/xlsx_files/autofilter03.xlsx +0 -0
  1138. data/test/regression/xlsx_files/autofilter04.xlsx +0 -0
  1139. data/test/regression/xlsx_files/autofilter05.xlsx +0 -0
  1140. data/test/regression/xlsx_files/autofilter06.xlsx +0 -0
  1141. data/test/regression/xlsx_files/autofilter07.xlsx +0 -0
  1142. data/test/regression/xlsx_files/autofilter08.xlsx +0 -0
  1143. data/test/regression/xlsx_files/autofilter09.xlsx +0 -0
  1144. data/test/regression/xlsx_files/autofilter10.xlsx +0 -0
  1145. data/test/regression/xlsx_files/background01.xlsx +0 -0
  1146. data/test/regression/xlsx_files/background02.xlsx +0 -0
  1147. data/test/regression/xlsx_files/background03.xlsx +0 -0
  1148. data/test/regression/xlsx_files/background04.xlsx +0 -0
  1149. data/test/regression/xlsx_files/background05.xlsx +0 -0
  1150. data/test/regression/xlsx_files/background06.xlsx +0 -0
  1151. data/test/regression/xlsx_files/background07.xlsx +0 -0
  1152. data/test/regression/xlsx_files/button01.xlsx +0 -0
  1153. data/test/regression/xlsx_files/button02.xlsx +0 -0
  1154. data/test/regression/xlsx_files/button03.xlsx +0 -0
  1155. data/test/regression/xlsx_files/button04.xlsx +0 -0
  1156. data/test/regression/xlsx_files/button05.xlsx +0 -0
  1157. data/test/regression/xlsx_files/button07.xlsm +0 -0
  1158. data/test/regression/xlsx_files/button08.xlsx +0 -0
  1159. data/test/regression/xlsx_files/button09.xlsx +0 -0
  1160. data/test/regression/xlsx_files/button10.xlsx +0 -0
  1161. data/test/regression/xlsx_files/button11.xlsx +0 -0
  1162. data/test/regression/xlsx_files/button12.xlsx +0 -0
  1163. data/test/regression/xlsx_files/chart_area01.xlsx +0 -0
  1164. data/test/regression/xlsx_files/chart_area02.xlsx +0 -0
  1165. data/test/regression/xlsx_files/chart_area03.xlsx +0 -0
  1166. data/test/regression/xlsx_files/chart_area04.xlsx +0 -0
  1167. data/test/regression/xlsx_files/chart_axis01.xlsx +0 -0
  1168. data/test/regression/xlsx_files/chart_axis02.xlsx +0 -0
  1169. data/test/regression/xlsx_files/chart_axis03.xlsx +0 -0
  1170. data/test/regression/xlsx_files/chart_axis04.xlsx +0 -0
  1171. data/test/regression/xlsx_files/chart_axis05.xlsx +0 -0
  1172. data/test/regression/xlsx_files/chart_axis06.xlsx +0 -0
  1173. data/test/regression/xlsx_files/chart_axis07.xlsx +0 -0
  1174. data/test/regression/xlsx_files/chart_axis08.xlsx +0 -0
  1175. data/test/regression/xlsx_files/chart_axis09.xlsx +0 -0
  1176. data/test/regression/xlsx_files/chart_axis10.xlsx +0 -0
  1177. data/test/regression/xlsx_files/chart_axis11.xlsx +0 -0
  1178. data/test/regression/xlsx_files/chart_axis12.xlsx +0 -0
  1179. data/test/regression/xlsx_files/chart_axis13.xlsx +0 -0
  1180. data/test/regression/xlsx_files/chart_axis14.xlsx +0 -0
  1181. data/test/regression/xlsx_files/chart_axis15.xlsx +0 -0
  1182. data/test/regression/xlsx_files/chart_axis16.xlsx +0 -0
  1183. data/test/regression/xlsx_files/chart_axis17.xlsx +0 -0
  1184. data/test/regression/xlsx_files/chart_axis18.xlsx +0 -0
  1185. data/test/regression/xlsx_files/chart_axis19.xlsx +0 -0
  1186. data/test/regression/xlsx_files/chart_axis20.xlsx +0 -0
  1187. data/test/regression/xlsx_files/chart_axis21.xlsx +0 -0
  1188. data/test/regression/xlsx_files/chart_axis22.xlsx +0 -0
  1189. data/test/regression/xlsx_files/chart_axis23.xlsx +0 -0
  1190. data/test/regression/xlsx_files/chart_axis24.xlsx +0 -0
  1191. data/test/regression/xlsx_files/chart_axis25.xlsx +0 -0
  1192. data/test/regression/xlsx_files/chart_axis26.xlsx +0 -0
  1193. data/test/regression/xlsx_files/chart_axis27.xlsx +0 -0
  1194. data/test/regression/xlsx_files/chart_axis28.xlsx +0 -0
  1195. data/test/regression/xlsx_files/chart_axis29.xlsx +0 -0
  1196. data/test/regression/xlsx_files/chart_axis30.xlsx +0 -0
  1197. data/test/regression/xlsx_files/chart_axis31.xlsx +0 -0
  1198. data/test/regression/xlsx_files/chart_axis32.xlsx +0 -0
  1199. data/test/regression/xlsx_files/chart_axis33.xlsx +0 -0
  1200. data/test/regression/xlsx_files/chart_axis34.xlsx +0 -0
  1201. data/test/regression/xlsx_files/chart_axis35.xlsx +0 -0
  1202. data/test/regression/xlsx_files/chart_axis36.xlsx +0 -0
  1203. data/test/regression/xlsx_files/chart_axis37.xlsx +0 -0
  1204. data/test/regression/xlsx_files/chart_axis38.xlsx +0 -0
  1205. data/test/regression/xlsx_files/chart_axis39.xlsx +0 -0
  1206. data/test/regression/xlsx_files/chart_axis40.xlsx +0 -0
  1207. data/test/regression/xlsx_files/chart_axis41.xlsx +0 -0
  1208. data/test/regression/xlsx_files/chart_axis42.xlsx +0 -0
  1209. data/test/regression/xlsx_files/chart_axis43.xlsx +0 -0
  1210. data/test/regression/xlsx_files/chart_axis44.xlsx +0 -0
  1211. data/test/regression/xlsx_files/chart_axis45.xlsx +0 -0
  1212. data/test/regression/xlsx_files/chart_axis46.xlsx +0 -0
  1213. data/test/regression/xlsx_files/chart_axis47.xlsx +0 -0
  1214. data/test/regression/xlsx_files/chart_axis48.xlsx +0 -0
  1215. data/test/regression/xlsx_files/chart_bar01.xlsx +0 -0
  1216. data/test/regression/xlsx_files/chart_bar02.xlsx +0 -0
  1217. data/test/regression/xlsx_files/chart_bar03.xlsx +0 -0
  1218. data/test/regression/xlsx_files/chart_bar04.xlsx +0 -0
  1219. data/test/regression/xlsx_files/chart_bar05.xlsx +0 -0
  1220. data/test/regression/xlsx_files/chart_bar06.xlsx +0 -0
  1221. data/test/regression/xlsx_files/chart_bar07.xlsx +0 -0
  1222. data/test/regression/xlsx_files/chart_bar08.xlsx +0 -0
  1223. data/test/regression/xlsx_files/chart_bar09.xlsx +0 -0
  1224. data/test/regression/xlsx_files/chart_bar10.xlsx +0 -0
  1225. data/test/regression/xlsx_files/chart_bar11.xlsx +0 -0
  1226. data/test/regression/xlsx_files/chart_bar12.xlsx +0 -0
  1227. data/test/regression/xlsx_files/chart_bar13.xlsx +0 -0
  1228. data/test/regression/xlsx_files/chart_bar14.xlsx +0 -0
  1229. data/test/regression/xlsx_files/chart_bar15.xlsx +0 -0
  1230. data/test/regression/xlsx_files/chart_bar16.xlsx +0 -0
  1231. data/test/regression/xlsx_files/chart_bar17.xlsx +0 -0
  1232. data/test/regression/xlsx_files/chart_bar18.xlsx +0 -0
  1233. data/test/regression/xlsx_files/chart_bar19.xlsx +0 -0
  1234. data/test/regression/xlsx_files/chart_bar20.xlsx +0 -0
  1235. data/test/regression/xlsx_files/chart_bar21.xlsx +0 -0
  1236. data/test/regression/xlsx_files/chart_bar22.xlsx +0 -0
  1237. data/test/regression/xlsx_files/chart_bar23.xlsx +0 -0
  1238. data/test/regression/xlsx_files/chart_bar24.xlsx +0 -0
  1239. data/test/regression/xlsx_files/chart_blank01.xlsx +0 -0
  1240. data/test/regression/xlsx_files/chart_blank02.xlsx +0 -0
  1241. data/test/regression/xlsx_files/chart_blank03.xlsx +0 -0
  1242. data/test/regression/xlsx_files/chart_blank04.xlsx +0 -0
  1243. data/test/regression/xlsx_files/chart_blank05.xlsx +0 -0
  1244. data/test/regression/xlsx_files/chart_blank06.xlsx +0 -0
  1245. data/test/regression/xlsx_files/chart_chartarea01.xlsx +0 -0
  1246. data/test/regression/xlsx_files/chart_chartarea03.xlsx +0 -0
  1247. data/test/regression/xlsx_files/chart_chartarea04.xlsx +0 -0
  1248. data/test/regression/xlsx_files/chart_chartarea05.xlsx +0 -0
  1249. data/test/regression/xlsx_files/chart_chartarea06.xlsx +0 -0
  1250. data/test/regression/xlsx_files/chart_clustered01.xlsx +0 -0
  1251. data/test/regression/xlsx_files/chart_column01.xlsx +0 -0
  1252. data/test/regression/xlsx_files/chart_column02.xlsx +0 -0
  1253. data/test/regression/xlsx_files/chart_column03.xlsx +0 -0
  1254. data/test/regression/xlsx_files/chart_column04.xlsx +0 -0
  1255. data/test/regression/xlsx_files/chart_column05.xlsx +0 -0
  1256. data/test/regression/xlsx_files/chart_column06.xlsx +0 -0
  1257. data/test/regression/xlsx_files/chart_column07.xlsx +0 -0
  1258. data/test/regression/xlsx_files/chart_column08.xlsx +0 -0
  1259. data/test/regression/xlsx_files/chart_column09.xlsx +0 -0
  1260. data/test/regression/xlsx_files/chart_column10.xlsx +0 -0
  1261. data/test/regression/xlsx_files/chart_column11.xlsx +0 -0
  1262. data/test/regression/xlsx_files/chart_column12.xlsx +0 -0
  1263. data/test/regression/xlsx_files/chart_combined01.xlsx +0 -0
  1264. data/test/regression/xlsx_files/chart_combined02.xlsx +0 -0
  1265. data/test/regression/xlsx_files/chart_combined03.xlsx +0 -0
  1266. data/test/regression/xlsx_files/chart_combined04.xlsx +0 -0
  1267. data/test/regression/xlsx_files/chart_combined05.xlsx +0 -0
  1268. data/test/regression/xlsx_files/chart_combined06.xlsx +0 -0
  1269. data/test/regression/xlsx_files/chart_combined07.xlsx +0 -0
  1270. data/test/regression/xlsx_files/chart_combined08.xlsx +0 -0
  1271. data/test/regression/xlsx_files/chart_combined09.xlsx +0 -0
  1272. data/test/regression/xlsx_files/chart_combined10.xlsx +0 -0
  1273. data/test/regression/xlsx_files/chart_combined11.xlsx +0 -0
  1274. data/test/regression/xlsx_files/chart_crossing01.xlsx +0 -0
  1275. data/test/regression/xlsx_files/chart_crossing02.xlsx +0 -0
  1276. data/test/regression/xlsx_files/chart_crossing03.xlsx +0 -0
  1277. data/test/regression/xlsx_files/chart_crossing04.xlsx +0 -0
  1278. data/test/regression/xlsx_files/chart_crossing05.xlsx +0 -0
  1279. data/test/regression/xlsx_files/chart_crossing06.xlsx +0 -0
  1280. data/test/regression/xlsx_files/chart_data_labels01.xlsx +0 -0
  1281. data/test/regression/xlsx_files/chart_data_labels02.xlsx +0 -0
  1282. data/test/regression/xlsx_files/chart_data_labels03.xlsx +0 -0
  1283. data/test/regression/xlsx_files/chart_data_labels04.xlsx +0 -0
  1284. data/test/regression/xlsx_files/chart_data_labels05.xlsx +0 -0
  1285. data/test/regression/xlsx_files/chart_data_labels06.xlsx +0 -0
  1286. data/test/regression/xlsx_files/chart_data_labels07.xlsx +0 -0
  1287. data/test/regression/xlsx_files/chart_data_labels08.xlsx +0 -0
  1288. data/test/regression/xlsx_files/chart_data_labels09.xlsx +0 -0
  1289. data/test/regression/xlsx_files/chart_data_labels10.xlsx +0 -0
  1290. data/test/regression/xlsx_files/chart_data_labels11.xlsx +0 -0
  1291. data/test/regression/xlsx_files/chart_data_labels12.xlsx +0 -0
  1292. data/test/regression/xlsx_files/chart_data_labels13.xlsx +0 -0
  1293. data/test/regression/xlsx_files/chart_data_labels14.xlsx +0 -0
  1294. data/test/regression/xlsx_files/chart_data_labels15.xlsx +0 -0
  1295. data/test/regression/xlsx_files/chart_data_labels16.xlsx +0 -0
  1296. data/test/regression/xlsx_files/chart_data_labels17.xlsx +0 -0
  1297. data/test/regression/xlsx_files/chart_data_labels18.xlsx +0 -0
  1298. data/test/regression/xlsx_files/chart_data_labels19.xlsx +0 -0
  1299. data/test/regression/xlsx_files/chart_data_labels20.xlsx +0 -0
  1300. data/test/regression/xlsx_files/chart_data_labels21.xlsx +0 -0
  1301. data/test/regression/xlsx_files/chart_data_labels22.xlsx +0 -0
  1302. data/test/regression/xlsx_files/chart_data_labels23.xlsx +0 -0
  1303. data/test/regression/xlsx_files/chart_data_labels24.xlsx +0 -0
  1304. data/test/regression/xlsx_files/chart_data_labels25.xlsx +0 -0
  1305. data/test/regression/xlsx_files/chart_data_labels26.xlsx +0 -0
  1306. data/test/regression/xlsx_files/chart_data_labels27.xlsx +0 -0
  1307. data/test/regression/xlsx_files/chart_data_labels28.xlsx +0 -0
  1308. data/test/regression/xlsx_files/chart_data_labels29.xlsx +0 -0
  1309. data/test/regression/xlsx_files/chart_data_labels30.xlsx +0 -0
  1310. data/test/regression/xlsx_files/chart_data_labels31.xlsx +0 -0
  1311. data/test/regression/xlsx_files/chart_data_labels32.xlsx +0 -0
  1312. data/test/regression/xlsx_files/chart_data_labels33.xlsx +0 -0
  1313. data/test/regression/xlsx_files/chart_data_labels34.xlsx +0 -0
  1314. data/test/regression/xlsx_files/chart_data_labels35.xlsx +0 -0
  1315. data/test/regression/xlsx_files/chart_data_labels36.xlsx +0 -0
  1316. data/test/regression/xlsx_files/chart_data_labels37.xlsx +0 -0
  1317. data/test/regression/xlsx_files/chart_data_labels38.xlsx +0 -0
  1318. data/test/regression/xlsx_files/chart_data_labels39.xlsx +0 -0
  1319. data/test/regression/xlsx_files/chart_data_labels40.xlsx +0 -0
  1320. data/test/regression/xlsx_files/chart_data_labels41.xlsx +0 -0
  1321. data/test/regression/xlsx_files/chart_data_labels42.xlsx +0 -0
  1322. data/test/regression/xlsx_files/chart_data_labels43.xlsx +0 -0
  1323. data/test/regression/xlsx_files/chart_data_labels44.xlsx +0 -0
  1324. data/test/regression/xlsx_files/chart_data_labels45.xlsx +0 -0
  1325. data/test/regression/xlsx_files/chart_data_labels46.xlsx +0 -0
  1326. data/test/regression/xlsx_files/chart_data_labels47.xlsx +0 -0
  1327. data/test/regression/xlsx_files/chart_data_labels48.xlsx +0 -0
  1328. data/test/regression/xlsx_files/chart_data_labels49.xlsx +0 -0
  1329. data/test/regression/xlsx_files/chart_data_labels50.xlsx +0 -0
  1330. data/test/regression/xlsx_files/chart_date01.xlsx +0 -0
  1331. data/test/regression/xlsx_files/chart_date02.xlsx +0 -0
  1332. data/test/regression/xlsx_files/chart_date03.xlsx +0 -0
  1333. data/test/regression/xlsx_files/chart_date04.xlsx +0 -0
  1334. data/test/regression/xlsx_files/chart_date05.xlsx +0 -0
  1335. data/test/regression/xlsx_files/chart_display_units01.xlsx +0 -0
  1336. data/test/regression/xlsx_files/chart_display_units02.xlsx +0 -0
  1337. data/test/regression/xlsx_files/chart_display_units03.xlsx +0 -0
  1338. data/test/regression/xlsx_files/chart_display_units04.xlsx +0 -0
  1339. data/test/regression/xlsx_files/chart_display_units05.xlsx +0 -0
  1340. data/test/regression/xlsx_files/chart_display_units06.xlsx +0 -0
  1341. data/test/regression/xlsx_files/chart_display_units07.xlsx +0 -0
  1342. data/test/regression/xlsx_files/chart_display_units08.xlsx +0 -0
  1343. data/test/regression/xlsx_files/chart_display_units09.xlsx +0 -0
  1344. data/test/regression/xlsx_files/chart_display_units10.xlsx +0 -0
  1345. data/test/regression/xlsx_files/chart_display_units11.xlsx +0 -0
  1346. data/test/regression/xlsx_files/chart_display_units12.xlsx +0 -0
  1347. data/test/regression/xlsx_files/chart_doughnut01.xlsx +0 -0
  1348. data/test/regression/xlsx_files/chart_doughnut02.xlsx +0 -0
  1349. data/test/regression/xlsx_files/chart_doughnut03.xlsx +0 -0
  1350. data/test/regression/xlsx_files/chart_doughnut04.xlsx +0 -0
  1351. data/test/regression/xlsx_files/chart_doughnut05.xlsx +0 -0
  1352. data/test/regression/xlsx_files/chart_doughnut06.xlsx +0 -0
  1353. data/test/regression/xlsx_files/chart_doughnut07.xlsx +0 -0
  1354. data/test/regression/xlsx_files/chart_drop_lines01.xlsx +0 -0
  1355. data/test/regression/xlsx_files/chart_drop_lines02.xlsx +0 -0
  1356. data/test/regression/xlsx_files/chart_drop_lines03.xlsx +0 -0
  1357. data/test/regression/xlsx_files/chart_drop_lines04.xlsx +0 -0
  1358. data/test/regression/xlsx_files/chart_errorbars01.xlsx +0 -0
  1359. data/test/regression/xlsx_files/chart_errorbars02.xlsx +0 -0
  1360. data/test/regression/xlsx_files/chart_errorbars03.xlsx +0 -0
  1361. data/test/regression/xlsx_files/chart_errorbars04.xlsx +0 -0
  1362. data/test/regression/xlsx_files/chart_errorbars05.xlsx +0 -0
  1363. data/test/regression/xlsx_files/chart_errorbars06.xlsx +0 -0
  1364. data/test/regression/xlsx_files/chart_errorbars07.xlsx +0 -0
  1365. data/test/regression/xlsx_files/chart_errorbars08.xlsx +0 -0
  1366. data/test/regression/xlsx_files/chart_errorbars09.xlsx +0 -0
  1367. data/test/regression/xlsx_files/chart_errorbars10.xlsx +0 -0
  1368. data/test/regression/xlsx_files/chart_font01.xlsx +0 -0
  1369. data/test/regression/xlsx_files/chart_font02.xlsx +0 -0
  1370. data/test/regression/xlsx_files/chart_font03.xlsx +0 -0
  1371. data/test/regression/xlsx_files/chart_font04.xlsx +0 -0
  1372. data/test/regression/xlsx_files/chart_font05.xlsx +0 -0
  1373. data/test/regression/xlsx_files/chart_font06.xlsx +0 -0
  1374. data/test/regression/xlsx_files/chart_font07.xlsx +0 -0
  1375. data/test/regression/xlsx_files/chart_font08.xlsx +0 -0
  1376. data/test/regression/xlsx_files/chart_font09.xlsx +0 -0
  1377. data/test/regression/xlsx_files/chart_format01.xlsx +0 -0
  1378. data/test/regression/xlsx_files/chart_format02.xlsx +0 -0
  1379. data/test/regression/xlsx_files/chart_format03.xlsx +0 -0
  1380. data/test/regression/xlsx_files/chart_format04.xlsx +0 -0
  1381. data/test/regression/xlsx_files/chart_format05.xlsx +0 -0
  1382. data/test/regression/xlsx_files/chart_format06.xlsx +0 -0
  1383. data/test/regression/xlsx_files/chart_format07.xlsx +0 -0
  1384. data/test/regression/xlsx_files/chart_format08.xlsx +0 -0
  1385. data/test/regression/xlsx_files/chart_format09.xlsx +0 -0
  1386. data/test/regression/xlsx_files/chart_format10.xlsx +0 -0
  1387. data/test/regression/xlsx_files/chart_format11.xlsx +0 -0
  1388. data/test/regression/xlsx_files/chart_format12.xlsx +0 -0
  1389. data/test/regression/xlsx_files/chart_format13.xlsx +0 -0
  1390. data/test/regression/xlsx_files/chart_format14.xlsx +0 -0
  1391. data/test/regression/xlsx_files/chart_format15.xlsx +0 -0
  1392. data/test/regression/xlsx_files/chart_format16.xlsx +0 -0
  1393. data/test/regression/xlsx_files/chart_format17.xlsx +0 -0
  1394. data/test/regression/xlsx_files/chart_format18.xlsx +0 -0
  1395. data/test/regression/xlsx_files/chart_format19.xlsx +0 -0
  1396. data/test/regression/xlsx_files/chart_format20.xlsx +0 -0
  1397. data/test/regression/xlsx_files/chart_format21.xlsx +0 -0
  1398. data/test/regression/xlsx_files/chart_format22.xlsx +0 -0
  1399. data/test/regression/xlsx_files/chart_format23.xlsx +0 -0
  1400. data/test/regression/xlsx_files/chart_format24.xlsx +0 -0
  1401. data/test/regression/xlsx_files/chart_format25.xlsx +0 -0
  1402. data/test/regression/xlsx_files/chart_format26.xlsx +0 -0
  1403. data/test/regression/xlsx_files/chart_format27.xlsx +0 -0
  1404. data/test/regression/xlsx_files/chart_format28.xlsx +0 -0
  1405. data/test/regression/xlsx_files/chart_format29.xlsx +0 -0
  1406. data/test/regression/xlsx_files/chart_format30.xlsx +0 -0
  1407. data/test/regression/xlsx_files/chart_format31.xlsx +0 -0
  1408. data/test/regression/xlsx_files/chart_gap01.xlsx +0 -0
  1409. data/test/regression/xlsx_files/chart_gap02.xlsx +0 -0
  1410. data/test/regression/xlsx_files/chart_gap03.xlsx +0 -0
  1411. data/test/regression/xlsx_files/chart_gap04.xlsx +0 -0
  1412. data/test/regression/xlsx_files/chart_gap05.xlsx +0 -0
  1413. data/test/regression/xlsx_files/chart_gradient01.xlsx +0 -0
  1414. data/test/regression/xlsx_files/chart_gradient02.xlsx +0 -0
  1415. data/test/regression/xlsx_files/chart_gradient03.xlsx +0 -0
  1416. data/test/regression/xlsx_files/chart_gradient04.xlsx +0 -0
  1417. data/test/regression/xlsx_files/chart_gradient05.xlsx +0 -0
  1418. data/test/regression/xlsx_files/chart_gradient06.xlsx +0 -0
  1419. data/test/regression/xlsx_files/chart_gradient07.xlsx +0 -0
  1420. data/test/regression/xlsx_files/chart_gradient08.xlsx +0 -0
  1421. data/test/regression/xlsx_files/chart_gradient09.xlsx +0 -0
  1422. data/test/regression/xlsx_files/chart_gradient10.xlsx +0 -0
  1423. data/test/regression/xlsx_files/chart_gradient11.xlsx +0 -0
  1424. data/test/regression/xlsx_files/chart_gradient12.xlsx +0 -0
  1425. data/test/regression/xlsx_files/chart_gradient13.xlsx +0 -0
  1426. data/test/regression/xlsx_files/chart_gridlines01.xlsx +0 -0
  1427. data/test/regression/xlsx_files/chart_gridlines02.xlsx +0 -0
  1428. data/test/regression/xlsx_files/chart_gridlines03.xlsx +0 -0
  1429. data/test/regression/xlsx_files/chart_gridlines04.xlsx +0 -0
  1430. data/test/regression/xlsx_files/chart_gridlines05.xlsx +0 -0
  1431. data/test/regression/xlsx_files/chart_gridlines06.xlsx +0 -0
  1432. data/test/regression/xlsx_files/chart_gridlines07.xlsx +0 -0
  1433. data/test/regression/xlsx_files/chart_gridlines08.xlsx +0 -0
  1434. data/test/regression/xlsx_files/chart_gridlines09.xlsx +0 -0
  1435. data/test/regression/xlsx_files/chart_layout01.xlsx +0 -0
  1436. data/test/regression/xlsx_files/chart_layout02.xlsx +0 -0
  1437. data/test/regression/xlsx_files/chart_layout03.xlsx +0 -0
  1438. data/test/regression/xlsx_files/chart_layout04.xlsx +0 -0
  1439. data/test/regression/xlsx_files/chart_layout05.xlsx +0 -0
  1440. data/test/regression/xlsx_files/chart_layout06.xlsx +0 -0
  1441. data/test/regression/xlsx_files/chart_layout07.xlsx +0 -0
  1442. data/test/regression/xlsx_files/chart_layout08.xlsx +0 -0
  1443. data/test/regression/xlsx_files/chart_legend01.xlsx +0 -0
  1444. data/test/regression/xlsx_files/chart_legend03.xlsx +0 -0
  1445. data/test/regression/xlsx_files/chart_legend04.xlsx +0 -0
  1446. data/test/regression/xlsx_files/chart_legend05.xlsx +0 -0
  1447. data/test/regression/xlsx_files/chart_legend06.xlsx +0 -0
  1448. data/test/regression/xlsx_files/chart_legend07.xlsx +0 -0
  1449. data/test/regression/xlsx_files/chart_line01.xlsx +0 -0
  1450. data/test/regression/xlsx_files/chart_line02.xlsx +0 -0
  1451. data/test/regression/xlsx_files/chart_line03.xlsx +0 -0
  1452. data/test/regression/xlsx_files/chart_line04.xlsx +0 -0
  1453. data/test/regression/xlsx_files/chart_line05.xlsx +0 -0
  1454. data/test/regression/xlsx_files/chart_line06.xlsx +0 -0
  1455. data/test/regression/xlsx_files/chart_name01.xlsx +0 -0
  1456. data/test/regression/xlsx_files/chart_name02.xlsx +0 -0
  1457. data/test/regression/xlsx_files/chart_name03.xlsx +0 -0
  1458. data/test/regression/xlsx_files/chart_order01.xlsx +0 -0
  1459. data/test/regression/xlsx_files/chart_order03.xlsx +0 -0
  1460. data/test/regression/xlsx_files/chart_pattern01.xlsx +0 -0
  1461. data/test/regression/xlsx_files/chart_pattern02.xlsx +0 -0
  1462. data/test/regression/xlsx_files/chart_pattern03.xlsx +0 -0
  1463. data/test/regression/xlsx_files/chart_pattern04.xlsx +0 -0
  1464. data/test/regression/xlsx_files/chart_pattern05.xlsx +0 -0
  1465. data/test/regression/xlsx_files/chart_pattern06.xlsx +0 -0
  1466. data/test/regression/xlsx_files/chart_pattern07.xlsx +0 -0
  1467. data/test/regression/xlsx_files/chart_pattern08.xlsx +0 -0
  1468. data/test/regression/xlsx_files/chart_pattern09.xlsx +0 -0
  1469. data/test/regression/xlsx_files/chart_pattern10.xlsx +0 -0
  1470. data/test/regression/xlsx_files/chart_pie01.xlsx +0 -0
  1471. data/test/regression/xlsx_files/chart_pie02.xlsx +0 -0
  1472. data/test/regression/xlsx_files/chart_pie03.xlsx +0 -0
  1473. data/test/regression/xlsx_files/chart_pie04.xlsx +0 -0
  1474. data/test/regression/xlsx_files/chart_pie05.xlsx +0 -0
  1475. data/test/regression/xlsx_files/chart_points01.xlsx +0 -0
  1476. data/test/regression/xlsx_files/chart_points02.xlsx +0 -0
  1477. data/test/regression/xlsx_files/chart_points03.xlsx +0 -0
  1478. data/test/regression/xlsx_files/chart_points04.xlsx +0 -0
  1479. data/test/regression/xlsx_files/chart_points05.xlsx +0 -0
  1480. data/test/regression/xlsx_files/chart_points06.xlsx +0 -0
  1481. data/test/regression/xlsx_files/chart_radar01.xlsx +0 -0
  1482. data/test/regression/xlsx_files/chart_radar02.xlsx +0 -0
  1483. data/test/regression/xlsx_files/chart_radar03.xlsx +0 -0
  1484. data/test/regression/xlsx_files/chart_scatter01.xlsx +0 -0
  1485. data/test/regression/xlsx_files/chart_scatter02.xlsx +0 -0
  1486. data/test/regression/xlsx_files/chart_scatter03.xlsx +0 -0
  1487. data/test/regression/xlsx_files/chart_scatter04.xlsx +0 -0
  1488. data/test/regression/xlsx_files/chart_scatter05.xlsx +0 -0
  1489. data/test/regression/xlsx_files/chart_scatter06.xlsx +0 -0
  1490. data/test/regression/xlsx_files/chart_scatter07.xlsx +0 -0
  1491. data/test/regression/xlsx_files/chart_scatter08.xlsx +0 -0
  1492. data/test/regression/xlsx_files/chart_scatter09.xlsx +0 -0
  1493. data/test/regression/xlsx_files/chart_scatter10.xlsx +0 -0
  1494. data/test/regression/xlsx_files/chart_scatter11.xlsx +0 -0
  1495. data/test/regression/xlsx_files/chart_scatter12.xlsx +0 -0
  1496. data/test/regression/xlsx_files/chart_scatter14.xlsx +0 -0
  1497. data/test/regression/xlsx_files/chart_scatter15.xlsx +0 -0
  1498. data/test/regression/xlsx_files/chart_size01.xlsx +0 -0
  1499. data/test/regression/xlsx_files/chart_size04.xlsx +0 -0
  1500. data/test/regression/xlsx_files/chart_sparse01.xlsx +0 -0
  1501. data/test/regression/xlsx_files/chart_stock01.xlsx +0 -0
  1502. data/test/regression/xlsx_files/chart_stock02.xlsx +0 -0
  1503. data/test/regression/xlsx_files/chart_str01.xlsx +0 -0
  1504. data/test/regression/xlsx_files/chart_str02.xlsx +0 -0
  1505. data/test/regression/xlsx_files/chart_table01.xlsx +0 -0
  1506. data/test/regression/xlsx_files/chart_table02.xlsx +0 -0
  1507. data/test/regression/xlsx_files/chart_table03.xlsx +0 -0
  1508. data/test/regression/xlsx_files/chart_title01.xlsx +0 -0
  1509. data/test/regression/xlsx_files/chart_title02.xlsx +0 -0
  1510. data/test/regression/xlsx_files/chartsheet01.xlsx +0 -0
  1511. data/test/regression/xlsx_files/chartsheet02.xlsx +0 -0
  1512. data/test/regression/xlsx_files/chartsheet03.xlsx +0 -0
  1513. data/test/regression/xlsx_files/chartsheet04.xlsx +0 -0
  1514. data/test/regression/xlsx_files/chartsheet05.xlsx +0 -0
  1515. data/test/regression/xlsx_files/chartsheet06.xlsx +0 -0
  1516. data/test/regression/xlsx_files/chartsheet07.xlsx +0 -0
  1517. data/test/regression/xlsx_files/chartsheet08.xlsx +0 -0
  1518. data/test/regression/xlsx_files/chartsheet09.xlsx +0 -0
  1519. data/test/regression/xlsx_files/comment01.xlsx +0 -0
  1520. data/test/regression/xlsx_files/comment02.xlsx +0 -0
  1521. data/test/regression/xlsx_files/comment03.xlsx +0 -0
  1522. data/test/regression/xlsx_files/comment04.xlsx +0 -0
  1523. data/test/regression/xlsx_files/comment05.xlsx +0 -0
  1524. data/test/regression/xlsx_files/comment06.xlsx +0 -0
  1525. data/test/regression/xlsx_files/comment07.xlsx +0 -0
  1526. data/test/regression/xlsx_files/comment08.xlsx +0 -0
  1527. data/test/regression/xlsx_files/comment09.xlsx +0 -0
  1528. data/test/regression/xlsx_files/comment10.xlsx +0 -0
  1529. data/test/regression/xlsx_files/comment11.xlsx +0 -0
  1530. data/test/regression/xlsx_files/comment12.xlsx +0 -0
  1531. data/test/regression/xlsx_files/comment13.xlsx +0 -0
  1532. data/test/regression/xlsx_files/comment14.xlsx +0 -0
  1533. data/test/regression/xlsx_files/comment15.xlsx +0 -0
  1534. data/test/regression/xlsx_files/comment16.xlsx +0 -0
  1535. data/test/regression/xlsx_files/cond_format01.xlsx +0 -0
  1536. data/test/regression/xlsx_files/cond_format02.xlsx +0 -0
  1537. data/test/regression/xlsx_files/cond_format03.xlsx +0 -0
  1538. data/test/regression/xlsx_files/cond_format04.xlsx +0 -0
  1539. data/test/regression/xlsx_files/cond_format05.xlsx +0 -0
  1540. data/test/regression/xlsx_files/cond_format06.xlsx +0 -0
  1541. data/test/regression/xlsx_files/cond_format07.xlsx +0 -0
  1542. data/test/regression/xlsx_files/cond_format08.xlsx +0 -0
  1543. data/test/regression/xlsx_files/cond_format10.xlsx +0 -0
  1544. data/test/regression/xlsx_files/cond_format11.xlsx +0 -0
  1545. data/test/regression/xlsx_files/cond_format12.xlsx +0 -0
  1546. data/test/regression/xlsx_files/cond_format14.xlsx +0 -0
  1547. data/test/regression/xlsx_files/cond_format15.xlsx +0 -0
  1548. data/test/regression/xlsx_files/cond_format16.xlsx +0 -0
  1549. data/test/regression/xlsx_files/cond_format17.xlsx +0 -0
  1550. data/test/regression/xlsx_files/cond_format18.xlsx +0 -0
  1551. data/test/regression/xlsx_files/cond_format19.xlsx +0 -0
  1552. data/test/regression/xlsx_files/cond_format20.xlsx +0 -0
  1553. data/test/regression/xlsx_files/custom_colors01.xlsx +0 -0
  1554. data/test/regression/xlsx_files/data_validation01.xlsx +0 -0
  1555. data/test/regression/xlsx_files/data_validation02.xlsx +0 -0
  1556. data/test/regression/xlsx_files/data_validation03.xlsx +0 -0
  1557. data/test/regression/xlsx_files/data_validation08.xlsx +0 -0
  1558. data/test/regression/xlsx_files/date_1904_01.xlsx +0 -0
  1559. data/test/regression/xlsx_files/date_1904_02.xlsx +0 -0
  1560. data/test/regression/xlsx_files/date_examples01.xlsx +0 -0
  1561. data/test/regression/xlsx_files/default_format01.xlsx +0 -0
  1562. data/test/regression/xlsx_files/default_row01.xlsx +0 -0
  1563. data/test/regression/xlsx_files/default_row02.xlsx +0 -0
  1564. data/test/regression/xlsx_files/default_row03.xlsx +0 -0
  1565. data/test/regression/xlsx_files/default_row04.xlsx +0 -0
  1566. data/test/regression/xlsx_files/default_row05.xlsx +0 -0
  1567. data/test/regression/xlsx_files/defined_name01.xlsx +0 -0
  1568. data/test/regression/xlsx_files/defined_name02.xlsx +0 -0
  1569. data/test/regression/xlsx_files/defined_name03.xlsx +0 -0
  1570. data/test/regression/xlsx_files/defined_name04.xlsx +0 -0
  1571. data/test/regression/xlsx_files/dynamic_array01.xlsx +0 -0
  1572. data/test/regression/xlsx_files/escapes01.xlsx +0 -0
  1573. data/test/regression/xlsx_files/escapes02.xlsx +0 -0
  1574. data/test/regression/xlsx_files/escapes03.xlsx +0 -0
  1575. data/test/regression/xlsx_files/escapes04.xlsx +0 -0
  1576. data/test/regression/xlsx_files/escapes05.xlsx +0 -0
  1577. data/test/regression/xlsx_files/escapes06.xlsx +0 -0
  1578. data/test/regression/xlsx_files/escapes07.xlsx +0 -0
  1579. data/test/regression/xlsx_files/escapes08.xlsx +0 -0
  1580. data/test/regression/xlsx_files/excel2003_style01.xlsx +0 -0
  1581. data/test/regression/xlsx_files/excel2003_style02.xlsx +0 -0
  1582. data/test/regression/xlsx_files/excel2003_style03.xlsx +0 -0
  1583. data/test/regression/xlsx_files/excel2003_style04.xlsx +0 -0
  1584. data/test/regression/xlsx_files/excel2003_style05.xlsx +0 -0
  1585. data/test/regression/xlsx_files/excel2003_style06.xlsx +0 -0
  1586. data/test/regression/xlsx_files/excel2003_style07.xlsx +0 -0
  1587. data/test/regression/xlsx_files/excel2003_style08.xlsx +0 -0
  1588. data/test/regression/xlsx_files/filehandle01.xlsx +0 -0
  1589. data/test/regression/xlsx_files/firstsheet01.xlsx +0 -0
  1590. data/test/regression/xlsx_files/fit_to_pages01.xlsx +0 -0
  1591. data/test/regression/xlsx_files/fit_to_pages02.xlsx +0 -0
  1592. data/test/regression/xlsx_files/fit_to_pages03.xlsx +0 -0
  1593. data/test/regression/xlsx_files/fit_to_pages04.xlsx +0 -0
  1594. data/test/regression/xlsx_files/fit_to_pages05.xlsx +0 -0
  1595. data/test/regression/xlsx_files/format01.xlsx +0 -0
  1596. data/test/regression/xlsx_files/format02.xlsx +0 -0
  1597. data/test/regression/xlsx_files/format03.xlsx +0 -0
  1598. data/test/regression/xlsx_files/format04.xlsx +0 -0
  1599. data/test/regression/xlsx_files/format05.xlsx +0 -0
  1600. data/test/regression/xlsx_files/format11.xlsx +0 -0
  1601. data/test/regression/xlsx_files/format12.xlsx +0 -0
  1602. data/test/regression/xlsx_files/format13.xlsx +0 -0
  1603. data/test/regression/xlsx_files/format14.xlsx +0 -0
  1604. data/test/regression/xlsx_files/format15.xlsx +0 -0
  1605. data/test/regression/xlsx_files/format16.xlsx +0 -0
  1606. data/test/regression/xlsx_files/format17.xlsx +0 -0
  1607. data/test/regression/xlsx_files/formula_results01.xlsx +0 -0
  1608. data/test/regression/xlsx_files/gridlines01.xlsx +0 -0
  1609. data/test/regression/xlsx_files/header01.xlsx +0 -0
  1610. data/test/regression/xlsx_files/header02.xlsx +0 -0
  1611. data/test/regression/xlsx_files/header03.xlsx +0 -0
  1612. data/test/regression/xlsx_files/header04.xlsx +0 -0
  1613. data/test/regression/xlsx_files/header_image01.xlsx +0 -0
  1614. data/test/regression/xlsx_files/header_image02.xlsx +0 -0
  1615. data/test/regression/xlsx_files/header_image03.xlsx +0 -0
  1616. data/test/regression/xlsx_files/header_image04.xlsx +0 -0
  1617. data/test/regression/xlsx_files/header_image05.xlsx +0 -0
  1618. data/test/regression/xlsx_files/header_image06.xlsx +0 -0
  1619. data/test/regression/xlsx_files/header_image07.xlsx +0 -0
  1620. data/test/regression/xlsx_files/header_image08.xlsx +0 -0
  1621. data/test/regression/xlsx_files/header_image09.xlsx +0 -0
  1622. data/test/regression/xlsx_files/header_image10.xlsx +0 -0
  1623. data/test/regression/xlsx_files/header_image11.xlsx +0 -0
  1624. data/test/regression/xlsx_files/header_image12.xlsx +0 -0
  1625. data/test/regression/xlsx_files/header_image13.xlsx +0 -0
  1626. data/test/regression/xlsx_files/header_image14.xlsx +0 -0
  1627. data/test/regression/xlsx_files/header_image15.xlsx +0 -0
  1628. data/test/regression/xlsx_files/header_image16.xlsx +0 -0
  1629. data/test/regression/xlsx_files/header_image17.xlsx +0 -0
  1630. data/test/regression/xlsx_files/header_image18.xlsx +0 -0
  1631. data/test/regression/xlsx_files/header_image19.xlsx +0 -0
  1632. data/test/regression/xlsx_files/hide01.xlsx +0 -0
  1633. data/test/regression/xlsx_files/hyperlink01.xlsx +0 -0
  1634. data/test/regression/xlsx_files/hyperlink02.xlsx +0 -0
  1635. data/test/regression/xlsx_files/hyperlink03.xlsx +0 -0
  1636. data/test/regression/xlsx_files/hyperlink04.xlsx +0 -0
  1637. data/test/regression/xlsx_files/hyperlink05.xlsx +0 -0
  1638. data/test/regression/xlsx_files/hyperlink06.xlsx +0 -0
  1639. data/test/regression/xlsx_files/hyperlink07.xlsx +0 -0
  1640. data/test/regression/xlsx_files/hyperlink08.xlsx +0 -0
  1641. data/test/regression/xlsx_files/hyperlink09.xlsx +0 -0
  1642. data/test/regression/xlsx_files/hyperlink10.xlsx +0 -0
  1643. data/test/regression/xlsx_files/hyperlink11.xlsx +0 -0
  1644. data/test/regression/xlsx_files/hyperlink12.xlsx +0 -0
  1645. data/test/regression/xlsx_files/hyperlink13.xlsx +0 -0
  1646. data/test/regression/xlsx_files/hyperlink14.xlsx +0 -0
  1647. data/test/regression/xlsx_files/hyperlink15.xlsx +0 -0
  1648. data/test/regression/xlsx_files/hyperlink16.xlsx +0 -0
  1649. data/test/regression/xlsx_files/hyperlink17.xlsx +0 -0
  1650. data/test/regression/xlsx_files/hyperlink18.xlsx +0 -0
  1651. data/test/regression/xlsx_files/hyperlink20.xlsx +0 -0
  1652. data/test/regression/xlsx_files/hyperlink21.xlsx +0 -0
  1653. data/test/regression/xlsx_files/hyperlink22.xlsx +0 -0
  1654. data/test/regression/xlsx_files/hyperlink23.xlsx +0 -0
  1655. data/test/regression/xlsx_files/hyperlink24.xlsx +0 -0
  1656. data/test/regression/xlsx_files/hyperlink25.xlsx +0 -0
  1657. data/test/regression/xlsx_files/hyperlink26.xlsx +0 -0
  1658. data/test/regression/xlsx_files/hyperlink27.xlsx +0 -0
  1659. data/test/regression/xlsx_files/hyperlink28.xlsx +0 -0
  1660. data/test/regression/xlsx_files/hyperlink29.xlsx +0 -0
  1661. data/test/regression/xlsx_files/hyperlink30.xlsx +0 -0
  1662. data/test/regression/xlsx_files/hyperlink31.xlsx +0 -0
  1663. data/test/regression/xlsx_files/hyperlink32.xlsx +0 -0
  1664. data/test/regression/xlsx_files/hyperlink33.xlsx +0 -0
  1665. data/test/regression/xlsx_files/hyperlink34.xlsx +0 -0
  1666. data/test/regression/xlsx_files/hyperlink35.xlsx +0 -0
  1667. data/test/regression/xlsx_files/hyperlink36.xlsx +0 -0
  1668. data/test/regression/xlsx_files/hyperlink37.xlsx +0 -0
  1669. data/test/regression/xlsx_files/hyperlink38.xlsx +0 -0
  1670. data/test/regression/xlsx_files/hyperlink39.xlsx +0 -0
  1671. data/test/regression/xlsx_files/hyperlink40.xlsx +0 -0
  1672. data/test/regression/xlsx_files/hyperlink41.xlsx +0 -0
  1673. data/test/regression/xlsx_files/hyperlink42.xlsx +0 -0
  1674. data/test/regression/xlsx_files/hyperlink43.xlsx +0 -0
  1675. data/test/regression/xlsx_files/hyperlink44.xlsx +0 -0
  1676. data/test/regression/xlsx_files/hyperlink45.xlsx +0 -0
  1677. data/test/regression/xlsx_files/hyperlink46.xlsx +0 -0
  1678. data/test/regression/xlsx_files/hyperlink47.xlsx +0 -0
  1679. data/test/regression/xlsx_files/hyperlink48.xlsx +0 -0
  1680. data/test/regression/xlsx_files/hyperlink49.xlsx +0 -0
  1681. data/test/regression/xlsx_files/hyperlink50.xlsx +0 -0
  1682. data/test/regression/xlsx_files/hyperlink51.xlsx +0 -0
  1683. data/test/regression/xlsx_files/ignore_error01.xlsx +0 -0
  1684. data/test/regression/xlsx_files/ignore_error02.xlsx +0 -0
  1685. data/test/regression/xlsx_files/ignore_error03.xlsx +0 -0
  1686. data/test/regression/xlsx_files/ignore_error04.xlsx +0 -0
  1687. data/test/regression/xlsx_files/ignore_error05.xlsx +0 -0
  1688. data/test/regression/xlsx_files/ignore_error06.xlsx +0 -0
  1689. data/test/regression/xlsx_files/image01.xlsx +0 -0
  1690. data/test/regression/xlsx_files/image02.xlsx +0 -0
  1691. data/test/regression/xlsx_files/image03.xlsx +0 -0
  1692. data/test/regression/xlsx_files/image04.xlsx +0 -0
  1693. data/test/regression/xlsx_files/image05.xlsx +0 -0
  1694. data/test/regression/xlsx_files/image06.xlsx +0 -0
  1695. data/test/regression/xlsx_files/image07.xlsx +0 -0
  1696. data/test/regression/xlsx_files/image08.xlsx +0 -0
  1697. data/test/regression/xlsx_files/image09.xlsx +0 -0
  1698. data/test/regression/xlsx_files/image10.xlsx +0 -0
  1699. data/test/regression/xlsx_files/image11.xlsx +0 -0
  1700. data/test/regression/xlsx_files/image12.xlsx +0 -0
  1701. data/test/regression/xlsx_files/image13.xlsx +0 -0
  1702. data/test/regression/xlsx_files/image14.xlsx +0 -0
  1703. data/test/regression/xlsx_files/image15.xlsx +0 -0
  1704. data/test/regression/xlsx_files/image16.xlsx +0 -0
  1705. data/test/regression/xlsx_files/image17.xlsx +0 -0
  1706. data/test/regression/xlsx_files/image18.xlsx +0 -0
  1707. data/test/regression/xlsx_files/image19.xlsx +0 -0
  1708. data/test/regression/xlsx_files/image22.xlsx +0 -0
  1709. data/test/regression/xlsx_files/image23.xlsx +0 -0
  1710. data/test/regression/xlsx_files/image24.xlsx +0 -0
  1711. data/test/regression/xlsx_files/image25.xlsx +0 -0
  1712. data/test/regression/xlsx_files/image26.xlsx +0 -0
  1713. data/test/regression/xlsx_files/image27.xlsx +0 -0
  1714. data/test/regression/xlsx_files/image28.xlsx +0 -0
  1715. data/test/regression/xlsx_files/image29.xlsx +0 -0
  1716. data/test/regression/xlsx_files/image30.xlsx +0 -0
  1717. data/test/regression/xlsx_files/image31.xlsx +0 -0
  1718. data/test/regression/xlsx_files/image32.xlsx +0 -0
  1719. data/test/regression/xlsx_files/image33.xlsx +0 -0
  1720. data/test/regression/xlsx_files/image35.xlsx +0 -0
  1721. data/test/regression/xlsx_files/image36.xlsx +0 -0
  1722. data/test/regression/xlsx_files/image44.xlsx +0 -0
  1723. data/test/regression/xlsx_files/image45.xlsx +0 -0
  1724. data/test/regression/xlsx_files/image46.xlsx +0 -0
  1725. data/test/regression/xlsx_files/image47.xlsx +0 -0
  1726. data/test/regression/xlsx_files/image48.xlsx +0 -0
  1727. data/test/regression/xlsx_files/image49.xlsx +0 -0
  1728. data/test/regression/xlsx_files/image50.xlsx +0 -0
  1729. data/test/regression/xlsx_files/image51.xlsx +0 -0
  1730. data/test/regression/xlsx_files/image52.xlsx +0 -0
  1731. data/test/regression/xlsx_files/image53.xlsx +0 -0
  1732. data/test/regression/xlsx_files/image54.xlsx +0 -0
  1733. data/test/regression/xlsx_files/image55.xlsx +0 -0
  1734. data/test/regression/xlsx_files/image56.xlsx +0 -0
  1735. data/test/regression/xlsx_files/image57.xlsx +0 -0
  1736. data/test/regression/xlsx_files/landscape01.xlsx +0 -0
  1737. data/test/regression/xlsx_files/macro01.xlsm +0 -0
  1738. data/test/regression/xlsx_files/merge_cells01.xlsx +0 -0
  1739. data/test/regression/xlsx_files/merge_range01.xlsx +0 -0
  1740. data/test/regression/xlsx_files/merge_range02.xlsx +0 -0
  1741. data/test/regression/xlsx_files/merge_range03.xlsx +0 -0
  1742. data/test/regression/xlsx_files/merge_range04.xlsx +0 -0
  1743. data/test/regression/xlsx_files/merge_range05.xlsx +0 -0
  1744. data/test/regression/xlsx_files/object_position01.xlsx +0 -0
  1745. data/test/regression/xlsx_files/object_position02.xlsx +0 -0
  1746. data/test/regression/xlsx_files/object_position03.xlsx +0 -0
  1747. data/test/regression/xlsx_files/object_position04.xlsx +0 -0
  1748. data/test/regression/xlsx_files/object_position06.xlsx +0 -0
  1749. data/test/regression/xlsx_files/object_position07.xlsx +0 -0
  1750. data/test/regression/xlsx_files/object_position08.xlsx +0 -0
  1751. data/test/regression/xlsx_files/object_position09.xlsx +0 -0
  1752. data/test/regression/xlsx_files/object_position10.xlsx +0 -0
  1753. data/test/regression/xlsx_files/object_position12.xlsx +0 -0
  1754. data/test/regression/xlsx_files/object_position13.xlsx +0 -0
  1755. data/test/regression/xlsx_files/object_position14.xlsx +0 -0
  1756. data/test/regression/xlsx_files/object_position15.xlsx +0 -0
  1757. data/test/regression/xlsx_files/object_position16.xlsx +0 -0
  1758. data/test/regression/xlsx_files/object_position17.xlsx +0 -0
  1759. data/test/regression/xlsx_files/object_position18.xlsx +0 -0
  1760. data/test/regression/xlsx_files/object_position19.xlsx +0 -0
  1761. data/test/regression/xlsx_files/object_position20.xlsx +0 -0
  1762. data/test/regression/xlsx_files/outline01.xlsx +0 -0
  1763. data/test/regression/xlsx_files/outline02.xlsx +0 -0
  1764. data/test/regression/xlsx_files/outline03.xlsx +0 -0
  1765. data/test/regression/xlsx_files/outline04.xlsx +0 -0
  1766. data/test/regression/xlsx_files/outline05.xlsx +0 -0
  1767. data/test/regression/xlsx_files/outline06.xlsx +0 -0
  1768. data/test/regression/xlsx_files/page_breaks01.xlsx +0 -0
  1769. data/test/regression/xlsx_files/page_breaks02.xlsx +0 -0
  1770. data/test/regression/xlsx_files/page_breaks03.xlsx +0 -0
  1771. data/test/regression/xlsx_files/page_breaks04.xlsx +0 -0
  1772. data/test/regression/xlsx_files/page_breaks05.xlsx +0 -0
  1773. data/test/regression/xlsx_files/page_breaks06.xlsx +0 -0
  1774. data/test/regression/xlsx_files/page_view01.xlsx +0 -0
  1775. data/test/regression/xlsx_files/panes01.xlsx +0 -0
  1776. data/test/regression/xlsx_files/print_across01.xlsx +0 -0
  1777. data/test/regression/xlsx_files/print_area01.xlsx +0 -0
  1778. data/test/regression/xlsx_files/print_area02.xlsx +0 -0
  1779. data/test/regression/xlsx_files/print_area03.xlsx +0 -0
  1780. data/test/regression/xlsx_files/print_area04.xlsx +0 -0
  1781. data/test/regression/xlsx_files/print_area05.xlsx +0 -0
  1782. data/test/regression/xlsx_files/print_area06.xlsx +0 -0
  1783. data/test/regression/xlsx_files/print_area07.xlsx +0 -0
  1784. data/test/regression/xlsx_files/print_options01.xlsx +0 -0
  1785. data/test/regression/xlsx_files/print_options02.xlsx +0 -0
  1786. data/test/regression/xlsx_files/print_options03.xlsx +0 -0
  1787. data/test/regression/xlsx_files/print_options04.xlsx +0 -0
  1788. data/test/regression/xlsx_files/print_options05.xlsx +0 -0
  1789. data/test/regression/xlsx_files/print_options06.xlsx +0 -0
  1790. data/test/regression/xlsx_files/print_options07.xlsx +0 -0
  1791. data/test/regression/xlsx_files/print_scale01.xlsx +0 -0
  1792. data/test/regression/xlsx_files/print_scale02.xlsx +0 -0
  1793. data/test/regression/xlsx_files/properties01.xlsx +0 -0
  1794. data/test/regression/xlsx_files/properties02.xlsx +0 -0
  1795. data/test/regression/xlsx_files/properties03.xlsx +0 -0
  1796. data/test/regression/xlsx_files/properties04.xlsx +0 -0
  1797. data/test/regression/xlsx_files/properties05.xlsx +0 -0
  1798. data/test/regression/xlsx_files/protect01.xlsx +0 -0
  1799. data/test/regression/xlsx_files/protect02.xlsx +0 -0
  1800. data/test/regression/xlsx_files/protect03.xlsx +0 -0
  1801. data/test/regression/xlsx_files/protect04.xlsx +0 -0
  1802. data/test/regression/xlsx_files/protect05.xlsx +0 -0
  1803. data/test/regression/xlsx_files/protect06.xlsx +0 -0
  1804. data/test/regression/xlsx_files/protect07.xlsx +0 -0
  1805. data/test/regression/xlsx_files/quote_name01.xlsx +0 -0
  1806. data/test/regression/xlsx_files/quote_name02.xlsx +0 -0
  1807. data/test/regression/xlsx_files/quote_name03.xlsx +0 -0
  1808. data/test/regression/xlsx_files/quote_name04.xlsx +0 -0
  1809. data/test/regression/xlsx_files/repeat01.xlsx +0 -0
  1810. data/test/regression/xlsx_files/repeat02.xlsx +0 -0
  1811. data/test/regression/xlsx_files/repeat03.xlsx +0 -0
  1812. data/test/regression/xlsx_files/repeat04.xlsx +0 -0
  1813. data/test/regression/xlsx_files/repeat05.xlsx +0 -0
  1814. data/test/regression/xlsx_files/rich_string01.xlsx +0 -0
  1815. data/test/regression/xlsx_files/rich_string02.xlsx +0 -0
  1816. data/test/regression/xlsx_files/rich_string03.xlsx +0 -0
  1817. data/test/regression/xlsx_files/rich_string04.xlsx +0 -0
  1818. data/test/regression/xlsx_files/rich_string05.xlsx +0 -0
  1819. data/test/regression/xlsx_files/rich_string06.xlsx +0 -0
  1820. data/test/regression/xlsx_files/rich_string07.xlsx +0 -0
  1821. data/test/regression/xlsx_files/rich_string08.xlsx +0 -0
  1822. data/test/regression/xlsx_files/rich_string09.xlsx +0 -0
  1823. data/test/regression/xlsx_files/rich_string10.xlsx +0 -0
  1824. data/test/regression/xlsx_files/rich_string11.xlsx +0 -0
  1825. data/test/regression/xlsx_files/rich_string12.xlsx +0 -0
  1826. data/test/regression/xlsx_files/row_col_format01.xlsx +0 -0
  1827. data/test/regression/xlsx_files/row_col_format02.xlsx +0 -0
  1828. data/test/regression/xlsx_files/row_col_format03.xlsx +0 -0
  1829. data/test/regression/xlsx_files/row_col_format04.xlsx +0 -0
  1830. data/test/regression/xlsx_files/row_col_format05.xlsx +0 -0
  1831. data/test/regression/xlsx_files/row_col_format06.xlsx +0 -0
  1832. data/test/regression/xlsx_files/row_col_format07.xlsx +0 -0
  1833. data/test/regression/xlsx_files/row_col_format08.xlsx +0 -0
  1834. data/test/regression/xlsx_files/row_col_format09.xlsx +0 -0
  1835. data/test/regression/xlsx_files/row_col_format10.xlsx +0 -0
  1836. data/test/regression/xlsx_files/row_col_format11.xlsx +0 -0
  1837. data/test/regression/xlsx_files/row_col_format12.xlsx +0 -0
  1838. data/test/regression/xlsx_files/row_col_format13.xlsx +0 -0
  1839. data/test/regression/xlsx_files/row_col_format14.xlsx +0 -0
  1840. data/test/regression/xlsx_files/selection01.xlsx +0 -0
  1841. data/test/regression/xlsx_files/selection02.xlsx +0 -0
  1842. data/test/regression/xlsx_files/set_column01.xlsx +0 -0
  1843. data/test/regression/xlsx_files/set_column03.xlsx +0 -0
  1844. data/test/regression/xlsx_files/set_column04.xlsx +0 -0
  1845. data/test/regression/xlsx_files/set_column05.xlsx +0 -0
  1846. data/test/regression/xlsx_files/set_column06.xlsx +0 -0
  1847. data/test/regression/xlsx_files/set_column07.xlsx +0 -0
  1848. data/test/regression/xlsx_files/set_column08.xlsx +0 -0
  1849. data/test/regression/xlsx_files/set_column09.xlsx +0 -0
  1850. data/test/regression/xlsx_files/set_print_scale01.xlsx +0 -0
  1851. data/test/regression/xlsx_files/set_row01.xlsx +0 -0
  1852. data/test/regression/xlsx_files/set_row03.xlsx +0 -0
  1853. data/test/regression/xlsx_files/set_start_page01.xlsx +0 -0
  1854. data/test/regression/xlsx_files/set_start_page02.xlsx +0 -0
  1855. data/test/regression/xlsx_files/set_start_page03.xlsx +0 -0
  1856. data/test/regression/xlsx_files/shape01.xlsx +0 -0
  1857. data/test/regression/xlsx_files/shape02.xlsx +0 -0
  1858. data/test/regression/xlsx_files/shape03.xlsx +0 -0
  1859. data/test/regression/xlsx_files/shape04.xlsx +0 -0
  1860. data/test/regression/xlsx_files/shape_connect01.xlsx +0 -0
  1861. data/test/regression/xlsx_files/shape_connect02.xlsx +0 -0
  1862. data/test/regression/xlsx_files/shape_connect03.xlsx +0 -0
  1863. data/test/regression/xlsx_files/shape_connect04.xlsx +0 -0
  1864. data/test/regression/xlsx_files/shape_scale01.xlsx +0 -0
  1865. data/test/regression/xlsx_files/shape_stencil01.xlsx +0 -0
  1866. data/test/regression/xlsx_files/shared_strings01.xlsx +0 -0
  1867. data/test/regression/xlsx_files/shared_strings02.xlsx +0 -0
  1868. data/test/regression/xlsx_files/shared_strings_encoding.xlsx +0 -0
  1869. data/test/regression/xlsx_files/simple01.xlsx +0 -0
  1870. data/test/regression/xlsx_files/simple02.xlsx +0 -0
  1871. data/test/regression/xlsx_files/simple03.xlsx +0 -0
  1872. data/test/regression/xlsx_files/simple04.xlsx +0 -0
  1873. data/test/regression/xlsx_files/simple05.xlsx +0 -0
  1874. data/test/regression/xlsx_files/tab_color01.xlsx +0 -0
  1875. data/test/regression/xlsx_files/table01.xlsx +0 -0
  1876. data/test/regression/xlsx_files/table02.xlsx +0 -0
  1877. data/test/regression/xlsx_files/table03.xlsx +0 -0
  1878. data/test/regression/xlsx_files/table04.xlsx +0 -0
  1879. data/test/regression/xlsx_files/table05.xlsx +0 -0
  1880. data/test/regression/xlsx_files/table06.xlsx +0 -0
  1881. data/test/regression/xlsx_files/table07.xlsx +0 -0
  1882. data/test/regression/xlsx_files/table08.xlsx +0 -0
  1883. data/test/regression/xlsx_files/table09.xlsx +0 -0
  1884. data/test/regression/xlsx_files/table10.xlsx +0 -0
  1885. data/test/regression/xlsx_files/table11.xlsx +0 -0
  1886. data/test/regression/xlsx_files/table12.xlsx +0 -0
  1887. data/test/regression/xlsx_files/table13.xlsx +0 -0
  1888. data/test/regression/xlsx_files/table14.xlsx +0 -0
  1889. data/test/regression/xlsx_files/table15.xlsx +0 -0
  1890. data/test/regression/xlsx_files/table17.xlsx +0 -0
  1891. data/test/regression/xlsx_files/table18.xlsx +0 -0
  1892. data/test/regression/xlsx_files/table19.xlsx +0 -0
  1893. data/test/regression/xlsx_files/table21.xlsx +0 -0
  1894. data/test/regression/xlsx_files/table22.xlsx +0 -0
  1895. data/test/regression/xlsx_files/table23.xlsx +0 -0
  1896. data/test/regression/xlsx_files/table24.xlsx +0 -0
  1897. data/test/regression/xlsx_files/table25.xlsx +0 -0
  1898. data/test/regression/xlsx_files/table26.xlsx +0 -0
  1899. data/test/regression/xlsx_files/tutorial01.xlsx +0 -0
  1900. data/test/regression/xlsx_files/tutorial02.xlsx +0 -0
  1901. data/test/regression/xlsx_files/tutorial03.xlsx +0 -0
  1902. data/test/regression/xlsx_files/types02.xlsx +0 -0
  1903. data/test/regression/xlsx_files/types08.xlsx +0 -0
  1904. data/test/regression/xlsx_files/update_range_format_with_params.xlsx +0 -0
  1905. data/test/regression/xlsx_files/urls_as_strings.xlsx +0 -0
  1906. data/test/regression/xlsx_files/utf8_01.xlsx +0 -0
  1907. data/test/regression/xlsx_files/utf8_03.xlsx +0 -0
  1908. data/test/regression/xlsx_files/utf8_04.xlsx +0 -0
  1909. data/test/regression/xlsx_files/utf8_05.xlsx +0 -0
  1910. data/test/regression/xlsx_files/utf8_06.xlsx +0 -0
  1911. data/test/regression/xlsx_files/utf8_07.xlsx +0 -0
  1912. data/test/regression/xlsx_files/utf8_08.xlsx +0 -0
  1913. data/test/regression/xlsx_files/utf8_09.xlsx +0 -0
  1914. data/test/regression/xlsx_files/utf8_10.xlsx +0 -0
  1915. data/test/regression/xlsx_files/utf8_11.xlsx +0 -0
  1916. data/test/regression/xlsx_files/vbaProject01.bin +0 -0
  1917. data/test/regression/xlsx_files/vbaProject02.bin +0 -0
  1918. data/test/regression/xlsx_files/vml01.xlsx +0 -0
  1919. data/test/regression/xlsx_files/vml02.xlsx +0 -0
  1920. data/test/regression/xlsx_files/vml03.xlsx +0 -0
  1921. data/test/regression/xlsx_files/vml04.xlsx +0 -0
  1922. data/test/republic.png +0 -0
  1923. data/test/run_test.rb +0 -9
  1924. data/test/test_delete_files.rb +0 -37
  1925. data/test/test_example_match.rb +0 -6348
  1926. data/test/test_option_hash_for_workbook.rb +0 -72
  1927. data/test/test_xml_writer_simple.rb +0 -64
  1928. data/test/utility/test_range.rb +0 -20
  1929. data/test/vbaProject.bin +0 -0
  1930. data/test/workbook/test_check_sheetname.rb +0 -51
  1931. data/test/workbook/test_define_name.rb +0 -16
  1932. data/test/workbook/test_get_chart_range.rb +0 -57
  1933. data/test/workbook/test_sort_defined_names.rb +0 -77
  1934. data/test/workbook/test_workbook_01.rb +0 -29
  1935. data/test/workbook/test_workbook_02.rb +0 -31
  1936. data/test/workbook/test_workbook_03.rb +0 -31
  1937. data/test/workbook/test_worksheet_by_name.rb +0 -35
  1938. data/test/workbook/test_write_calc_pr.rb +0 -41
  1939. data/test/workbook/test_write_defined_name.rb +0 -17
  1940. data/test/workbook/test_write_defined_names.rb +0 -41
  1941. data/test/workbook/test_write_workbook_view.rb +0 -117
  1942. data/test/worksheet/test_calculate_spans.rb +0 -58
  1943. data/test/worksheet/test_cond_format_01.rb +0 -82
  1944. data/test/worksheet/test_cond_format_02.rb +0 -87
  1945. data/test/worksheet/test_cond_format_03.rb +0 -97
  1946. data/test/worksheet/test_cond_format_04.rb +0 -85
  1947. data/test/worksheet/test_cond_format_05.rb +0 -96
  1948. data/test/worksheet/test_cond_format_06.rb +0 -106
  1949. data/test/worksheet/test_cond_format_07.rb +0 -116
  1950. data/test/worksheet/test_cond_format_08.rb +0 -115
  1951. data/test/worksheet/test_cond_format_09.rb +0 -108
  1952. data/test/worksheet/test_cond_format_10.rb +0 -83
  1953. data/test/worksheet/test_cond_format_11.rb +0 -85
  1954. data/test/worksheet/test_cond_format_12.rb +0 -133
  1955. data/test/worksheet/test_cond_format_13.rb +0 -135
  1956. data/test/worksheet/test_cond_format_14.rb +0 -132
  1957. data/test/worksheet/test_cond_format_15.rb +0 -93
  1958. data/test/worksheet/test_cond_format_16.rb +0 -138
  1959. data/test/worksheet/test_cond_format_17.rb +0 -141
  1960. data/test/worksheet/test_cond_format_18.rb +0 -135
  1961. data/test/worksheet/test_cond_format_19.rb +0 -139
  1962. data/test/worksheet/test_cond_format_20.rb +0 -119
  1963. data/test/worksheet/test_cond_format_21.rb +0 -90
  1964. data/test/worksheet/test_cond_format_22.rb +0 -266
  1965. data/test/worksheet/test_cond_format_23.rb +0 -242
  1966. data/test/worksheet/test_cond_format_24.rb +0 -303
  1967. data/test/worksheet/test_convert_date_time_01.rb +0 -439
  1968. data/test/worksheet/test_convert_date_time_02.rb +0 -472
  1969. data/test/worksheet/test_convert_date_time_03.rb +0 -435
  1970. data/test/worksheet/test_convert_date_time_04.rb +0 -19
  1971. data/test/worksheet/test_data_bar_01.rb +0 -53
  1972. data/test/worksheet/test_data_bar_02.rb +0 -79
  1973. data/test/worksheet/test_data_bar_03.rb +0 -147
  1974. data/test/worksheet/test_data_bar_04.rb +0 -145
  1975. data/test/worksheet/test_data_bar_05.rb +0 -147
  1976. data/test/worksheet/test_data_bar_06.rb +0 -145
  1977. data/test/worksheet/test_data_bar_07.rb +0 -146
  1978. data/test/worksheet/test_data_bar_08.rb +0 -54
  1979. data/test/worksheet/test_data_bar_09.rb +0 -80
  1980. data/test/worksheet/test_data_bar_10.rb +0 -165
  1981. data/test/worksheet/test_data_bar_11.rb +0 -167
  1982. data/test/worksheet/test_data_bar_12.rb +0 -104
  1983. data/test/worksheet/test_extract_filter_tokens.rb +0 -109
  1984. data/test/worksheet/test_parse_filter_expression.rb +0 -143
  1985. data/test/worksheet/test_pixels_to_row_col.rb +0 -46
  1986. data/test/worksheet/test_position_object.rb +0 -50
  1987. data/test/worksheet/test_repeat_formula.rb +0 -55
  1988. data/test/worksheet/test_sparkline_01.rb +0 -65
  1989. data/test/worksheet/test_sparkline_02.rb +0 -92
  1990. data/test/worksheet/test_sparkline_03.rb +0 -133
  1991. data/test/worksheet/test_sparkline_04.rb +0 -93
  1992. data/test/worksheet/test_sparkline_05.rb +0 -93
  1993. data/test/worksheet/test_sparkline_06.rb +0 -114
  1994. data/test/worksheet/test_sparkline_07.rb +0 -357
  1995. data/test/worksheet/test_sparkline_08.rb +0 -177
  1996. data/test/worksheet/test_sparkline_09.rb +0 -1250
  1997. data/test/worksheet/test_sparkline_10.rb +0 -107
  1998. data/test/worksheet/test_sparkline_11.rb +0 -218
  1999. data/test/worksheet/test_sparkline_12.rb +0 -94
  2000. data/test/worksheet/test_update_format_methods.rb +0 -91
  2001. data/test/worksheet/test_worksheet_01.rb +0 -32
  2002. data/test/worksheet/test_worksheet_02.rb +0 -38
  2003. data/test/worksheet/test_worksheet_03.rb +0 -44
  2004. data/test/worksheet/test_worksheet_04.rb +0 -45
  2005. data/test/worksheet/test_write_array_formula_01.rb +0 -98
  2006. data/test/worksheet/test_write_autofilter.rb +0 -260
  2007. data/test/worksheet/test_write_brk.rb +0 -18
  2008. data/test/worksheet/test_write_cell.rb +0 -54
  2009. data/test/worksheet/test_write_cell_value.rb +0 -33
  2010. data/test/worksheet/test_write_col_breaks.rb +0 -27
  2011. data/test/worksheet/test_write_col_info.rb +0 -95
  2012. data/test/worksheet/test_write_conditional_formatting.rb +0 -72
  2013. data/test/worksheet/test_write_custom_filter.rb +0 -18
  2014. data/test/worksheet/test_write_custom_filters.rb +0 -25
  2015. data/test/worksheet/test_write_data_validation_01.rb +0 -113
  2016. data/test/worksheet/test_write_data_validation_02.rb +0 -585
  2017. data/test/worksheet/test_write_dimension.rb +0 -94
  2018. data/test/worksheet/test_write_filter.rb +0 -18
  2019. data/test/worksheet/test_write_filter_column.rb +0 -18
  2020. data/test/worksheet/test_write_filters.rb +0 -32
  2021. data/test/worksheet/test_write_formula_does_not_change_formula_string.rb +0 -18
  2022. data/test/worksheet/test_write_header_footer.rb +0 -58
  2023. data/test/worksheet/test_write_hyperlink.rb +0 -32
  2024. data/test/worksheet/test_write_legacy_drawing.rb +0 -19
  2025. data/test/worksheet/test_write_merge_cell.rb +0 -18
  2026. data/test/worksheet/test_write_merge_cells.rb +0 -192
  2027. data/test/worksheet/test_write_methods.rb +0 -248
  2028. data/test/worksheet/test_write_page_margins.rb +0 -98
  2029. data/test/worksheet/test_write_page_set_up_pr.rb +0 -19
  2030. data/test/worksheet/test_write_page_setup.rb +0 -54
  2031. data/test/worksheet/test_write_pane.rb +0 -123
  2032. data/test/worksheet/test_write_phonetic_pr.rb +0 -19
  2033. data/test/worksheet/test_write_print_options.rb +0 -77
  2034. data/test/worksheet/test_write_row_breaks.rb +0 -27
  2035. data/test/worksheet/test_write_row_element.rb +0 -69
  2036. data/test/worksheet/test_write_selection.rb +0 -18
  2037. data/test/worksheet/test_write_sheet_calc_pr.rb +0 -18
  2038. data/test/worksheet/test_write_sheet_data.rb +0 -18
  2039. data/test/worksheet/test_write_sheet_format_pr.rb +0 -18
  2040. data/test/worksheet/test_write_sheet_pr.rb +0 -36
  2041. data/test/worksheet/test_write_sheet_protection.rb +0 -174
  2042. data/test/worksheet/test_write_sheet_view.rb +0 -71
  2043. data/test/worksheet/test_write_sheet_view1.rb +0 -64
  2044. data/test/worksheet/test_write_sheet_view2.rb +0 -56
  2045. data/test/worksheet/test_write_sheet_view3.rb +0 -83
  2046. data/test/worksheet/test_write_sheet_view4.rb +0 -83
  2047. data/test/worksheet/test_write_sheet_view5.rb +0 -74
  2048. data/test/worksheet/test_write_sheet_view6.rb +0 -51
  2049. data/test/worksheet/test_write_sheet_view7.rb +0 -71
  2050. data/test/worksheet/test_write_sheet_view8.rb +0 -51
  2051. data/test/worksheet/test_write_sheet_view9.rb +0 -51
  2052. data/test/worksheet/test_write_tab_color.rb +0 -23
  2053. data/test/worksheet/test_write_worksheet_attributes.rb +0 -21
@@ -1,5 +1,6 @@
1
1
  # -*- coding: utf-8 -*-
2
2
  # frozen_string_literal: true
3
+
3
4
  require 'write_xlsx/package/xml_writer_simple'
4
5
  require 'write_xlsx/package/button'
5
6
  require 'write_xlsx/colors'
@@ -36,7 +37,7 @@ module Writexlsx
36
37
  attr_reader :vba_codename # :nodoc:
37
38
  attr_writer :excel_version
38
39
 
39
- def initialize(workbook, index, name) #:nodoc:
40
+ def initialize(workbook, index, name) # :nodoc:
40
41
  @writer = Package::XMLWriterSimple.new
41
42
 
42
43
  @workbook = workbook
@@ -138,19 +139,19 @@ module Writexlsx
138
139
  @original_row_height = 12.75
139
140
  @default_row_height = 12.75
140
141
  @default_row_pixels = 17
141
- self::margins_left_right = 0.75
142
- self::margins_top_bottom = 1
142
+ self.margins_left_right = 0.75
143
+ self.margins_top_bottom = 1
143
144
  @page_setup.margin_header = 0.5
144
145
  @page_setup.margin_footer = 0.5
145
146
  @page_setup.header_footer_aligns = false
146
147
  end
147
148
  end
148
149
 
149
- def set_xml_writer(filename) #:nodoc:
150
+ def set_xml_writer(filename) # :nodoc:
150
151
  @writer.set_xml_writer(filename)
151
152
  end
152
153
 
153
- def assemble_xml_file #:nodoc:
154
+ def assemble_xml_file # :nodoc:
154
155
  write_xml_declaration do
155
156
  @writer.tag_elements('worksheet', write_worksheet_attributes) do
156
157
  write_sheet_pr
@@ -188,9 +189,7 @@ module Writexlsx
188
189
  #
189
190
  # The name method is used to retrieve the name of a worksheet.
190
191
  #
191
- def name
192
- @name
193
- end
192
+ attr_reader :name
194
193
 
195
194
  #
196
195
  # Set this worksheet as a selected worksheet, i.e. the worksheet has its tab
@@ -244,8 +243,10 @@ module Writexlsx
244
243
  @protect = protect_default_settings.merge(options)
245
244
 
246
245
  # Set the password after the user defined values.
247
- @protect[:password] =
248
- encode_password(password) if password && password != ''
246
+ if password && password != ''
247
+ @protect[:password] =
248
+ encode_password(password)
249
+ end
249
250
  end
250
251
 
251
252
  #
@@ -300,7 +301,7 @@ module Writexlsx
300
301
  def set_column(*args)
301
302
  # Check for a cell reference in A1 notation and substitute row and column
302
303
  if args[0].to_s =~ /^\D/
303
- row1, firstcol, row2, lastcol, *data = substitute_cellref(*args)
304
+ _row1, firstcol, _row2, lastcol, *data = substitute_cellref(*args)
304
305
  else
305
306
  firstcol, lastcol, *data = args
306
307
  end
@@ -342,9 +343,9 @@ module Writexlsx
342
343
 
343
344
  # Store the col sizes for use when calculating image vertices taking
344
345
  # hidden columns into account. Also store the column formats.
345
- width = @default_col_width unless width
346
+ width ||= @default_col_width
346
347
 
347
- (firstcol .. lastcol).each do |col|
348
+ (firstcol..lastcol).each do |col|
348
349
  @col_sizes[col] = [width, hidden]
349
350
  @col_formats[col] = format if format
350
351
  end
@@ -376,9 +377,7 @@ module Writexlsx
376
377
  hidden = data[4] || 0
377
378
  level = data[5]
378
379
 
379
- if ptrue?(pixels)
380
- width = pixels_to_width(pixels)
381
- end
380
+ width = pixels_to_width(pixels) if ptrue?(pixels)
382
381
 
383
382
  set_column(first_col, last_col, width, format, hidden, level)
384
383
  end
@@ -408,7 +407,7 @@ module Writexlsx
408
407
  # Selection isn't set for cell A1.
409
408
  return if sqref == 'A1'
410
409
 
411
- @selections = [ [ nil, active_cell, sqref ] ]
410
+ @selections = [[nil, active_cell, sqref]]
412
411
  end
413
412
 
414
413
  #
@@ -431,7 +430,7 @@ module Writexlsx
431
430
  left_col ||= col
432
431
  type ||= 0
433
432
 
434
- @panes = [row, col, top_row, left_col, type ]
433
+ @panes = [row, col, top_row, left_col, type]
435
434
  end
436
435
 
437
436
  #
@@ -492,7 +491,7 @@ module Writexlsx
492
491
 
493
492
  def set_paper(paper_size)
494
493
  put_deprecate_message("#{self}.set_paper")
495
- self::paper = paper_size
494
+ self.paper = paper_size
496
495
  end
497
496
 
498
497
  #
@@ -500,26 +499,21 @@ module Writexlsx
500
499
  #
501
500
  def set_header(string = '', margin = 0.3, options = {})
502
501
  raise 'Header string must be less than 255 characters' if string.length > 255
502
+
503
503
  # Replace the Excel placeholder &[Picture] with the internal &G.
504
504
  @page_setup.header = string.gsub(/&\[Picture\]/, '&G')
505
505
 
506
- if options[:align_with_margins]
507
- @page_setup.header_footer_aligns = options[:align_with_margins]
508
- end
506
+ @page_setup.header_footer_aligns = options[:align_with_margins] if options[:align_with_margins]
509
507
 
510
- if options[:scale_with_doc]
511
- @page_setup.header_footer_scales = options[:scale_with_doc]
512
- end
508
+ @page_setup.header_footer_scales = options[:scale_with_doc] if options[:scale_with_doc]
513
509
 
514
510
  # Reset the array in case the function is called more than once.
515
511
  @header_images = []
516
512
 
517
513
  [
518
- [:image_left, 'LH'], [:image_center, 'CH'], [:image_right, 'RH']
514
+ [:image_left, 'LH'], [:image_center, 'CH'], [:image_right, 'RH']
519
515
  ].each do |p|
520
- if options[p.first]
521
- @header_images << [options[p.first], p.last]
522
- end
516
+ @header_images << [options[p.first], p.last] if options[p.first]
523
517
  end
524
518
 
525
519
  # placeholeder /&G/ の数
@@ -527,9 +521,7 @@ module Writexlsx
527
521
 
528
522
  image_count = @header_images.count
529
523
 
530
- if image_count != placeholder_count
531
- raise "Number of header image (#{image_count}) doesn't match placeholder count (#{placeholder_count}) in string: #{@page_setup.header}"
532
- end
524
+ raise "Number of header image (#{image_count}) doesn't match placeholder count (#{placeholder_count}) in string: #{@page_setup.header}" if image_count != placeholder_count
533
525
 
534
526
  @has_header_vml = true if image_count > 0
535
527
 
@@ -543,28 +535,22 @@ module Writexlsx
543
535
  def set_footer(string = '', margin = 0.3, options = {})
544
536
  raise 'Footer string must be less than 255 characters' if string.length > 255
545
537
 
546
- @page_setup.footer = string.dup
538
+ @page_setup.footer = string.dup
547
539
 
548
540
  # Replace the Excel placeholder &[Picture] with the internal &G.
549
541
  @page_setup.footer = string.gsub(/&\[Picture\]/, '&G')
550
542
 
551
- if options[:align_with_margins]
552
- @page_setup.header_footer_aligns = options[:align_with_margins]
553
- end
543
+ @page_setup.header_footer_aligns = options[:align_with_margins] if options[:align_with_margins]
554
544
 
555
- if options[:scale_with_doc]
556
- @page_setup.header_footer_scales = options[:scale_with_doc]
557
- end
545
+ @page_setup.header_footer_scales = options[:scale_with_doc] if options[:scale_with_doc]
558
546
 
559
547
  # Reset the array in case the function is called more than once.
560
548
  @footer_images = []
561
549
 
562
550
  [
563
- [:image_left, 'LF'], [:image_center, 'CF'], [:image_right, 'RF']
551
+ [:image_left, 'LF'], [:image_center, 'CF'], [:image_right, 'RF']
564
552
  ].each do |p|
565
- if options[p.first]
566
- @footer_images << [options[p.first], p.last]
567
- end
553
+ @footer_images << [options[p.first], p.last] if options[p.first]
568
554
  end
569
555
 
570
556
  # placeholeder /&G/ の数
@@ -572,9 +558,7 @@ module Writexlsx
572
558
 
573
559
  image_count = @footer_images.count
574
560
 
575
- if image_count != placeholder_count
576
- raise "Number of footer image (#{image_count}) doesn't match placeholder count (#{placeholder_count}) in string: #{@page_setup.footer}"
577
- end
561
+ raise "Number of footer image (#{image_count}) doesn't match placeholder count (#{placeholder_count}) in string: #{@page_setup.footer}" if image_count != placeholder_count
578
562
 
579
563
  @has_header_vml = true if image_count > 0
580
564
 
@@ -600,10 +584,10 @@ module Writexlsx
600
584
  # Set all the page margins to the same value in inches.
601
585
  #
602
586
  def margins=(margin)
603
- self::margin_left = margin
604
- self::margin_right = margin
605
- self::margin_top = margin
606
- self::margin_bottom = margin
587
+ self.margin_left = margin
588
+ self.margin_right = margin
589
+ self.margin_top = margin
590
+ self.margin_bottom = margin
607
591
  end
608
592
 
609
593
  #
@@ -611,8 +595,8 @@ module Writexlsx
611
595
  # See set_margins
612
596
  #
613
597
  def margins_left_right=(margin)
614
- self::margin_left = margin
615
- self::margin_right = margin
598
+ self.margin_left = margin
599
+ self.margin_right = margin
616
600
  end
617
601
 
618
602
  #
@@ -620,8 +604,8 @@ module Writexlsx
620
604
  # See set_margins
621
605
  #
622
606
  def margins_top_bottom=(margin)
623
- self::margin_top = margin
624
- self::margin_bottom = margin
607
+ self.margin_top = margin
608
+ self.margin_bottom = margin
625
609
  end
626
610
 
627
611
  #
@@ -661,7 +645,7 @@ module Writexlsx
661
645
  #
662
646
  def set_margins(margin)
663
647
  put_deprecate_message("#{self}.set_margins")
664
- self::margins = margin
648
+ self.margins = margin
665
649
  end
666
650
 
667
651
  #
@@ -670,7 +654,7 @@ module Writexlsx
670
654
  #
671
655
  def set_margins_LR(margin)
672
656
  put_deprecate_message("#{self}.set_margins_LR")
673
- self::margins_left_right = margin
657
+ self.margins_left_right = margin
674
658
  end
675
659
 
676
660
  #
@@ -679,7 +663,7 @@ module Writexlsx
679
663
  #
680
664
  def set_margins_TB(margin)
681
665
  put_deprecate_message("#{self}.set_margins_TB")
682
- self::margins_top_bottom = margin
666
+ self.margins_top_bottom = margin
683
667
  end
684
668
 
685
669
  #
@@ -688,7 +672,7 @@ module Writexlsx
688
672
  #
689
673
  def set_margin_left(margin = 0.7)
690
674
  put_deprecate_message("#{self}.set_margin_left")
691
- self::margin_left = margin
675
+ self.margin_left = margin
692
676
  end
693
677
 
694
678
  #
@@ -697,7 +681,7 @@ module Writexlsx
697
681
  #
698
682
  def set_margin_right(margin = 0.7)
699
683
  put_deprecate_message("#{self}.set_margin_right")
700
- self::margin_right = margin
684
+ self.margin_right = margin
701
685
  end
702
686
 
703
687
  #
@@ -706,7 +690,7 @@ module Writexlsx
706
690
  #
707
691
  def set_margin_top(margin = 0.75)
708
692
  put_deprecate_message("#{self}.set_margin_top")
709
- self::margin_top = margin
693
+ self.margin_top = margin
710
694
  end
711
695
 
712
696
  #
@@ -715,7 +699,7 @@ module Writexlsx
715
699
  #
716
700
  def set_margin_bottom(margin = 0.75)
717
701
  put_deprecate_message("#{self}.set_margin_bottom")
718
- self::margin_bottom = margin
702
+ self.margin_bottom = margin
719
703
  end
720
704
 
721
705
  #
@@ -747,7 +731,7 @@ module Writexlsx
747
731
  #
748
732
  def repeat_columns(*args)
749
733
  if args[0] =~ /^\D/
750
- dummy, first_col, dummy, last_col = substitute_cellref(*args)
734
+ _dummy, first_col, _dummy, last_col = substitute_cellref(*args)
751
735
  else
752
736
  first_col, last_col = args
753
737
  end
@@ -771,13 +755,12 @@ module Writexlsx
771
755
  #
772
756
  def print_area(*args)
773
757
  return @page_setup.print_area.dup if args.empty?
758
+
774
759
  row1, col1, row2, col2 = row_col_notation(args)
775
760
  return if [row1, col1, row2, col2].include?(nil)
776
761
 
777
762
  # Ignore max print area since this is the same as no print area for Excel.
778
- if row1 == 0 && col1 == 0 && row2 == ROW_MAX - 1 && col2 == COL_MAX - 1
779
- return
780
- end
763
+ return if row1 == 0 && col1 == 0 && row2 == ROW_MAX - 1 && col2 == COL_MAX - 1
781
764
 
782
765
  # Build up the print area range "=Sheet2!R1C1:R2C1"
783
766
  @page_setup.print_area = convert_name_area(row1, col1, row2, col2)
@@ -788,12 +771,12 @@ module Writexlsx
788
771
  #
789
772
  def zoom=(scale)
790
773
  # Confine the scale to Excel's range
791
- if scale < 10 or scale > 400
792
- # carp "Zoom factor scale outside range: 10 <= zoom <= 400"
793
- @zoom = 100
794
- else
795
- @zoom = scale.to_i
796
- end
774
+ @zoom = if scale < 10 or scale > 400
775
+ # carp "Zoom factor scale outside range: 10 <= zoom <= 400"
776
+ 100
777
+ else
778
+ scale.to_i
779
+ end
797
780
  end
798
781
 
799
782
  # This method is deprecated. use zoom=().
@@ -823,23 +806,23 @@ module Writexlsx
823
806
  #
824
807
  def set_print_scale(scale = 100)
825
808
  put_deprecate_message("#{self}.set_print_scale")
826
- self::print_scale = (scale)
809
+ self.print_scale = (scale)
827
810
  end
828
811
 
829
- #
830
- # Set the option to print the worksheet in black and white.
831
- #
832
- def print_black_and_white
833
- @page_setup.black_white = true
812
+ #
813
+ # Set the option to print the worksheet in black and white.
814
+ #
815
+ def print_black_and_white
816
+ @page_setup.black_white = true
834
817
  end
835
818
 
836
- #
837
- # Causes the write() method to treat integers with a leading zero as a string.
838
- # This ensures that any leading zeros such, as in zip codes, are maintained.
839
- #
840
- def keep_leading_zeros(flag = true)
841
- @leading_zeros = !!flag
842
- end
819
+ #
820
+ # Causes the write() method to treat integers with a leading zero as a string.
821
+ # This ensures that any leading zeros such, as in zip codes, are maintained.
822
+ #
823
+ def keep_leading_zeros(flag = true)
824
+ @leading_zeros = !!flag
825
+ end
843
826
 
844
827
  #
845
828
  # Display the worksheet right to left for some eastern versions of Excel.
@@ -852,7 +835,7 @@ module Writexlsx
852
835
  # Hide cell zero values.
853
836
  #
854
837
  def hide_zero(flag = true)
855
- @show_zeros = !flag
838
+ @show_zeros = !flag
856
839
  end
857
840
 
858
841
  #
@@ -877,7 +860,7 @@ module Writexlsx
877
860
 
878
861
  def set_start_page(page_start)
879
862
  put_deprecate_message("#{self}.set_start_page")
880
- self::start_page = page_start
863
+ self.start_page = page_start
881
864
  end
882
865
 
883
866
  #
@@ -893,6 +876,7 @@ module Writexlsx
893
876
  # Check for a cell reference in A1 notation and substitute row and column
894
877
  row_col_args = row_col_notation(args)
895
878
  token = row_col_args[2] || ''
879
+ token = token.to_s if token.instance_of?(Time)
896
880
 
897
881
  # Match an array ref.
898
882
  if token.respond_to?(:to_ary)
@@ -916,13 +900,13 @@ module Writexlsx
916
900
  write_blank(*row_col_args)
917
901
  elsif @workbook.strings_to_urls
918
902
  # Match http, https or ftp URL
919
- if token =~ %r|\A[fh]tt?ps?://|
903
+ if token =~ %r{\A[fh]tt?ps?://}
920
904
  write_url(*args)
921
905
  # Match mailto:
922
- elsif token =~ %r|\Amailto:|
906
+ elsif token =~ /\Amailto:/
923
907
  write_url(*args)
924
908
  # Match internal or external sheet link
925
- elsif token =~ %r!\A(?:in|ex)ternal:!
909
+ elsif token =~ /\A(?:in|ex)ternal:/
926
910
  write_url(*args)
927
911
  else
928
912
  write_string(*args)
@@ -1054,7 +1038,7 @@ module Writexlsx
1054
1038
  check_dimensions(row, col)
1055
1039
  store_row_col_max_min_values(row, col)
1056
1040
 
1057
- fragments, length = rich_strings_fragments(rich_strings)
1041
+ fragments, _length = rich_strings_fragments(rich_strings)
1058
1042
  # can't allow 2 formats in a row
1059
1043
  return -4 unless fragments
1060
1044
 
@@ -1128,11 +1112,11 @@ module Writexlsx
1128
1112
  store_row_col_max_min_values(row2, col2)
1129
1113
 
1130
1114
  # Define array range
1131
- if row1 == row2 && col1 == col2
1132
- range = xl_rowcol_to_cell(row1, col1)
1133
- else
1134
- range ="#{xl_rowcol_to_cell(row1, col1)}:#{xl_rowcol_to_cell(row2, col2)}"
1135
- end
1115
+ range = if row1 == row2 && col1 == col2
1116
+ xl_rowcol_to_cell(row1, col1)
1117
+ else
1118
+ "#{xl_rowcol_to_cell(row1, col1)}:#{xl_rowcol_to_cell(row2, col2)}"
1119
+ end
1136
1120
 
1137
1121
  # Remove array formula braces and the leading =.
1138
1122
  formula = formula.sub(/^\{(.*)\}$/, '\1').sub(/^=/, '')
@@ -1151,6 +1135,7 @@ module Writexlsx
1151
1135
  (row1..row2).each do |row|
1152
1136
  (col1..col2).each do |col|
1153
1137
  next if row == row1 && col == col1
1138
+
1154
1139
  write_number(row, col, 0, xf)
1155
1140
  end
1156
1141
  end
@@ -1186,7 +1171,6 @@ module Writexlsx
1186
1171
 
1187
1172
  val = val ? 1 : 0 # Boolean value.
1188
1173
  # xf : cell format.
1189
- type = 'l' # The data type
1190
1174
 
1191
1175
  # Check that row and col are valid and store max and min values
1192
1176
  check_dimensions(row, col)
@@ -1225,15 +1209,15 @@ module Writexlsx
1225
1209
  format.set_format_properties(params)
1226
1210
  end
1227
1211
  # keep original value of cell
1228
- if cell_data.is_a? FormulaCellData
1229
- value = "=#{cell_data.token}"
1230
- elsif cell_data.is_a? FormulaArrayCellData
1231
- value = "{=#{cell_data.token}}"
1232
- elsif cell_data.is_a? StringCellData
1233
- value = @workbook.shared_strings.string(cell_data.data[:sst_id])
1234
- else
1235
- value = cell_data.data
1236
- end
1212
+ value = if cell_data.is_a? FormulaCellData
1213
+ "=#{cell_data.token}"
1214
+ elsif cell_data.is_a? FormulaArrayCellData
1215
+ "{=#{cell_data.token}}"
1216
+ elsif cell_data.is_a? StringCellData
1217
+ @workbook.shared_strings.string(cell_data.data[:sst_id])
1218
+ else
1219
+ cell_data.data
1220
+ end
1237
1221
  write(row, col, value, format)
1238
1222
  end
1239
1223
  end
@@ -1250,7 +1234,7 @@ module Writexlsx
1250
1234
  raise WriteXLSXInsufficientArgumentError if [row_first, col_first, row_last, col_last, params].include?(nil)
1251
1235
 
1252
1236
  # Swap last row/col with first row/col as necessary
1253
- row_first, row_last = row_last, row_first if row_first > row_last
1237
+ row_first, row_last = row_last, row_first if row_first > row_last
1254
1238
  col_first, col_last = col_last, col_first if col_first > col_last
1255
1239
 
1256
1240
  # Check that column number is valid and store the max value
@@ -1309,12 +1293,10 @@ module Writexlsx
1309
1293
  hyperlink = Hyperlink.factory(url, str, tip)
1310
1294
  store_hyperlink(row, col, hyperlink)
1311
1295
 
1312
- if hyperlinks_count > 65_530
1313
- raise "URL '#{url}' added but URL exceeds Excel's limit of 65,530 URLs per worksheet."
1314
- end
1296
+ raise "URL '#{url}' added but URL exceeds Excel's limit of 65,530 URLs per worksheet." if hyperlinks_count > 65_530
1315
1297
 
1316
1298
  # Add the default URL format.
1317
- xf = @default_url_format unless xf
1299
+ xf ||= @default_url_format
1318
1300
 
1319
1301
  # Write the hyperlink string.
1320
1302
  write_string(row, col, hyperlink.str, xf)
@@ -1359,7 +1341,7 @@ module Writexlsx
1359
1341
  row, col, chart, *options = row_col_notation(args)
1360
1342
  raise WriteXLSXInsufficientArgumentError if [row, col, chart].include?(nil)
1361
1343
 
1362
- if options.first.class == Hash
1344
+ if options.first.instance_of?(Hash)
1363
1345
  params = options.first
1364
1346
  x_offset = params[:x_offset]
1365
1347
  y_offset = params[:y_offset]
@@ -1404,7 +1386,7 @@ module Writexlsx
1404
1386
  row, col, image, *options = row_col_notation(args)
1405
1387
  raise WriteXLSXInsufficientArgumentError if [row, col, image].include?(nil)
1406
1388
 
1407
- if options.first.class == Hash
1389
+ if options.first.instance_of?(Hash)
1408
1390
  # Newer hash bashed options
1409
1391
  params = options.first
1410
1392
  x_offset = params[:x_offset]
@@ -1443,7 +1425,7 @@ module Writexlsx
1443
1425
  row, col, formula, format, *pairs = row_col_notation(args)
1444
1426
  raise WriteXLSXInsufficientArgumentError if [row, col].include?(nil)
1445
1427
 
1446
- raise "Odd number of elements in pattern/replacement list" unless pairs.size % 2 == 0
1428
+ raise "Odd number of elements in pattern/replacement list" unless pairs.size.even?
1447
1429
  raise "Not a valid formula" unless formula.respond_to?(:to_ary)
1448
1430
 
1449
1431
  tokens = formula.join("\t").split("\t")
@@ -1454,7 +1436,7 @@ module Writexlsx
1454
1436
  value = pairs.pop
1455
1437
  pairs.pop
1456
1438
  end
1457
- while !pairs.empty?
1439
+ until pairs.empty?
1458
1440
  pattern = pairs.shift
1459
1441
  replace = pairs.shift
1460
1442
 
@@ -1475,6 +1457,7 @@ module Writexlsx
1475
1457
  #
1476
1458
  def set_row(*args)
1477
1459
  return unless args[0]
1460
+
1478
1461
  row = args[0]
1479
1462
  height = args[1] || @default_height
1480
1463
  xf = args[2]
@@ -1541,9 +1524,7 @@ module Writexlsx
1541
1524
  @row_size_changed = 1
1542
1525
  end
1543
1526
 
1544
- if ptrue?(zero_height)
1545
- @default_row_zeroed = 1
1546
- end
1527
+ @default_row_zeroed = 1 if ptrue?(zero_height)
1547
1528
  end
1548
1529
 
1549
1530
  #
@@ -1560,7 +1541,7 @@ module Writexlsx
1560
1541
  raise "Can't merge single cell" if row_first == row_last && col_first == col_last
1561
1542
 
1562
1543
  # Swap last row/col with first row/col as necessary
1563
- row_first, row_last = row_last, row_first if row_first > row_last
1544
+ row_first, row_last = row_last, row_first if row_first > row_last
1564
1545
  col_first, col_last = col_last, col_first if col_first > col_last
1565
1546
 
1566
1547
  # Check that the data range is valid and store the max and min values.
@@ -1683,7 +1664,7 @@ module Writexlsx
1683
1664
  # into a worksheet.
1684
1665
  #
1685
1666
  def insert_button(*args)
1686
- @buttons_array << button_params(*(row_col_notation(args)))
1667
+ @buttons_array << button_params(*row_col_notation(args))
1687
1668
  @has_vml = 1
1688
1669
  end
1689
1670
 
@@ -1705,11 +1686,7 @@ module Writexlsx
1705
1686
  # Set the option to hide gridlines on the screen and the printed page.
1706
1687
  #
1707
1688
  def hide_gridlines(option = 1)
1708
- if option == 2
1709
- @screen_gridlines = false
1710
- else
1711
- @screen_gridlines = true
1712
- end
1689
+ @screen_gridlines = (option != 2)
1713
1690
 
1714
1691
  @page_setup.hide_gridlines(option)
1715
1692
  end
@@ -1743,7 +1720,7 @@ module Writexlsx
1743
1720
  def fit_to_pages(width = 1, height = 1)
1744
1721
  @page_setup.fit_page = true
1745
1722
  @page_setup.fit_width = width
1746
- @page_setup.fit_height = height
1723
+ @page_setup.fit_height = height
1747
1724
  @page_setup.page_setup_changed = true
1748
1725
  end
1749
1726
 
@@ -1779,9 +1756,7 @@ module Writexlsx
1779
1756
 
1780
1757
  tokens = extract_filter_tokens(expression)
1781
1758
 
1782
- unless tokens.size == 3 || tokens.size == 7
1783
- raise "Incorrect number of tokens in expression '#{expression}'"
1784
- end
1759
+ raise "Incorrect number of tokens in expression '#{expression}'" unless tokens.size == 3 || tokens.size == 7
1785
1760
 
1786
1761
  tokens = parse_filter_expression(expression, tokens)
1787
1762
 
@@ -1891,7 +1866,7 @@ module Writexlsx
1891
1866
  def prepare_chart(index, chart_id, drawing_id) # :nodoc:
1892
1867
  drawing_type = 1
1893
1868
 
1894
- row, col, chart, x_offset, y_offset, x_scale, y_scale, anchor = @charts[index]
1869
+ row, col, chart, x_offset, y_offset, x_scale, y_scale, anchor = @charts[index]
1895
1870
  chart.id = chart_id - 1
1896
1871
  x_scale ||= 0
1897
1872
  y_scale ||= 0
@@ -1910,14 +1885,14 @@ module Writexlsx
1910
1885
 
1911
1886
  # Create a Drawing object to use with worksheet unless one already exists.
1912
1887
  drawing = Drawing.new(drawing_type, dimensions, 0, 0, name, nil, anchor, drawing_rel_index, 0, nil, 0)
1913
- if !drawings?
1888
+ if drawings?
1889
+ @drawings.add_drawing_object(drawing)
1890
+ else
1914
1891
  @drawings = Drawings.new
1915
1892
  @drawings.add_drawing_object(drawing)
1916
1893
  @drawings.embedded = 1
1917
1894
 
1918
- @external_drawing_links << ['/drawing', "../drawings/drawing#{drawing_id}.xml" ]
1919
- else
1920
- @drawings.add_drawing_object(drawing)
1895
+ @external_drawing_links << ['/drawing', "../drawings/drawing#{drawing_id}.xml"]
1921
1896
  end
1922
1897
  @drawing_links << ['/chart', "../charts/chart#{chart_id}.xml"]
1923
1898
  end
@@ -1933,31 +1908,31 @@ module Writexlsx
1933
1908
 
1934
1909
  # Iterate through the table data.
1935
1910
  data = []
1936
- (row_start .. row_end).each do |row_num|
1911
+ (row_start..row_end).each do |row_num|
1937
1912
  # Store nil if row doesn't exist.
1938
- if !@cell_data_table[row_num]
1913
+ unless @cell_data_table[row_num]
1939
1914
  data << nil
1940
1915
  next
1941
1916
  end
1942
1917
 
1943
- (col_start .. col_end).each do |col_num|
1944
- if cell = @cell_data_table[row_num][col_num]
1918
+ (col_start..col_end).each do |col_num|
1919
+ cell = @cell_data_table[row_num][col_num]
1920
+ if cell
1945
1921
  data << cell.data
1946
1922
  else
1947
- # Store nil if col doesn't exist.
1948
1923
  data << nil
1949
1924
  end
1950
1925
  end
1951
1926
  end
1952
1927
 
1953
- return data
1928
+ data
1954
1929
  end
1955
1930
 
1956
1931
  #
1957
1932
  # Calculate the vertices that define the position of a graphical object within
1958
1933
  # the worksheet in pixels.
1959
1934
  #
1960
- def position_object_pixels(col_start, row_start, x1, y1, width, height, anchor = nil) #:nodoc:
1935
+ def position_object_pixels(col_start, row_start, x1, y1, width, height, anchor = nil) # :nodoc:
1961
1936
  # Adjust start column for negative offsets.
1962
1937
  while x1 < 0 && col_start > 0
1963
1938
  x1 += size_col(col_start - 1)
@@ -1975,22 +1950,22 @@ module Writexlsx
1975
1950
  y1 = 0 if y1 < 0
1976
1951
 
1977
1952
  # Calculate the absolute x offset of the top-left vertex.
1978
- if @col_size_changed
1979
- x_abs = (0 .. col_start-1).inject(0) {|sum, col| sum += size_col(col, anchor)}
1980
- else
1981
- # Optimisation for when the column widths haven't changed.
1982
- x_abs = @default_col_pixels * col_start
1983
- end
1953
+ x_abs = if @col_size_changed
1954
+ (0..col_start - 1).inject(0) { |sum, col| sum += size_col(col, anchor) }
1955
+ else
1956
+ # Optimisation for when the column widths haven't changed.
1957
+ @default_col_pixels * col_start
1958
+ end
1984
1959
  x_abs += x1
1985
1960
 
1986
1961
  # Calculate the absolute y offset of the top-left vertex.
1987
1962
  # Store the column change to allow optimisations.
1988
- if @row_size_changed
1989
- y_abs = (0 .. row_start-1).inject(0) {|sum, row| sum += size_row(row, anchor)}
1990
- else
1991
- # Optimisation for when the row heights haven't changed.
1992
- y_abs = @default_row_pixels * row_start
1993
- end
1963
+ y_abs = if @row_size_changed
1964
+ (0..row_start - 1).inject(0) { |sum, row| sum += size_row(row, anchor) }
1965
+ else
1966
+ # Optimisation for when the row heights haven't changed.
1967
+ @default_row_pixels * row_start
1968
+ end
1994
1969
  y_abs += y1
1995
1970
 
1996
1971
  # Adjust start column for offsets that are greater than the col width.
@@ -2043,7 +2018,7 @@ module Writexlsx
2043
2018
  #
2044
2019
  # Write the cell value <v> element.
2045
2020
  #
2046
- def write_cell_value(value = '') #:nodoc:
2021
+ def write_cell_value(value = '') # :nodoc:
2047
2022
  return write_cell_formula('=NA()') if !value.nil? && value.is_a?(Float) && value.nan?
2048
2023
 
2049
2024
  value ||= ''
@@ -2054,24 +2029,24 @@ module Writexlsx
2054
2029
  #
2055
2030
  # Write the cell formula <f> element.
2056
2031
  #
2057
- def write_cell_formula(formula = '') #:nodoc:
2032
+ def write_cell_formula(formula = '') # :nodoc:
2058
2033
  @writer.data_element('f', formula)
2059
2034
  end
2060
2035
 
2061
2036
  #
2062
2037
  # Write the cell array formula <f> element.
2063
2038
  #
2064
- def write_cell_array_formula(formula, range) #:nodoc:
2039
+ def write_cell_array_formula(formula, range) # :nodoc:
2065
2040
  @writer.data_element(
2066
2041
  'f', formula,
2067
2042
  [
2068
- ['t', 'array'],
2043
+ %w[t array],
2069
2044
  ['ref', range]
2070
2045
  ]
2071
2046
  )
2072
2047
  end
2073
2048
 
2074
- def date_1904? #:nodoc:
2049
+ def date_1904? # :nodoc:
2075
2050
  @workbook.date_1904?
2076
2051
  end
2077
2052
 
@@ -2083,9 +2058,9 @@ module Writexlsx
2083
2058
  # Convert from an Excel internal colour index to a XML style #RRGGBB index
2084
2059
  # based on the default or user defined values in the Workbook palette.
2085
2060
  #
2086
- def palette_color(index) #:nodoc:
2061
+ def palette_color(index) # :nodoc:
2087
2062
  if index.to_s =~ /^#([0-9A-F]{6})$/i
2088
- "FF#{$1.upcase}"
2063
+ "FF#{::Regexp.last_match(1).upcase}"
2089
2064
  else
2090
2065
  "FF#{super(index)}"
2091
2066
  end
@@ -2125,7 +2100,7 @@ module Writexlsx
2125
2100
  # The VML o:idmap data id contains a comma separated range when there is
2126
2101
  # more than one 1024 block of comments, like this: data="1,2".
2127
2102
  data = "#{vml_data_id}"
2128
- (1 .. num_comments_block).each do |i|
2103
+ (1..num_comments_block).each do |i|
2129
2104
  data += ",#{vml_data_id + i}"
2130
2105
  end
2131
2106
  @vml_data_id = data
@@ -2183,11 +2158,7 @@ module Writexlsx
2183
2158
  # set the vba name for the worksheet
2184
2159
  #
2185
2160
  def set_vba_name(vba_codename = nil)
2186
- if vba_codename
2187
- @vba_codename = vba_codename
2188
- else
2189
- @vba_codename = @name
2190
- end
2161
+ @vba_codename = vba_codename || @name
2191
2162
  end
2192
2163
 
2193
2164
  #
@@ -2195,33 +2166,29 @@ module Writexlsx
2195
2166
  #
2196
2167
  def ignore_errors(ignores)
2197
2168
  # List of valid input parameters.
2198
- valid_parameter_keys = [
2199
- :number_stored_as_text,
2200
- :eval_error,
2201
- :formula_differs,
2202
- :formula_range,
2203
- :formula_unlocked,
2204
- :empty_cell_reference,
2205
- :list_data_validation,
2206
- :calculated_column,
2207
- :two_digit_text_year
2169
+ valid_parameter_keys = %i[
2170
+ number_stored_as_text
2171
+ eval_error
2172
+ formula_differs
2173
+ formula_range
2174
+ formula_unlocked
2175
+ empty_cell_reference
2176
+ list_data_validation
2177
+ calculated_column
2178
+ two_digit_text_year
2208
2179
  ]
2209
2180
 
2210
- unless (ignores.keys - valid_parameter_keys).empty?
2211
- raise "Unknown parameter '#{ignores.key - valid_parameter_keys}' in ignore_errors()."
2212
- end
2181
+ raise "Unknown parameter '#{ignores.key - valid_parameter_keys}' in ignore_errors()." unless (ignores.keys - valid_parameter_keys).empty?
2213
2182
 
2214
2183
  @ignore_errors = ignores
2215
2184
  end
2216
2185
 
2217
- def write_ext(url)
2186
+ def write_ext(url, &block)
2218
2187
  attributes = [
2219
2188
  ['xmlns:x14', "#{OFFICE_URL}spreadsheetml/2009/9/main"],
2220
2189
  ['uri', url]
2221
2190
  ]
2222
- @writer.tag_elements('ext', attributes) do
2223
- yield
2224
- end
2191
+ @writer.tag_elements('ext', attributes, &block)
2225
2192
  end
2226
2193
 
2227
2194
  def write_sparkline_groups
@@ -2279,11 +2246,7 @@ module Writexlsx
2279
2246
 
2280
2247
  def cell_format_of_rich_string(rich_strings)
2281
2248
  # If the last arg is a format we use it as the cell format.
2282
- if rich_strings[-1].respond_to?(:xf_index)
2283
- rich_strings.pop
2284
- else
2285
- nil
2286
- end
2249
+ rich_strings.pop if rich_strings[-1].respond_to?(:xf_index)
2287
2250
  end
2288
2251
 
2289
2252
  #
@@ -2310,12 +2273,12 @@ module Writexlsx
2310
2273
  last = 'format'
2311
2274
  else
2312
2275
  # Token is a string.
2313
- if last != 'format'
2314
- # If previous token wasn't a format add one before the string.
2315
- fragments << default << token
2316
- else
2276
+ if last == 'format'
2317
2277
  # If previous token was a format just add the string.
2318
2278
  fragments << token
2279
+ else
2280
+ # If previous token wasn't a format add one before the string.
2281
+ fragments << default << token
2319
2282
  end
2320
2283
 
2321
2284
  length += token.size # Keep track of actual string length.
@@ -2332,7 +2295,7 @@ module Writexlsx
2332
2295
  writer = Package::XMLWriterSimple.new
2333
2296
 
2334
2297
  # If the first token is a string start the <r> element.
2335
- writer.start_tag('r') if !fragments[0].respond_to?(:xf_index)
2298
+ writer.start_tag('r') unless fragments[0].respond_to?(:xf_index)
2336
2299
 
2337
2300
  # Write the XML elements for the format string fragments.
2338
2301
  fragments.each do |token|
@@ -2354,9 +2317,10 @@ module Writexlsx
2354
2317
 
2355
2318
  # Pad out the rest of the area with formatted blank cells.
2356
2319
  def write_formatted_blank_to_area(row_first, row_last, col_first, col_last, format)
2357
- (row_first .. row_last).each do |row|
2358
- (col_first .. col_last).each do |col|
2320
+ (row_first..row_last).each do |row|
2321
+ (col_first..col_last).each do |col|
2359
2322
  next if row == row_first && col == col_first
2323
+
2360
2324
  write_blank(row, col, format)
2361
2325
  end
2362
2326
  end
@@ -2367,13 +2331,13 @@ module Writexlsx
2367
2331
  # whitespace groups. The only tricky part is to extract string tokens that
2368
2332
  # contain whitespace and/or quoted double quotes (Excel's escaped quotes).
2369
2333
  #
2370
- def extract_filter_tokens(expression = nil) #:nodoc:
2334
+ def extract_filter_tokens(expression = nil) # :nodoc:
2371
2335
  return [] unless expression
2372
2336
 
2373
2337
  tokens = []
2374
2338
  str = expression
2375
2339
  while str =~ /"(?:[^"]|"")*"|\S+/
2376
- tokens << $&
2340
+ tokens << ::Regexp.last_match(0)
2377
2341
  str = $~.post_match
2378
2342
  end
2379
2343
 
@@ -2398,11 +2362,11 @@ module Writexlsx
2398
2362
  # Converts the tokens of a possibly conditional expression into 1 or 2
2399
2363
  # sub expressions for further parsing.
2400
2364
  #
2401
- def parse_filter_expression(expression, tokens) #:nodoc:
2365
+ def parse_filter_expression(expression, tokens) # :nodoc:
2402
2366
  # The number of tokens will be either 3 (for 1 expression)
2403
2367
  # or 7 (for 2 expressions).
2404
2368
  #
2405
- if (tokens.size == 7)
2369
+ if tokens.size == 7
2406
2370
  conditional = tokens[3]
2407
2371
  if conditional =~ /^(and|&&)$/
2408
2372
  conditional = 0
@@ -2410,7 +2374,7 @@ module Writexlsx
2410
2374
  conditional = 1
2411
2375
  else
2412
2376
  raise "Token '#{conditional}' is not a valid conditional " +
2413
- "in filter expression '#{expression}'"
2377
+ "in filter expression '#{expression}'"
2414
2378
  end
2415
2379
  expression_1 = parse_filter_tokens(expression, tokens[0..2])
2416
2380
  expression_2 = parse_filter_tokens(expression, tokens[4..6])
@@ -2423,7 +2387,7 @@ module Writexlsx
2423
2387
  #
2424
2388
  # Parse the 3 tokens of a filter expression and return the operator and token.
2425
2389
  #
2426
- def parse_filter_tokens(expression, tokens) #:nodoc:
2390
+ def parse_filter_tokens(expression, tokens) # :nodoc:
2427
2391
  operators = {
2428
2392
  '==' => 2,
2429
2393
  '=' => 2,
@@ -2438,7 +2402,7 @@ module Writexlsx
2438
2402
  '<' => 1,
2439
2403
  '<=' => 3,
2440
2404
  '>' => 4,
2441
- '>=' => 6,
2405
+ '>=' => 6
2442
2406
  }
2443
2407
 
2444
2408
  operator = operators[tokens[1]]
@@ -2447,40 +2411,38 @@ module Writexlsx
2447
2411
  # Special handling of "Top" filter expressions.
2448
2412
  if tokens[0] =~ /^top|bottom$/i
2449
2413
  value = tokens[1]
2450
- if (value.to_s =~ /\D/ or value.to_i < 1 or value.to_i > 500)
2414
+ if value.to_s =~ /\D/ or value.to_i < 1 or value.to_i > 500
2451
2415
  raise "The value '#{value}' in expression '#{expression}' " +
2452
- "must be in the range 1 to 500"
2416
+ "must be in the range 1 to 500"
2453
2417
  end
2454
2418
  token.downcase!
2455
- if (token != 'items' and token != '%')
2419
+ if token != 'items' and token != '%'
2456
2420
  raise "The type '#{token}' in expression '#{expression}' " +
2457
- "must be either 'items' or '%'"
2421
+ "must be either 'items' or '%'"
2458
2422
  end
2459
2423
 
2460
- if (tokens[0] =~ /^top$/i)
2461
- operator = 30
2462
- else
2463
- operator = 32
2464
- end
2424
+ operator = if tokens[0] =~ /^top$/i
2425
+ 30
2426
+ else
2427
+ 32
2428
+ end
2465
2429
 
2466
- if (tokens[2] == '%')
2467
- operator += 1
2468
- end
2430
+ operator += 1 if tokens[2] == '%'
2469
2431
 
2470
2432
  token = value
2471
2433
  end
2472
2434
 
2473
- if (not operator and tokens[0])
2435
+ if !operator and tokens[0]
2474
2436
  raise "Token '#{tokens[1]}' is not a valid operator " +
2475
- "in filter expression '#{expression}'"
2437
+ "in filter expression '#{expression}'"
2476
2438
  end
2477
2439
 
2478
2440
  # Special handling for Blanks/NonBlanks.
2479
- if (token.to_s =~ /^blanks|nonblanks$/i)
2441
+ if token.to_s =~ /^blanks|nonblanks$/i
2480
2442
  # Only allow Equals or NotEqual in this context.
2481
- if (operator != 2 and operator != 5)
2443
+ if operator != 2 and operator != 5
2482
2444
  raise "The operator '#{tokens[1]}' in expression '#{expression}' " +
2483
- "is not valid in relation to Blanks/NonBlanks'"
2445
+ "is not valid in relation to Blanks/NonBlanks'"
2484
2446
  end
2485
2447
 
2486
2448
  token.downcase!
@@ -2488,25 +2450,19 @@ module Writexlsx
2488
2450
  # The operator should always be 2 (=) to flag a "simple" equality in
2489
2451
  # the binary record. Therefore we convert <> to =.
2490
2452
  if token == 'blanks'
2491
- if operator == 5
2492
- token = ' '
2493
- end
2453
+ token = ' ' if operator == 5
2454
+ elsif operator == 5
2455
+ operator = 2
2456
+ token = 'blanks'
2494
2457
  else
2495
- if operator == 5
2496
- operator = 2
2497
- token = 'blanks'
2498
- else
2499
- operator = 5
2500
- token = ' '
2501
- end
2458
+ operator = 5
2459
+ token = ' '
2502
2460
  end
2503
2461
  end
2504
2462
 
2505
2463
  # if the string token contains an Excel match character then change the
2506
2464
  # operator type to indicate a non "simple" equality.
2507
- if (operator == 2 and token.to_s =~ /[*?]/)
2508
- operator = 22
2509
- end
2465
+ operator = 22 if operator == 2 and token.to_s =~ /[*?]/
2510
2466
 
2511
2467
  [operator, token]
2512
2468
  end
@@ -2518,7 +2474,7 @@ module Writexlsx
2518
2474
  # 2. Sorts the list.
2519
2475
  # 3. Removes 0 from the list if present.
2520
2476
  #
2521
- def sort_pagebreaks(*args) #:nodoc:
2477
+ def sort_pagebreaks(*args) # :nodoc:
2522
2478
  return [] if args.empty?
2523
2479
 
2524
2480
  breaks = args.uniq.sort
@@ -2538,17 +2494,17 @@ module Writexlsx
2538
2494
  # Calculate the vertices that define the position of a graphical object within
2539
2495
  # the worksheet in EMUs.
2540
2496
  #
2541
- def position_object_emus(col_start, row_start, x1, y1, width, height, anchor = nil) #:nodoc:
2497
+ def position_object_emus(col_start, row_start, x1, y1, width, height, anchor = nil) # :nodoc:
2542
2498
  col_start, row_start, x1, y1, col_end, row_end, x2, y2, x_abs, y_abs =
2543
2499
  position_object_pixels(col_start, row_start, x1, y1, width, height, anchor)
2544
2500
 
2545
2501
  # Convert the pixel values to EMUs. See above.
2546
- x1 = (0.5 + 9_525 * x1).to_i
2547
- y1 = (0.5 + 9_525 * y1).to_i
2548
- x2 = (0.5 + 9_525 * x2).to_i
2549
- y2 = (0.5 + 9_525 * y2).to_i
2550
- x_abs = (0.5 + 9_525 * x_abs).to_i
2551
- y_abs = (0.5 + 9_525 * y_abs).to_i
2502
+ x1 = (0.5 + (9_525 * x1)).to_i
2503
+ y1 = (0.5 + (9_525 * y1)).to_i
2504
+ x2 = (0.5 + (9_525 * x2)).to_i
2505
+ y2 = (0.5 + (9_525 * y2)).to_i
2506
+ x_abs = (0.5 + (9_525 * x_abs)).to_i
2507
+ y_abs = (0.5 + (9_525 * y_abs)).to_i
2552
2508
 
2553
2509
  [col_start, row_start, x1, y1, col_end, row_end, x2, y2, x_abs, y_abs]
2554
2510
  end
@@ -2559,19 +2515,19 @@ module Writexlsx
2559
2515
  # we use the default value. A hidden column is treated as having a width of
2560
2516
  # zero unless it has the special "object_position" of 4 (size with cells).
2561
2517
  #
2562
- def size_col(col, anchor = 0) #:nodoc:
2518
+ def size_col(col, anchor = 0) # :nodoc:
2563
2519
  # Look up the cell value to see if it has been changed.
2564
2520
  if @col_sizes[col]
2565
2521
  width, hidden = @col_sizes[col]
2566
2522
 
2567
2523
  # Convert to pixels.
2568
- if hidden == 1 && anchor != 4
2569
- pixels = 0
2570
- elsif width < 1
2571
- pixels = (width * (MAX_DIGIT_WIDTH + PADDING) + 0.5).to_i
2572
- else
2573
- pixels = (width * MAX_DIGIT_WIDTH + 0.5).to_i + PADDING
2574
- end
2524
+ pixels = if hidden == 1 && anchor != 4
2525
+ 0
2526
+ elsif width < 1
2527
+ ((width * (MAX_DIGIT_WIDTH + PADDING)) + 0.5).to_i
2528
+ else
2529
+ ((width * MAX_DIGIT_WIDTH) + 0.5).to_i + PADDING
2530
+ end
2575
2531
  else
2576
2532
  pixels = @default_col_pixels
2577
2533
  end
@@ -2584,16 +2540,16 @@ module Writexlsx
2584
2540
  # treated as having a height of zero unless it has the special
2585
2541
  # "object_position" of 4 (size with cells).
2586
2542
  #
2587
- def size_row(row, anchor = 0) #:nodoc:
2543
+ def size_row(row, anchor = 0) # :nodoc:
2588
2544
  # Look up the cell value to see if it has been changed
2589
2545
  if @row_sizes[row]
2590
2546
  height, hidden = @row_sizes[row]
2591
2547
 
2592
- if hidden == 1 && anchor != 4
2593
- pixels = 0
2594
- else
2595
- pixels = (4 / 3.0 * height).to_i
2596
- end
2548
+ pixels = if hidden == 1 && anchor != 4
2549
+ 0
2550
+ else
2551
+ (4 / 3.0 * height).to_i
2552
+ end
2597
2553
  else
2598
2554
  pixels = (4 / 3.0 * @default_row_height).to_i
2599
2555
  end
@@ -2608,12 +2564,10 @@ module Writexlsx
2608
2564
  padding = 5.0
2609
2565
 
2610
2566
  if pixels <= 12
2611
- width = pixels / (max_digit_width + padding)
2567
+ pixels / (max_digit_width + padding)
2612
2568
  else
2613
- width = (pixels - padding) / max_digit_width
2569
+ (pixels - padding) / max_digit_width
2614
2570
  end
2615
-
2616
- width
2617
2571
  end
2618
2572
 
2619
2573
  #
@@ -2621,19 +2575,19 @@ module Writexlsx
2621
2575
  #
2622
2576
  def pixels_to_height(pixels)
2623
2577
  height = 0.75 * pixels
2624
- height = height.to_i if ( height - height.to_i).abs < 0.1
2578
+ height = height.to_i if (height - height.to_i).abs < 0.1
2625
2579
  height
2626
2580
  end
2627
2581
 
2628
2582
  #
2629
2583
  # Set up image/drawings.
2630
2584
  #
2631
- def prepare_image(index, image_id, drawing_id, width, height, name, image_type, x_dpi = 96, y_dpi = 96, md5 = nil) #:nodoc:
2585
+ def prepare_image(index, image_id, drawing_id, width, height, name, image_type, x_dpi = 96, y_dpi = 96, md5 = nil) # :nodoc:
2632
2586
  x_dpi ||= 96
2633
2587
  y_dpi ||= 96
2634
2588
  drawing_type = 2
2635
2589
 
2636
- row, col, image, x_offset, y_offset,
2590
+ row, col, _image, x_offset, y_offset,
2637
2591
  x_scale, y_scale, url, tip, anchor, description, decorative = @images[index]
2638
2592
 
2639
2593
  width *= x_scale
@@ -2650,28 +2604,24 @@ module Writexlsx
2650
2604
 
2651
2605
  # Create a Drawing object to use with worksheet unless one already exists.
2652
2606
  drawing = Drawing.new(drawing_type, dimensions, width, height, name, nil, anchor, 0, 0, tip, decorative)
2653
- if !drawings?
2607
+ if drawings?
2608
+ drawings = @drawings
2609
+ else
2654
2610
  drawings = Drawings.new
2655
2611
  drawings.embedded = 1
2656
2612
 
2657
2613
  @drawings = drawings
2658
2614
 
2659
2615
  @external_drawing_links << ['/drawing', "../drawings/drawing#{drawing_id}.xml"]
2660
- else
2661
- drawings = @drawings
2662
2616
  end
2663
2617
  drawings.add_drawing_object(drawing)
2664
2618
 
2665
- if description
2666
- drawing.description = description
2667
- end
2619
+ drawing.description = description if description
2668
2620
 
2669
2621
  if url
2670
2622
  rel_type = '/hyperlink'
2671
2623
  target_mode = 'External'
2672
- if url =~ %r!^[fh]tt?ps?://! || url =~ /^mailto:/
2673
- target = escape_url(url)
2674
- end
2624
+ target = escape_url(url) if url =~ %r{^[fh]tt?ps?://} || url =~ /^mailto:/
2675
2625
  if url =~ /^external:/
2676
2626
  target = escape_url(url.sub(/^external:/, ''))
2677
2627
 
@@ -2679,11 +2629,11 @@ module Writexlsx
2679
2629
  target = target.gsub(/#/, '%23')
2680
2630
 
2681
2631
  # Prefix absolute paths (not relative) with file:///
2682
- if target =~ /^\w:/ || target =~ /^\\\\/
2683
- target = "file:///#{target}"
2684
- else
2685
- target = target.gsub(/\\/, '/')
2686
- end
2632
+ target = if target =~ /^\w:/ || target =~ /^\\\\/
2633
+ "file:///#{target}"
2634
+ else
2635
+ target.gsub(/\\/, '/')
2636
+ end
2687
2637
  end
2688
2638
 
2689
2639
  if url =~ /^internal:/
@@ -2697,15 +2647,11 @@ Ignoring URL #{target} where link or anchor > 255 characters since it exceeds Ex
2697
2647
  EOS
2698
2648
  end
2699
2649
 
2700
- if target && !@drawing_rels[url]
2701
- @drawing_links << [rel_type, target, target_mode]
2702
- end
2650
+ @drawing_links << [rel_type, target, target_mode] if target && !@drawing_rels[url]
2703
2651
  drawing.url_rel_index = drawing_rel_index(url)
2704
2652
  end
2705
2653
 
2706
- if !@drawing_rels[md5]
2707
- @drawing_links << ['/image', "../media/image#{image_id}.#{image_type}"]
2708
- end
2654
+ @drawing_links << ['/image', "../media/image#{image_id}.#{image_type}"] unless @drawing_rels[md5]
2709
2655
  drawing.rel_index = drawing_rel_index(md5)
2710
2656
  end
2711
2657
  public :prepare_image
@@ -2713,11 +2659,9 @@ EOS
2713
2659
  def prepare_header_image(image_id, width, height, name, image_type, position, x_dpi, y_dpi, md5)
2714
2660
  # Strip the extension from the filename.
2715
2661
  body = name.dup
2716
- body[/\.[^\.]+$/, 0] = ''
2662
+ body[/\.[^.]+$/, 0] = ''
2717
2663
 
2718
- if !@vml_drawing_rels[md5]
2719
- @vml_drawing_links << ['/image', "../media/image#{image_id}.#{image_type}" ]
2720
- end
2664
+ @vml_drawing_links << ['/image', "../media/image#{image_id}.#{image_type}"] unless @vml_drawing_rels[md5]
2721
2665
 
2722
2666
  ref_id = get_vml_drawing_rel_index(md5)
2723
2667
  @header_images_array << [width, height, body, position, x_dpi, y_dpi, ref_id]
@@ -2753,9 +2697,7 @@ EOS
2753
2697
  # Check for a cell reference in A1 notation and substitute row and column.
2754
2698
  row_start, column_start, shape, x_offset, y_offset, x_scale, y_scale, anchor =
2755
2699
  row_col_notation(args)
2756
- if [row_start, column_start, shape].include?(nil)
2757
- raise "Insufficient arguments in insert_shape()"
2758
- end
2700
+ raise "Insufficient arguments in insert_shape()" if [row_start, column_start, shape].include?(nil)
2759
2701
 
2760
2702
  shape.set_position(
2761
2703
  row_start, column_start, x_offset, y_offset,
@@ -2778,14 +2720,14 @@ EOS
2778
2720
  # Allow lookup of entry into shape array by shape ID.
2779
2721
  @shape_hash[shape.id] = shape.element = @shapes.size
2780
2722
 
2781
- if ptrue?(shape.stencil)
2782
- # Insert a copy of the shape, not a reference so that the shape is
2783
- # used as a stencil. Previously stamped copies don't get modified
2784
- # if the stencil is modified.
2785
- insert = shape.dup
2786
- else
2787
- insert = shape
2788
- end
2723
+ insert = if ptrue?(shape.stencil)
2724
+ # Insert a copy of the shape, not a reference so that the shape is
2725
+ # used as a stencil. Previously stamped copies don't get modified
2726
+ # if the stencil is modified.
2727
+ shape.dup
2728
+ else
2729
+ shape
2730
+ end
2789
2731
 
2790
2732
  # For connectors change x/y coords based on location of connected shapes.
2791
2733
  insert.auto_locate_connectors(@shapes, @shape_hash)
@@ -2839,29 +2781,25 @@ EOS
2839
2781
  button.font = { :_caption => caption }
2840
2782
 
2841
2783
  # Set the macro name.
2842
- if params[:macro]
2843
- button.macro = "[0]!#{params[:macro]}"
2844
- else
2845
- button.macro = "[0]!Button#{button_number}_Click"
2846
- end
2784
+ button.macro = if params[:macro]
2785
+ "[0]!#{params[:macro]}"
2786
+ else
2787
+ "[0]!Button#{button_number}_Click"
2788
+ end
2847
2789
 
2848
2790
  # Ensure that a width and height have been set.
2849
2791
  default_width = @default_col_pixels
2850
2792
  default_height = @default_row_pixels
2851
- params[:width] = default_width if !params[:width]
2852
- params[:height] = default_height if !params[:height]
2793
+ params[:width] = default_width unless params[:width]
2794
+ params[:height] = default_height unless params[:height]
2853
2795
 
2854
2796
  # Set the x/y offsets.
2855
- params[:x_offset] = 0 if !params[:x_offset]
2856
- params[:y_offset] = 0 if !params[:y_offset]
2797
+ params[:x_offset] = 0 unless params[:x_offset]
2798
+ params[:y_offset] = 0 unless params[:y_offset]
2857
2799
 
2858
2800
  # Scale the size of the button box if required.
2859
- if params[:x_scale]
2860
- params[:width] = params[:width] * params[:x_scale]
2861
- end
2862
- if params[:y_scale]
2863
- params[:height] = params[:height] * params[:y_scale]
2864
- end
2801
+ params[:width] = params[:width] * params[:x_scale] if params[:x_scale]
2802
+ params[:height] = params[:height] * params[:y_scale] if params[:y_scale]
2865
2803
 
2866
2804
  # Round the dimensions to the nearest pixel.
2867
2805
  params[:width] = (0.5 + params[:width]).to_i
@@ -2891,7 +2829,7 @@ EOS
2891
2829
  #
2892
2830
  # Based on the algorithm provided by Daniel Rentz of OpenOffice.
2893
2831
  #
2894
- def encode_password(password) #:nodoc:
2832
+ def encode_password(password) # :nodoc:
2895
2833
  i = 0
2896
2834
  chars = password.split(//)
2897
2835
  count = chars.size
@@ -2900,12 +2838,12 @@ EOS
2900
2838
  i += 1
2901
2839
  char = char.ord << i
2902
2840
  low_15 = char & 0x7fff
2903
- high_15 = char & 0x7fff << 15
2841
+ high_15 = char & (0x7fff << 15)
2904
2842
  high_15 = high_15 >> 15
2905
2843
  char = low_15 | high_15
2906
2844
  end
2907
2845
 
2908
- encoded_password = 0x0000
2846
+ encoded_password = 0x0000
2909
2847
  chars.each { |c| encoded_password ^= c }
2910
2848
  encoded_password ^= count
2911
2849
  encoded_password ^= 0xCE4B
@@ -2916,7 +2854,7 @@ EOS
2916
2854
  #
2917
2855
  # Write the <worksheet> element. This is the root element of Worksheet.
2918
2856
  #
2919
- def write_worksheet_attributes #:nodoc:
2857
+ def write_worksheet_attributes # :nodoc:
2920
2858
  schema = 'http://schemas.openxmlformats.org/'
2921
2859
  attributes = [
2922
2860
  ['xmlns', "#{schema}spreadsheetml/2006/main"],
@@ -2934,7 +2872,7 @@ EOS
2934
2872
  #
2935
2873
  # Write the <sheetPr> element for Sheet level properties.
2936
2874
  #
2937
- def write_sheet_pr #:nodoc:
2875
+ def write_sheet_pr # :nodoc:
2938
2876
  return unless tab_outline_fit? || vba_codename? || filter_on?
2939
2877
 
2940
2878
  attributes = []
@@ -2959,14 +2897,14 @@ EOS
2959
2897
  #
2960
2898
  # Write the <pageSetUpPr> element.
2961
2899
  #
2962
- def write_page_set_up_pr #:nodoc:
2963
- @writer.empty_tag('pageSetUpPr', [ ['fitToPage', 1] ]) if fit_page?
2900
+ def write_page_set_up_pr # :nodoc:
2901
+ @writer.empty_tag('pageSetUpPr', [['fitToPage', 1]]) if fit_page?
2964
2902
  end
2965
2903
 
2966
2904
  # Write the <dimension> element. This specifies the range of cells in the
2967
2905
  # worksheet. As a special case, empty spreadsheets use 'A1' as a range.
2968
2906
  #
2969
- def write_dimension #:nodoc:
2907
+ def write_dimension # :nodoc:
2970
2908
  if !@dim_rowmin && !@dim_colmin
2971
2909
  # If the min dims are undefined then no dimensions have been set
2972
2910
  # and we use the default 'A1'.
@@ -2992,16 +2930,17 @@ EOS
2992
2930
  cell_2 = xl_rowcol_to_cell(@dim_rowmax, @dim_colmax)
2993
2931
  ref = cell_1 + ':' + cell_2
2994
2932
  end
2995
- @writer.empty_tag('dimension', [ ['ref', ref] ])
2933
+ @writer.empty_tag('dimension', [['ref', ref]])
2996
2934
  end
2935
+
2997
2936
  #
2998
2937
  # Write the <sheetViews> element.
2999
2938
  #
3000
- def write_sheet_views #:nodoc:
2939
+ def write_sheet_views # :nodoc:
3001
2940
  @writer.tag_elements('sheetViews', []) { write_sheet_view }
3002
2941
  end
3003
2942
 
3004
- def write_sheet_view #:nodoc:
2943
+ def write_sheet_view # :nodoc:
3005
2944
  attributes = []
3006
2945
  # Hide screen gridlines if required.
3007
2946
  attributes << ['showGridLines', 0] unless @screen_gridlines
@@ -3023,7 +2962,7 @@ EOS
3023
2962
 
3024
2963
  # Set the page view/layout mode if required.
3025
2964
  # TODO. Add pageBreakPreview mode when requested.
3026
- attributes << ['view', 'pageLayout'] if page_view?
2965
+ attributes << %w[view pageLayout] if page_view?
3027
2966
 
3028
2967
  # Set the zoom level.
3029
2968
  if @zoom != 100
@@ -3046,14 +2985,14 @@ EOS
3046
2985
  #
3047
2986
  # Write the <selection> elements.
3048
2987
  #
3049
- def write_selections #:nodoc:
2988
+ def write_selections # :nodoc:
3050
2989
  @selections.each { |selection| write_selection(*selection) }
3051
2990
  end
3052
2991
 
3053
2992
  #
3054
2993
  # Write the <selection> element.
3055
2994
  #
3056
- def write_selection(pane, active_cell, sqref) #:nodoc:
2995
+ def write_selection(pane, active_cell, sqref) # :nodoc:
3057
2996
  attributes = []
3058
2997
  attributes << ['pane', pane] if pane
3059
2998
  attributes << ['activeCell', active_cell] if active_cell
@@ -3065,44 +3004,36 @@ EOS
3065
3004
  #
3066
3005
  # Write the <sheetFormatPr> element.
3067
3006
  #
3068
- def write_sheet_format_pr #:nodoc:
3069
- base_col_width = 10
3070
-
3007
+ def write_sheet_format_pr # :nodoc:
3071
3008
  attributes = [
3072
3009
  ['defaultRowHeight', @default_row_height]
3073
3010
  ]
3074
- if @default_row_height != @original_row_height
3075
- attributes << ['customHeight', 1]
3076
- end
3011
+ attributes << ['customHeight', 1] if @default_row_height != @original_row_height
3077
3012
 
3078
- if ptrue?(@default_row_zeroed)
3079
- attributes << ['zeroHeight', 1]
3080
- end
3013
+ attributes << ['zeroHeight', 1] if ptrue?(@default_row_zeroed)
3081
3014
 
3082
3015
  attributes << ['outlineLevelRow', @outline_row_level] if @outline_row_level > 0
3083
3016
  attributes << ['outlineLevelCol', @outline_col_level] if @outline_col_level > 0
3084
- if @excel_version == 2010
3085
- attributes << ['x14ac:dyDescent', '0.25']
3086
- end
3017
+ attributes << ['x14ac:dyDescent', '0.25'] if @excel_version == 2010
3087
3018
  @writer.empty_tag('sheetFormatPr', attributes)
3088
3019
  end
3089
3020
 
3090
3021
  #
3091
3022
  # Write the <cols> element and <col> sub elements.
3092
3023
  #
3093
- def write_cols #:nodoc:
3024
+ def write_cols # :nodoc:
3094
3025
  # Exit unless some column have been formatted.
3095
3026
  return if @colinfo.empty?
3096
3027
 
3097
3028
  @writer.tag_elements('cols') do
3098
- @colinfo.keys.sort.each {|col| write_col_info(@colinfo[col]) }
3029
+ @colinfo.keys.sort.each { |col| write_col_info(@colinfo[col]) }
3099
3030
  end
3100
3031
  end
3101
3032
 
3102
3033
  #
3103
3034
  # Write the <col> element.
3104
3035
  #
3105
- def write_col_info(args) #:nodoc:
3036
+ def write_col_info(args) # :nodoc:
3106
3037
  @writer.empty_tag('col', col_info_attributes(args))
3107
3038
  end
3108
3039
 
@@ -3120,16 +3051,14 @@ EOS
3120
3051
  custom_width = false if width.nil? && hidden == 0
3121
3052
  custom_width = false if width == 8.43
3122
3053
 
3123
- width = hidden == 0 ? @default_col_width : 0 unless width
3054
+ width ||= hidden == 0 ? @default_col_width : 0
3124
3055
 
3125
3056
  # Convert column width from user units to character width.
3126
- if width && width < 1
3127
- width =
3128
- ((width * (MAX_DIGIT_WIDTH + PADDING) + 0.5).to_i / MAX_DIGIT_WIDTH.to_f * 256).to_i / 256.0
3129
- else
3130
- width =
3131
- (((width * MAX_DIGIT_WIDTH + 0.5).to_i + PADDING).to_i/ MAX_DIGIT_WIDTH.to_f * 256).to_i / 256.0
3132
- end
3057
+ width = if width && width < 1
3058
+ (((width * (MAX_DIGIT_WIDTH + PADDING)) + 0.5).to_i / MAX_DIGIT_WIDTH.to_f * 256).to_i / 256.0
3059
+ else
3060
+ ((((width * MAX_DIGIT_WIDTH) + 0.5).to_i + PADDING).to_i / MAX_DIGIT_WIDTH.to_f * 256).to_i / 256.0
3061
+ end
3133
3062
  width = width.to_i if width - width.to_i == 0
3134
3063
 
3135
3064
  attributes = [
@@ -3149,22 +3078,22 @@ EOS
3149
3078
  #
3150
3079
  # Write the <sheetData> element.
3151
3080
  #
3152
- def write_sheet_data #:nodoc:
3153
- if !@dim_rowmin
3081
+ def write_sheet_data # :nodoc:
3082
+ if @dim_rowmin
3083
+ @writer.tag_elements('sheetData') { write_rows }
3084
+ else
3154
3085
  # If the dimensions aren't defined then there is no data to write.
3155
3086
  @writer.empty_tag('sheetData')
3156
- else
3157
- @writer.tag_elements('sheetData') { write_rows }
3158
3087
  end
3159
3088
  end
3160
3089
 
3161
3090
  #
3162
3091
  # Write out the worksheet data as a series of rows and cells.
3163
3092
  #
3164
- def write_rows #:nodoc:
3093
+ def write_rows # :nodoc:
3165
3094
  calculate_spans
3166
3095
 
3167
- (@dim_rowmin .. @dim_rowmax).each do |row_num|
3096
+ (@dim_rowmin..@dim_rowmax).each do |row_num|
3168
3097
  # Skip row if it doesn't contain row formatting or cell data.
3169
3098
  next if not_contain_formatting_or_data?(row_num)
3170
3099
 
@@ -3177,8 +3106,6 @@ EOS
3177
3106
  write_row_element(row_num, span, *args) do
3178
3107
  write_cell_column_dimension(row_num)
3179
3108
  end
3180
- elsif @comments[row_num]
3181
- write_empty_row(row_num, span, *(@set_rows[row_num]))
3182
3109
  else
3183
3110
  # Row attributes only.
3184
3111
  write_empty_row(row_num, span, *(@set_rows[row_num]))
@@ -3191,7 +3118,7 @@ EOS
3191
3118
  end
3192
3119
 
3193
3120
  def write_cell_column_dimension(row_num) # :nodoc:
3194
- (@dim_colmin .. @dim_colmax).each do |col_num|
3121
+ (@dim_colmin..@dim_colmax).each do |col_num|
3195
3122
  @cell_data_table[row_num][col_num].write_cell if @cell_data_table[row_num][col_num]
3196
3123
  end
3197
3124
  end
@@ -3199,21 +3126,19 @@ EOS
3199
3126
  #
3200
3127
  # Write the <row> element.
3201
3128
  #
3202
- def write_row_element(*args) # :nodoc:
3203
- @writer.tag_elements('row', row_attributes(args)) do
3204
- yield
3205
- end
3129
+ def write_row_element(*args, &block) # :nodoc:
3130
+ @writer.tag_elements('row', row_attributes(args), &block)
3206
3131
  end
3207
3132
 
3208
3133
  #
3209
3134
  # Write and empty <row> element, i.e., attributes only, no cell data.
3210
3135
  #
3211
- def write_empty_row(*args) #:nodoc:
3136
+ def write_empty_row(*args) # :nodoc:
3212
3137
  @writer.empty_tag('row', row_attributes(args))
3213
3138
  end
3214
3139
 
3215
3140
  def row_attributes(args)
3216
- r, spans, height, format, hidden, level, collapsed, empty_row = args
3141
+ r, spans, height, format, hidden, level, collapsed, _empty_row = args
3217
3142
  height ||= @default_row_height
3218
3143
  hidden ||= 0
3219
3144
  level ||= 0
@@ -3230,36 +3155,34 @@ EOS
3230
3155
  attributes << ['outlineLevel', level] if ptrue?(level)
3231
3156
  attributes << ['collapsed', 1] if ptrue?(collapsed)
3232
3157
 
3233
- if @excel_version == 2010
3234
- attributes << ['x14ac:dyDescent', '0.25']
3235
- end
3158
+ attributes << ['x14ac:dyDescent', '0.25'] if @excel_version == 2010
3236
3159
  attributes
3237
3160
  end
3238
3161
 
3239
3162
  #
3240
3163
  # Write the frozen or split <pane> elements.
3241
3164
  #
3242
- def write_panes #:nodoc:
3165
+ def write_panes # :nodoc:
3243
3166
  return if @panes.empty?
3244
3167
 
3245
3168
  if @panes[4] == 2
3246
3169
  write_split_panes
3247
3170
  else
3248
- write_freeze_panes(*(@panes))
3171
+ write_freeze_panes(*@panes)
3249
3172
  end
3250
3173
  end
3251
3174
 
3252
3175
  #
3253
3176
  # Write the <pane> element for freeze panes.
3254
3177
  #
3255
- def write_freeze_panes(row, col, top_row, left_col, type) #:nodoc:
3178
+ def write_freeze_panes(row, col, top_row, left_col, type) # :nodoc:
3256
3179
  y_split = row
3257
3180
  x_split = col
3258
3181
  top_left_cell = xl_rowcol_to_cell(top_row, left_col)
3259
3182
 
3260
3183
  # Move user cell selection to the panes.
3261
3184
  unless @selections.empty?
3262
- dummy, active_cell, sqref = @selections[0]
3185
+ _dummy, active_cell, sqref = @selections[0]
3263
3186
  @selections = []
3264
3187
  end
3265
3188
 
@@ -3268,13 +3191,13 @@ EOS
3268
3191
  active_pane = set_active_pane_and_cell_selections(row, col, row, col, active_cell, sqref)
3269
3192
 
3270
3193
  # Set the pane type.
3271
- if type == 0
3272
- state = 'frozen'
3273
- elsif type == 1
3274
- state = 'frozenSplit'
3275
- else
3276
- state = 'split'
3277
- end
3194
+ state = if type == 0
3195
+ 'frozen'
3196
+ elsif type == 1
3197
+ 'frozenSplit'
3198
+ else
3199
+ 'split'
3200
+ end
3278
3201
 
3279
3202
  attributes = []
3280
3203
  attributes << ['xSplit', x_split] if x_split > 0
@@ -3291,35 +3214,35 @@ EOS
3291
3214
  #
3292
3215
  # See also, implementers note for split_panes().
3293
3216
  #
3294
- def write_split_panes #:nodoc:
3217
+ def write_split_panes # :nodoc:
3295
3218
  row, col, top_row, left_col = @panes
3296
3219
  has_selection = false
3297
3220
  y_split = row
3298
3221
  x_split = col
3299
3222
 
3300
3223
  # Move user cell selection to the panes.
3301
- if !@selections.empty?
3302
- dummy, active_cell, sqref = @selections[0]
3224
+ unless @selections.empty?
3225
+ _dummy, active_cell, sqref = @selections[0]
3303
3226
  @selections = []
3304
3227
  has_selection = true
3305
3228
  end
3306
3229
 
3307
3230
  # Convert the row and col to 1/20 twip units with padding.
3308
- y_split = (20 * y_split + 300).to_i if y_split > 0
3231
+ y_split = ((20 * y_split) + 300).to_i if y_split > 0
3309
3232
  x_split = calculate_x_split_width(x_split) if x_split > 0
3310
3233
 
3311
3234
  # For non-explicit topLeft definitions, estimate the cell offset based
3312
3235
  # on the pixels dimensions. This is only a workaround and doesn't take
3313
3236
  # adjusted cell dimensions into account.
3314
3237
  if top_row == row && left_col == col
3315
- top_row = (0.5 + (y_split - 300) / 20 / 15).to_i
3316
- left_col = (0.5 + (x_split - 390) / 20 / 3 * 4 / 64).to_i
3238
+ top_row = (0.5 + ((y_split - 300) / 20 / 15)).to_i
3239
+ left_col = (0.5 + ((x_split - 390) / 20 / 3 * 4 / 64)).to_i
3317
3240
  end
3318
3241
 
3319
3242
  top_left_cell = xl_rowcol_to_cell(top_row, left_col)
3320
3243
 
3321
3244
  # If there is no selection set the active cell to the top left cell.
3322
- if !has_selection
3245
+ unless has_selection
3323
3246
  active_cell = top_left_cell
3324
3247
  sqref = top_left_cell
3325
3248
  end
@@ -3339,13 +3262,13 @@ EOS
3339
3262
  #
3340
3263
  # Convert column width from user units to pane split width.
3341
3264
  #
3342
- def calculate_x_split_width(width) #:nodoc:
3265
+ def calculate_x_split_width(width) # :nodoc:
3343
3266
  # Convert to pixels.
3344
- if width < 1
3345
- pixels = int(width * 12 + 0.5)
3346
- else
3347
- pixels = (width * MAX_DIGIT_WIDTH + 0.5).to_i + PADDING
3348
- end
3267
+ pixels = if width < 1
3268
+ int((width * 12) + 0.5)
3269
+ else
3270
+ ((width * MAX_DIGIT_WIDTH) + 0.5).to_i + PADDING
3271
+ end
3349
3272
 
3350
3273
  # Convert to points.
3351
3274
  points = pixels * 3 / 4
@@ -3360,17 +3283,17 @@ EOS
3360
3283
  #
3361
3284
  # Write the <sheetCalcPr> element for the worksheet calculation properties.
3362
3285
  #
3363
- def write_sheet_calc_pr #:nodoc:
3364
- @writer.empty_tag('sheetCalcPr', [ ['fullCalcOnLoad', 1] ])
3286
+ def write_sheet_calc_pr # :nodoc:
3287
+ @writer.empty_tag('sheetCalcPr', [['fullCalcOnLoad', 1]])
3365
3288
  end
3366
3289
 
3367
3290
  #
3368
3291
  # Write the <phoneticPr> element.
3369
3292
  #
3370
- def write_phonetic_pr #:nodoc:
3293
+ def write_phonetic_pr # :nodoc:
3371
3294
  attributes = [
3372
3295
  ['fontId', 0],
3373
- ['type', 'noConversion']
3296
+ %w[type noConversion]
3374
3297
  ]
3375
3298
 
3376
3299
  @writer.empty_tag('phoneticPr', attributes)
@@ -3379,82 +3302,80 @@ EOS
3379
3302
  #
3380
3303
  # Write the <pageMargins> element.
3381
3304
  #
3382
- def write_page_margins #:nodoc:
3305
+ def write_page_margins # :nodoc:
3383
3306
  @page_setup.write_page_margins(@writer)
3384
3307
  end
3385
3308
 
3386
3309
  #
3387
3310
  # Write the <pageSetup> element.
3388
3311
  #
3389
- def write_page_setup #:nodoc:
3312
+ def write_page_setup # :nodoc:
3390
3313
  @page_setup.write_page_setup(@writer)
3391
3314
  end
3392
3315
 
3393
3316
  #
3394
3317
  # Write the <mergeCells> element.
3395
3318
  #
3396
- def write_merge_cells #:nodoc:
3319
+ def write_merge_cells # :nodoc:
3397
3320
  write_some_elements('mergeCells', @merge) do
3398
3321
  @merge.each { |merged_range| write_merge_cell(merged_range) }
3399
3322
  end
3400
3323
  end
3401
3324
 
3402
- def write_some_elements(tag, container)
3325
+ def write_some_elements(tag, container, &block)
3403
3326
  return if container.empty?
3404
3327
 
3405
- @writer.tag_elements(tag, [ ['count', container.size] ]) do
3406
- yield
3407
- end
3328
+ @writer.tag_elements(tag, [['count', container.size]], &block)
3408
3329
  end
3409
3330
 
3410
3331
  #
3411
3332
  # Write the <mergeCell> element.
3412
3333
  #
3413
- def write_merge_cell(merged_range) #:nodoc:
3334
+ def write_merge_cell(merged_range) # :nodoc:
3414
3335
  row_min, col_min, row_max, col_max = merged_range
3415
3336
 
3416
3337
  # Convert the merge dimensions to a cell range.
3417
3338
  cell_1 = xl_rowcol_to_cell(row_min, col_min)
3418
3339
  cell_2 = xl_rowcol_to_cell(row_max, col_max)
3419
3340
 
3420
- @writer.empty_tag('mergeCell', [ ['ref', "#{cell_1}:#{cell_2}"] ])
3341
+ @writer.empty_tag('mergeCell', [['ref', "#{cell_1}:#{cell_2}"]])
3421
3342
  end
3422
3343
 
3423
3344
  #
3424
3345
  # Write the <printOptions> element.
3425
3346
  #
3426
- def write_print_options #:nodoc:
3347
+ def write_print_options # :nodoc:
3427
3348
  @page_setup.write_print_options(@writer)
3428
3349
  end
3429
3350
 
3430
3351
  #
3431
3352
  # Write the <headerFooter> element.
3432
3353
  #
3433
- def write_header_footer #:nodoc:
3354
+ def write_header_footer # :nodoc:
3434
3355
  @page_setup.write_header_footer(@writer, excel2003_style?)
3435
3356
  end
3436
3357
 
3437
3358
  #
3438
3359
  # Write the <rowBreaks> element.
3439
3360
  #
3440
- def write_row_breaks #:nodoc:
3361
+ def write_row_breaks # :nodoc:
3441
3362
  write_breaks('rowBreaks')
3442
3363
  end
3443
3364
 
3444
3365
  #
3445
3366
  # Write the <colBreaks> element.
3446
3367
  #
3447
- def write_col_breaks #:nodoc:
3368
+ def write_col_breaks # :nodoc:
3448
3369
  write_breaks('colBreaks')
3449
3370
  end
3450
3371
 
3451
3372
  def write_breaks(tag) # :nodoc:
3452
3373
  case tag
3453
3374
  when 'rowBreaks'
3454
- page_breaks = sort_pagebreaks(*(@page_setup.hbreaks))
3375
+ page_breaks = sort_pagebreaks(*@page_setup.hbreaks)
3455
3376
  max = 16383
3456
3377
  when 'colBreaks'
3457
- page_breaks = sort_pagebreaks(*(@page_setup.vbreaks))
3378
+ page_breaks = sort_pagebreaks(*@page_setup.vbreaks)
3458
3379
  max = 1048575
3459
3380
  else
3460
3381
  raise "Invalid parameter '#{tag}' in write_breaks."
@@ -3472,10 +3393,11 @@ EOS
3472
3393
  page_breaks.each { |num| write_brk(num, max) }
3473
3394
  end
3474
3395
  end
3396
+
3475
3397
  #
3476
3398
  # Write the <brk> element.
3477
3399
  #
3478
- def write_brk(id, max) #:nodoc:
3400
+ def write_brk(id, max) # :nodoc:
3479
3401
  attributes = [
3480
3402
  ['id', id],
3481
3403
  ['max', max],
@@ -3488,7 +3410,7 @@ EOS
3488
3410
  #
3489
3411
  # Write the <autoFilter> element.
3490
3412
  #
3491
- def write_auto_filter #:nodoc:
3413
+ def write_auto_filter # :nodoc:
3492
3414
  return unless autofilter_ref?
3493
3415
 
3494
3416
  attributes = [
@@ -3510,10 +3432,10 @@ EOS
3510
3432
  # Function to iterate through the columns that form part of an autofilter
3511
3433
  # range and write the appropriate filters.
3512
3434
  #
3513
- def write_autofilters #:nodoc:
3435
+ def write_autofilters # :nodoc:
3514
3436
  col1, col2 = @filter_range
3515
3437
 
3516
- (col1 .. col2).each do |col|
3438
+ (col1..col2).each do |col|
3517
3439
  # Skip if column doesn't have an active filter.
3518
3440
  next unless @filter_cols[col]
3519
3441
 
@@ -3529,8 +3451,8 @@ EOS
3529
3451
  #
3530
3452
  # Write the <filterColumn> element.
3531
3453
  #
3532
- def write_filter_column(col_id, type, *filters) #:nodoc:
3533
- @writer.tag_elements('filterColumn', [ ['colId', col_id] ]) do
3454
+ def write_filter_column(col_id, type, *filters) # :nodoc:
3455
+ @writer.tag_elements('filterColumn', [['colId', col_id]]) do
3534
3456
  if type == 1
3535
3457
  # Type == 1 is the new XLSX style filter.
3536
3458
  write_filters(*filters)
@@ -3544,13 +3466,11 @@ EOS
3544
3466
  #
3545
3467
  # Write the <filters> element.
3546
3468
  #
3547
- def write_filters(*filters) #:nodoc:
3469
+ def write_filters(*filters) # :nodoc:
3548
3470
  non_blanks = filters.reject { |filter| filter.to_s =~ /^blanks$/i }
3549
3471
  attributes = []
3550
3472
 
3551
- if filters != non_blanks
3552
- attributes = [ ['blank', 1] ]
3553
- end
3473
+ attributes = [['blank', 1]] if filters != non_blanks
3554
3474
 
3555
3475
  if filters.size == 1 && non_blanks.empty?
3556
3476
  # Special case for blank cells only.
@@ -3566,14 +3486,14 @@ EOS
3566
3486
  #
3567
3487
  # Write the <filter> element.
3568
3488
  #
3569
- def write_filter(val) #:nodoc:
3570
- @writer.empty_tag('filter', [ ['val', val] ])
3489
+ def write_filter(val) # :nodoc:
3490
+ @writer.empty_tag('filter', [['val', val]])
3571
3491
  end
3572
3492
 
3573
3493
  #
3574
3494
  # Write the <customFilters> element.
3575
3495
  #
3576
- def write_custom_filters(*tokens) #:nodoc:
3496
+ def write_custom_filters(*tokens) # :nodoc:
3577
3497
  if tokens.size == 2
3578
3498
  # One filter expression only.
3579
3499
  @writer.tag_elements('customFilters') { write_custom_filter(*tokens) }
@@ -3581,11 +3501,11 @@ EOS
3581
3501
  # Two filter expressions.
3582
3502
 
3583
3503
  # Check if the "join" operand is "and" or "or".
3584
- if tokens[2] == 0
3585
- attributes = [ ['and', 1] ]
3586
- else
3587
- attributes = [ ['and', 0] ]
3588
- end
3504
+ attributes = if tokens[2] == 0
3505
+ [['and', 1]]
3506
+ else
3507
+ [['and', 0]]
3508
+ end
3589
3509
 
3590
3510
  # Write the two custom filters.
3591
3511
  @writer.tag_elements('customFilters', attributes) do
@@ -3598,7 +3518,7 @@ EOS
3598
3518
  #
3599
3519
  # Write the <customFilter> element.
3600
3520
  #
3601
- def write_custom_filter(operator, val) #:nodoc:
3521
+ def write_custom_filter(operator, val) # :nodoc:
3602
3522
  operators = {
3603
3523
  1 => 'lessThan',
3604
3524
  2 => 'equal',
@@ -3628,8 +3548,9 @@ EOS
3628
3548
  # Process any sored hyperlinks in row/col order and write the <hyperlinks>
3629
3549
  # element. The attributes are different for internal and external links.
3630
3550
  #
3631
- def write_hyperlinks #:nodoc:
3551
+ def write_hyperlinks # :nodoc:
3632
3552
  return unless @hyperlinks
3553
+
3633
3554
  hlink_attributes = []
3634
3555
  @hyperlinks.keys.sort.each do |row_num|
3635
3556
  # Sort the hyperlinks into column order.
@@ -3642,11 +3563,9 @@ EOS
3642
3563
  # If the cell isn't a string then we have to add the url as
3643
3564
  # the string to display
3644
3565
  if ptrue?(@cell_data_table) &&
3645
- ptrue?(@cell_data_table[row_num]) &&
3646
- ptrue?(@cell_data_table[row_num][col_num])
3647
- if @cell_data_table[row_num][col_num].display_url_string?
3648
- link.display_on
3649
- end
3566
+ ptrue?(@cell_data_table[row_num]) &&
3567
+ ptrue?(@cell_data_table[row_num][col_num]) && @cell_data_table[row_num][col_num].display_url_string?
3568
+ link.display_on
3650
3569
  end
3651
3570
 
3652
3571
  if link.respond_to?(:external_hyper_link)
@@ -3672,7 +3591,7 @@ EOS
3672
3591
  #
3673
3592
  # Write the <tabColor> element.
3674
3593
  #
3675
- def write_tab_color #:nodoc:
3594
+ def write_tab_color # :nodoc:
3676
3595
  return unless tab_color?
3677
3596
 
3678
3597
  @writer.empty_tag(
@@ -3701,7 +3620,7 @@ EOS
3701
3620
  #
3702
3621
  # Write the <sheetProtection> element.
3703
3622
  #
3704
- def write_sheet_protection #:nodoc:
3623
+ def write_sheet_protection # :nodoc:
3705
3624
  return unless protect?
3706
3625
 
3707
3626
  attributes = []
@@ -3759,14 +3678,14 @@ EOS
3759
3678
  #
3760
3679
  # Write the <drawing> elements.
3761
3680
  #
3762
- def write_drawings #:nodoc:
3681
+ def write_drawings # :nodoc:
3763
3682
  increment_rel_id_and_write_r_id('drawing') if drawings?
3764
3683
  end
3765
3684
 
3766
3685
  #
3767
3686
  # Write the <legacyDrawing> element.
3768
3687
  #
3769
- def write_legacy_drawing #:nodoc:
3688
+ def write_legacy_drawing # :nodoc:
3770
3689
  increment_rel_id_and_write_r_id('legacyDrawing') if has_vml?
3771
3690
  end
3772
3691
 
@@ -3779,7 +3698,7 @@ EOS
3779
3698
  # Increment the relationship id for any drawings or comments.
3780
3699
  @rel_count += 1
3781
3700
 
3782
- attributes = [ ['r:id', "rId#{@rel_count}"] ]
3701
+ attributes = [['r:id', "rId#{@rel_count}"]]
3783
3702
  @writer.empty_tag('legacyDrawingHF', attributes)
3784
3703
  end
3785
3704
 
@@ -3801,7 +3720,7 @@ EOS
3801
3720
  #
3802
3721
  # Write the underline font element.
3803
3722
  #
3804
- def write_underline(writer, underline) #:nodoc:
3723
+ def write_underline(writer, underline) # :nodoc:
3805
3724
  writer.empty_tag('u', underline_attributes(underline))
3806
3725
  end
3807
3726
 
@@ -3811,7 +3730,7 @@ EOS
3811
3730
  def write_table_parts
3812
3731
  return if @tables.empty?
3813
3732
 
3814
- @writer.tag_elements('tableParts', [ ['count', tables_count] ]) do
3733
+ @writer.tag_elements('tableParts', [['count', tables_count]]) do
3815
3734
  tables_count.times { increment_rel_id_and_write_r_id('tablePart') }
3816
3735
  end
3817
3736
  end
@@ -3850,7 +3769,6 @@ EOS
3850
3769
  def write_ext_list_data_bars
3851
3770
  # Write the ext element.
3852
3771
  write_ext('{78C0D931-6437-407d-A8EE-F0AAD7539E65}') do
3853
-
3854
3772
  @writer.tag_elements('x14:conditionalFormattings') do
3855
3773
  # Write each of the Excel 2010 conditional formatting data bar elements.
3856
3774
  @data_bars_2010.each do |data_bar|
@@ -3860,16 +3778,16 @@ EOS
3860
3778
  end
3861
3779
  end
3862
3780
  end
3781
+
3863
3782
  #
3864
3783
  # Write the <x14:conditionalFormatting> element.
3865
3784
  #
3866
3785
  def write_conditional_formatting_2010(data_bar)
3867
3786
  xmlns_xm = 'http://schemas.microsoft.com/office/excel/2006/main'
3868
3787
 
3869
- attributes = [ ['xmlns:xm', xmlns_xm] ]
3788
+ attributes = [['xmlns:xm', xmlns_xm]]
3870
3789
 
3871
3790
  @writer.tag_elements('x14:conditionalFormatting', attributes) do
3872
-
3873
3791
  # Write the '<x14:cfRule element.
3874
3792
  write_x14_cf_rule(data_bar)
3875
3793
 
@@ -3881,26 +3799,21 @@ EOS
3881
3799
  write_x14_cfvo(data_bar[:x14_max_type], data_bar[:max_value])
3882
3800
 
3883
3801
  # Write the x14:borderColor element.
3884
- if !ptrue?(data_bar[:bar_no_border])
3885
- write_x14_border_color(data_bar[:bar_border_color])
3886
- end
3802
+ write_x14_border_color(data_bar[:bar_border_color]) unless ptrue?(data_bar[:bar_no_border])
3887
3803
 
3888
3804
  # Write the x14:negativeFillColor element.
3889
- if !ptrue?(data_bar[:bar_negative_color_same])
3890
- write_x14_negative_fill_color(data_bar[:bar_negative_color])
3891
- end
3805
+ write_x14_negative_fill_color(data_bar[:bar_negative_color]) unless ptrue?(data_bar[:bar_negative_color_same])
3892
3806
 
3893
3807
  # Write the x14:negativeBorderColor element.
3894
3808
  if !ptrue?(data_bar[:bar_no_border]) &&
3895
3809
  !ptrue?(data_bar[:bar_negative_border_color_same])
3896
3810
  write_x14_negative_border_color(
3897
- data_bar[:bar_negative_border_color])
3811
+ data_bar[:bar_negative_border_color]
3812
+ )
3898
3813
  end
3899
3814
 
3900
3815
  # Write the x14:axisColor element.
3901
- if data_bar[:bar_axis_position] != 'none'
3902
- write_x14_axis_color(data_bar[:bar_axis_color])
3903
- end
3816
+ write_x14_axis_color(data_bar[:bar_axis_color]) if data_bar[:bar_axis_position] != 'none'
3904
3817
 
3905
3818
  # Write closing elements.
3906
3819
  @writer.end_tag('x14:dataBar')
@@ -3915,9 +3828,9 @@ EOS
3915
3828
  # Write the <cfvo> element.
3916
3829
  #
3917
3830
  def write_x14_cfvo(type, value)
3918
- attributes = [ ['type', type ] ]
3831
+ attributes = [['type', type]]
3919
3832
 
3920
- if %w(min max autoMin autoMax).include?(type)
3833
+ if %w[min max autoMin autoMax].include?(type)
3921
3834
  @writer.empty_tag('x14:cfvo', attributes)
3922
3835
  else
3923
3836
  @writer.tag_elements('x14:cfvo', attributes) do
@@ -3939,7 +3852,6 @@ EOS
3939
3852
  ]
3940
3853
 
3941
3854
  @writer.start_tag('x14:cfRule', attributes)
3942
-
3943
3855
  end
3944
3856
 
3945
3857
  #
@@ -3954,32 +3866,22 @@ EOS
3954
3866
  ['maxLength', max_length]
3955
3867
  ]
3956
3868
 
3957
- attributes << ['border', 1] if !ptrue?(data_bar[:bar_no_border])
3869
+ attributes << ['border', 1] unless ptrue?(data_bar[:bar_no_border])
3958
3870
  attributes << ['gradient', 0] if ptrue?(data_bar[:bar_solid])
3959
3871
 
3960
- if data_bar[:bar_direction] == 'left'
3961
- attributes << ['direction', 'leftToRight']
3962
- end
3963
- if data_bar[:bar_direction] == 'right'
3964
- attributes << ['direction', 'rightToLeft']
3965
- end
3872
+ attributes << %w[direction leftToRight] if data_bar[:bar_direction] == 'left'
3873
+ attributes << %w[direction rightToLeft] if data_bar[:bar_direction] == 'right'
3966
3874
 
3967
- if ptrue?(data_bar[:bar_negative_color_same])
3968
- attributes << ['negativeBarColorSameAsPositive', 1]
3969
- end
3875
+ attributes << ['negativeBarColorSameAsPositive', 1] if ptrue?(data_bar[:bar_negative_color_same])
3970
3876
 
3971
3877
  if !ptrue?(data_bar[:bar_no_border]) &&
3972
3878
  !ptrue?(data_bar[:bar_negative_border_color_same])
3973
3879
  attributes << ['negativeBarBorderColorSameAsPositive', 0]
3974
3880
  end
3975
3881
 
3976
- if data_bar[:bar_axis_position] == 'middle'
3977
- attributes << ['axisPosition', 'middle']
3978
- end
3882
+ attributes << %w[axisPosition middle] if data_bar[:bar_axis_position] == 'middle'
3979
3883
 
3980
- if data_bar[:bar_axis_position] == 'none'
3981
- attributes << ['axisPosition', 'none']
3982
- end
3884
+ attributes << %w[axisPosition none] if data_bar[:bar_axis_position] == 'none'
3983
3885
 
3984
3886
  @writer.start_tag('x14:dataBar', attributes)
3985
3887
  end
@@ -3988,7 +3890,7 @@ EOS
3988
3890
  # Write the <x14:borderColor> element.
3989
3891
  #
3990
3892
  def write_x14_border_color(rgb)
3991
- attributes = [ ['rgb', rgb] ]
3893
+ attributes = [['rgb', rgb]]
3992
3894
 
3993
3895
  @writer.empty_tag('x14:borderColor', attributes)
3994
3896
  end
@@ -3997,7 +3899,7 @@ EOS
3997
3899
  # Write the <x14:negativeFillColor> element.
3998
3900
  #
3999
3901
  def write_x14_negative_fill_color(rgb)
4000
- attributes = [ ['rgb', rgb] ]
3902
+ attributes = [['rgb', rgb]]
4001
3903
 
4002
3904
  @writer.empty_tag('x14:negativeFillColor', attributes)
4003
3905
  end
@@ -4006,7 +3908,7 @@ EOS
4006
3908
  # Write the <x14:negativeBorderColor> element.
4007
3909
  #
4008
3910
  def write_x14_negative_border_color(rgb)
4009
- attributes = [ ['rgb', rgb] ]
3911
+ attributes = [['rgb', rgb]]
4010
3912
 
4011
3913
  @writer.empty_tag('x14:negativeBorderColor', attributes)
4012
3914
  end
@@ -4015,7 +3917,7 @@ EOS
4015
3917
  # Write the <x14:axisColor> element.
4016
3918
  #
4017
3919
  def write_x14_axis_color(rgb)
4018
- attributes = [ ['rgb', rgb] ]
3920
+ attributes = [['rgb', rgb]]
4019
3921
 
4020
3922
  @writer.empty_tag('x14:axisColor', attributes)
4021
3923
  end
@@ -4026,7 +3928,6 @@ EOS
4026
3928
  def write_ext_list_sparklines
4027
3929
  # Write the ext element.
4028
3930
  write_ext('{05C60535-1F16-4fd2-B633-F4F36F0B64E0}') do
4029
-
4030
3931
  # Write the x14:sparklineGroups element.
4031
3932
  write_sparkline_groups
4032
3933
  end
@@ -4038,7 +3939,7 @@ EOS
4038
3939
  def write_sparklines(sparkline)
4039
3940
  # Write the sparkline elements.
4040
3941
  @writer.tag_elements('x14:sparklines') do
4041
- (0..sparkline[:count]-1).each do |i|
3942
+ (0..sparkline[:count] - 1).each do |i|
4042
3943
  range = sparkline[:ranges][i]
4043
3944
  location = sparkline[:locations][i]
4044
3945
 
@@ -4052,14 +3953,14 @@ EOS
4052
3953
 
4053
3954
  def sparkline_groups_attributes # :nodoc:
4054
3955
  [
4055
- ['xmlns:xm', "#{OFFICE_URL}excel/2006/main"]
3956
+ ['xmlns:xm', "#{OFFICE_URL}excel/2006/main"]
4056
3957
  ]
4057
3958
  end
4058
3959
 
4059
3960
  #
4060
3961
  # Write the <dataValidations> element.
4061
3962
  #
4062
- def write_data_validations #:nodoc:
3963
+ def write_data_validations # :nodoc:
4063
3964
  write_some_elements('dataValidations', @validations) do
4064
3965
  @validations.each { |validation| validation.write_data_validation(@writer) }
4065
3966
  end
@@ -4068,7 +3969,7 @@ EOS
4068
3969
  #
4069
3970
  # Write the Worksheet conditional formats.
4070
3971
  #
4071
- def write_conditional_formats #:nodoc:
3972
+ def write_conditional_formats # :nodoc:
4072
3973
  @cond_formats.keys.sort.each do |range|
4073
3974
  write_conditional_formatting(range, @cond_formats[range])
4074
3975
  end
@@ -4077,14 +3978,15 @@ EOS
4077
3978
  #
4078
3979
  # Write the <conditionalFormatting> element.
4079
3980
  #
4080
- def write_conditional_formatting(range, cond_formats) #:nodoc:
4081
- @writer.tag_elements('conditionalFormatting', [ ['sqref', range] ]) do
3981
+ def write_conditional_formatting(range, cond_formats) # :nodoc:
3982
+ @writer.tag_elements('conditionalFormatting', [['sqref', range]]) do
4082
3983
  cond_formats.each { |cond_format| cond_format.write_cf_rule }
4083
3984
  end
4084
3985
  end
4085
3986
 
4086
- def store_data_to_table(cell_data) #:nodoc:
4087
- row, col = cell_data.row, cell_data.col
3987
+ def store_data_to_table(cell_data) # :nodoc:
3988
+ row = cell_data.row
3989
+ col = cell_data.col
4088
3990
  if @cell_data_table[row]
4089
3991
  @cell_data_table[row][col] = cell_data
4090
3992
  else
@@ -4103,44 +4005,40 @@ EOS
4103
4005
  # optimisation and isn't strictly required. However, it makes comparing
4104
4006
  # files easier.
4105
4007
  #
4106
- def calculate_spans #:nodoc:
4008
+ def calculate_spans # :nodoc:
4107
4009
  span_min = nil
4108
4010
  span_max = 0
4109
4011
  spans = []
4110
4012
 
4111
- (@dim_rowmin .. @dim_rowmax).each do |row_num|
4112
- if @cell_data_table[row_num]
4113
- span_min, span_max = calc_spans(@cell_data_table, row_num, span_min, span_max)
4114
- end
4013
+ (@dim_rowmin..@dim_rowmax).each do |row_num|
4014
+ span_min, span_max = calc_spans(@cell_data_table, row_num, span_min, span_max) if @cell_data_table[row_num]
4115
4015
 
4116
4016
  # Calculate spans for comments.
4117
- if @comments[row_num]
4118
- span_min, span_max = calc_spans(@comments, row_num, span_min, span_max)
4119
- end
4017
+ span_min, span_max = calc_spans(@comments, row_num, span_min, span_max) if @comments[row_num]
4120
4018
 
4121
- if ((row_num + 1) % 16 == 0) || (row_num == @dim_rowmax)
4122
- span_index = row_num / 16
4123
- if span_min
4124
- span_min += 1
4125
- span_max += 1
4126
- spans[span_index] = "#{span_min}:#{span_max}"
4127
- span_min = nil
4128
- end
4129
- end
4019
+ next unless ((row_num + 1) % 16 == 0) || (row_num == @dim_rowmax)
4020
+
4021
+ span_index = row_num / 16
4022
+ next unless span_min
4023
+
4024
+ span_min += 1
4025
+ span_max += 1
4026
+ spans[span_index] = "#{span_min}:#{span_max}"
4027
+ span_min = nil
4130
4028
  end
4131
4029
 
4132
4030
  @row_spans = spans
4133
4031
  end
4134
4032
 
4135
4033
  def calc_spans(data, row_num, span_min, span_max)
4136
- (@dim_colmin .. @dim_colmax).each do |col_num|
4034
+ (@dim_colmin..@dim_colmax).each do |col_num|
4137
4035
  if data[row_num][col_num]
4138
- if !span_min
4139
- span_min = col_num
4140
- span_max = col_num
4141
- else
4036
+ if span_min
4142
4037
  span_min = col_num if col_num < span_min
4143
4038
  span_max = col_num if col_num > span_max
4039
+ else
4040
+ span_min = col_num
4041
+ span_max = col_num
4144
4042
  end
4145
4043
  end
4146
4044
  end
@@ -4151,7 +4049,7 @@ EOS
4151
4049
  # Add a string to the shared string table, if it isn't already there, and
4152
4050
  # return the string index.
4153
4051
  #
4154
- def shared_string_index(str) #:nodoc:
4052
+ def shared_string_index(str) # :nodoc:
4155
4053
  @workbook.shared_string_index(str)
4156
4054
  end
4157
4055
 
@@ -4161,7 +4059,7 @@ EOS
4161
4059
  # Convert zero indexed rows and columns to the format required by worksheet
4162
4060
  # named ranges, eg, "Sheet1!$A$1:$C$13".
4163
4061
  #
4164
- def convert_name_area(row_num_1, col_num_1, row_num_2, col_num_2) #:nodoc:
4062
+ def convert_name_area(row_num_1, col_num_1, row_num_2, col_num_2) # :nodoc:
4165
4063
  range1 = ''
4166
4064
  range2 = ''
4167
4065
  row_col_only = false
@@ -4187,25 +4085,25 @@ EOS
4187
4085
  end
4188
4086
 
4189
4087
  # A repeated range is only written once (if it isn't a special case).
4190
- if range1 == range2 && !row_col_only
4191
- area = range1
4192
- else
4193
- area = "#{range1}:#{range2}"
4194
- end
4088
+ area = if range1 == range2 && !row_col_only
4089
+ range1
4090
+ else
4091
+ "#{range1}:#{range2}"
4092
+ end
4195
4093
 
4196
4094
  # Build up the print area range "Sheet1!$A$1:$C$13".
4197
4095
  "#{quote_sheetname(@name)}!#{area}"
4198
4096
  end
4199
4097
 
4200
- def fit_page? #:nodoc:
4098
+ def fit_page? # :nodoc:
4201
4099
  @page_setup.fit_page
4202
4100
  end
4203
4101
 
4204
- def filter_on? #:nodoc:
4102
+ def filter_on? # :nodoc:
4205
4103
  ptrue?(@filter_on)
4206
4104
  end
4207
4105
 
4208
- def tab_color? #:nodoc:
4106
+ def tab_color? # :nodoc:
4209
4107
  ptrue?(@tab_color)
4210
4108
  end
4211
4109
 
@@ -4217,37 +4115,37 @@ EOS
4217
4115
  ptrue?(@vba_codename)
4218
4116
  end
4219
4117
 
4220
- def zoom_scale_normal? #:nodoc:
4118
+ def zoom_scale_normal? # :nodoc:
4221
4119
  ptrue?(@zoom_scale_normal)
4222
4120
  end
4223
4121
 
4224
- def page_view? #:nodoc:
4122
+ def page_view? # :nodoc:
4225
4123
  !!@page_view
4226
4124
  end
4227
4125
 
4228
- def right_to_left? #:nodoc:
4126
+ def right_to_left? # :nodoc:
4229
4127
  !!@right_to_left
4230
4128
  end
4231
4129
 
4232
- def show_zeros? #:nodoc:
4130
+ def show_zeros? # :nodoc:
4233
4131
  !!@show_zeros
4234
4132
  end
4235
4133
 
4236
- def protect? #:nodoc:
4134
+ def protect? # :nodoc:
4237
4135
  !!@protect
4238
4136
  end
4239
4137
 
4240
- def autofilter_ref? #:nodoc:
4138
+ def autofilter_ref? # :nodoc:
4241
4139
  !!@autofilter_ref
4242
4140
  end
4243
4141
 
4244
- def drawings? #:nodoc:
4142
+ def drawings? # :nodoc:
4245
4143
  !!@drawings
4246
4144
  end
4247
4145
 
4248
- def remove_white_space(margin) #:nodoc:
4146
+ def remove_white_space(margin) # :nodoc:
4249
4147
  if margin.respond_to?(:gsub)
4250
- margin.gsub(/[^\d\.]/, '')
4148
+ margin.gsub(/[^\d.]/, '')
4251
4149
  else
4252
4150
  margin
4253
4151
  end
@@ -4260,15 +4158,15 @@ EOS
4260
4158
  col_cell = xl_rowcol_to_cell(0, left_col)
4261
4159
 
4262
4160
  @selections <<
4263
- [ 'topRight', col_cell, col_cell ] <<
4264
- [ 'bottomLeft', row_cell, row_cell ] <<
4265
- [ 'bottomRight', active_cell, sqref ]
4161
+ ['topRight', col_cell, col_cell] <<
4162
+ ['bottomLeft', row_cell, row_cell] <<
4163
+ ['bottomRight', active_cell, sqref]
4266
4164
  elsif col > 0
4267
4165
  active_pane = 'topRight'
4268
- @selections << [ 'topRight', active_cell, sqref ]
4166
+ @selections << ['topRight', active_cell, sqref]
4269
4167
  else
4270
4168
  active_pane = 'bottomLeft'
4271
- @selections << [ 'bottomLeft', active_cell, sqref ]
4169
+ @selections << ['bottomLeft', active_cell, sqref]
4272
4170
  end
4273
4171
  active_pane
4274
4172
  end
@@ -4279,16 +4177,15 @@ EOS
4279
4177
  col_letter = col
4280
4178
 
4281
4179
  # Convert col ref to a cell ref and then to a col number.
4282
- dummy, col = substitute_cellref("#{col}1")
4180
+ _dummy, col = substitute_cellref("#{col}1")
4283
4181
  raise "Invalid column '#{col_letter}'" if col >= COL_MAX
4284
4182
  end
4285
4183
 
4286
4184
  col_first, col_last = @filter_range
4287
4185
 
4288
4186
  # Reject column if it is outside filter range.
4289
- if col < col_first or col > col_last
4290
- raise "Column '#{col}' outside autofilter column range (#{col_first} .. #{col_last})"
4291
- end
4187
+ raise "Column '#{col}' outside autofilter column range (#{col_first} .. #{col_last})" if col < col_first or col > col_last
4188
+
4292
4189
  col
4293
4190
  end
4294
4191
 
@@ -4300,7 +4197,7 @@ EOS
4300
4197
 
4301
4198
  ignore = @ignore_errors
4302
4199
 
4303
- @writer.tag_elements('ignoredErrors' ) do
4200
+ @writer.tag_elements('ignoredErrors') do
4304
4201
  {
4305
4202
  :number_stored_as_text => 'numberStoredAsText',
4306
4203
  :eval_error => 'evalError',
@@ -4312,9 +4209,7 @@ EOS
4312
4209
  :calculated_column => 'calculatedColumn',
4313
4210
  :two_digit_text_year => 'twoDigitTextYear'
4314
4211
  }.each do |key, value|
4315
- if ignore[key]
4316
- write_ignored_error(value, ignore[key])
4317
- end
4212
+ write_ignored_error(value, ignore[key]) if ignore[key]
4318
4213
  end
4319
4214
  end
4320
4215
  end