write_xlsx 0.85.11 → 0.90.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (921) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +43 -0
  3. data/Changes +54 -0
  4. data/LICENSE.txt +1 -1
  5. data/README.md +4 -4
  6. data/examples/chart_combined.rb +3 -1
  7. data/examples/colors.rb +47 -0
  8. data/examples/comments2.rb +1 -1
  9. data/examples/conditional_format.rb +60 -9
  10. data/examples/data_validate.rb +7 -7
  11. data/examples/panes.rb +1 -1
  12. data/examples/tab_colors.rb +1 -1
  13. data/lib/write_xlsx/chart.rb +90 -8
  14. data/lib/write_xlsx/chart/axis.rb +31 -6
  15. data/lib/write_xlsx/chart/series.rb +26 -10
  16. data/lib/write_xlsx/format.rb +5 -1
  17. data/lib/write_xlsx/package/app.rb +12 -0
  18. data/lib/write_xlsx/package/comments.rb +4 -2
  19. data/lib/write_xlsx/package/conditional_format.rb +6 -0
  20. data/lib/write_xlsx/package/core.rb +8 -6
  21. data/lib/write_xlsx/package/table.rb +31 -5
  22. data/lib/write_xlsx/package/xml_writer_simple.rb +3 -2
  23. data/lib/write_xlsx/utility.rb +85 -0
  24. data/lib/write_xlsx/version.rb +1 -1
  25. data/lib/write_xlsx/workbook.rb +27 -17
  26. data/lib/write_xlsx/worksheet.rb +51 -9
  27. data/lib/write_xlsx/worksheet/cell_data.rb +21 -0
  28. data/lib/write_xlsx/worksheet/data_validation.rb +22 -10
  29. data/lib/write_xlsx/worksheet/hyperlink.rb +14 -14
  30. data/test/chart/test_add_series.rb +11 -1
  31. data/test/chart/test_process_names.rb +1 -1
  32. data/test/chart/test_write_a_latin.rb +1 -1
  33. data/test/chart/test_write_auto.rb +1 -1
  34. data/test/chart/test_write_ax_id.rb +1 -1
  35. data/test/chart/test_write_ax_pos.rb +1 -1
  36. data/test/chart/test_write_cross_ax.rb +1 -1
  37. data/test/chart/test_write_crosses.rb +1 -1
  38. data/test/chart/test_write_d_lbls.rb +1 -1
  39. data/test/chart/test_write_format_code.rb +1 -1
  40. data/test/chart/test_write_idx.rb +1 -1
  41. data/test/chart/test_write_label_align.rb +1 -1
  42. data/test/chart/test_write_label_offset.rb +1 -1
  43. data/test/chart/test_write_lang.rb +1 -1
  44. data/test/chart/test_write_layout.rb +1 -1
  45. data/test/chart/test_write_legend.rb +1 -1
  46. data/test/chart/test_write_legend_pos.rb +1 -1
  47. data/test/chart/test_write_major_gridlines.rb +1 -1
  48. data/test/chart/test_write_marker.rb +1 -1
  49. data/test/chart/test_write_marker_size.rb +1 -1
  50. data/test/chart/test_write_marker_value.rb +1 -1
  51. data/test/chart/test_write_num_cache.rb +1 -1
  52. data/test/chart/test_write_number_format.rb +2 -3
  53. data/test/chart/test_write_order.rb +1 -1
  54. data/test/chart/test_write_orientation.rb +1 -1
  55. data/test/chart/test_write_page_margins.rb +1 -1
  56. data/test/chart/test_write_page_setup.rb +1 -1
  57. data/test/chart/test_write_plot_vis_only.rb +1 -1
  58. data/test/chart/test_write_pt.rb +1 -1
  59. data/test/chart/test_write_pt_count.rb +1 -1
  60. data/test/chart/test_write_series_formula.rb +1 -1
  61. data/test/chart/test_write_style.rb +1 -1
  62. data/test/chart/test_write_symbol.rb +1 -1
  63. data/test/chart/test_write_tick_lbl_pos.rb +1 -1
  64. data/test/chart/test_write_v.rb +1 -1
  65. data/test/chartsheet/test_chartsheet01.rb +1 -1
  66. data/test/drawing/test_drawing_chart_01.rb +1 -1
  67. data/test/drawing/test_drawing_image_01.rb +1 -1
  68. data/test/drawing/test_drawing_shape_01.rb +1 -1
  69. data/test/drawing/test_drawing_shape_02.rb +1 -1
  70. data/test/drawing/test_drawing_shape_03.rb +1 -1
  71. data/test/drawing/test_drawing_shape_04.rb +1 -1
  72. data/test/drawing/test_drawing_shape_05.rb +1 -1
  73. data/test/drawing/test_drawing_shape_06.rb +1 -1
  74. data/test/drawing/test_drawing_shape_07.rb +1 -1
  75. data/test/drawing/test_write_a_graphic_frame_locks.rb +1 -1
  76. data/test/drawing/test_write_c_chart.rb +1 -1
  77. data/test/drawing/test_write_c_nv_graphic_frame_pr.rb +1 -1
  78. data/test/drawing/test_write_c_nv_pr.rb +1 -1
  79. data/test/drawing/test_write_col.rb +1 -1
  80. data/test/drawing/test_write_col_off.rb +1 -1
  81. data/test/drawing/test_write_ext.rb +1 -1
  82. data/test/drawing/test_write_pos.rb +1 -1
  83. data/test/drawing/test_write_row.rb +1 -1
  84. data/test/drawing/test_write_row_off.rb +1 -1
  85. data/test/drawing/test_write_xfrm_extension.rb +1 -1
  86. data/test/drawing/test_write_xfrm_offset.rb +1 -1
  87. data/test/helper.rb +2 -2
  88. data/test/package/app/test_app01.rb +1 -1
  89. data/test/package/app/test_app02.rb +1 -1
  90. data/test/package/app/test_app03.rb +1 -1
  91. data/test/package/comments/test_write_text_t.rb +1 -1
  92. data/test/package/content_types/test_content_types.rb +1 -1
  93. data/test/package/content_types/test_write_default.rb +1 -1
  94. data/test/package/content_types/test_write_override.rb +1 -1
  95. data/test/package/core/test_core01.rb +1 -1
  96. data/test/package/core/test_core02.rb +1 -1
  97. data/test/package/relationships/test_relationships.rb +1 -1
  98. data/test/package/relationships/test_sheet_rels.rb +1 -1
  99. data/test/package/shared_strings/test_shared_strings01.rb +1 -1
  100. data/test/package/shared_strings/test_shared_strings02.rb +1 -1
  101. data/test/package/shared_strings/test_write_si.rb +1 -7
  102. data/test/package/styles/test_styles_01.rb +1 -1
  103. data/test/package/styles/test_styles_02.rb +1 -1
  104. data/test/package/styles/test_styles_03.rb +1 -1
  105. data/test/package/styles/test_styles_04.rb +1 -1
  106. data/test/package/styles/test_styles_05.rb +1 -1
  107. data/test/package/styles/test_styles_06.rb +1 -1
  108. data/test/package/styles/test_styles_07.rb +1 -1
  109. data/test/package/styles/test_styles_08.rb +1 -1
  110. data/test/package/styles/test_styles_09.rb +1 -1
  111. data/test/package/table/test_table01.rb +3 -3
  112. data/test/package/table/test_table02.rb +2 -2
  113. data/test/package/table/test_table03.rb +2 -2
  114. data/test/package/table/test_table04.rb +2 -2
  115. data/test/package/table/test_table05.rb +2 -2
  116. data/test/package/table/test_table06.rb +2 -2
  117. data/test/package/table/test_table07.rb +2 -2
  118. data/test/package/table/test_table08.rb +2 -2
  119. data/test/package/table/test_table09.rb +2 -2
  120. data/test/package/table/test_table10.rb +2 -2
  121. data/test/package/table/test_table11.rb +2 -2
  122. data/test/package/table/test_table12.rb +2 -2
  123. data/test/package/table/test_table13.rb +1 -1
  124. data/test/package/table/test_write_auto_filter.rb +1 -1
  125. data/test/package/table/test_write_table_column.rb +1 -1
  126. data/test/package/table/test_write_table_style_info.rb +1 -1
  127. data/test/package/vml/test_write_auto_fill.rb +1 -1
  128. data/test/package/vml/test_write_div.rb +1 -1
  129. data/test/package/vml/test_write_idmap.rb +1 -1
  130. data/test/package/vml/test_write_path.rb +1 -1
  131. data/test/package/vml/test_write_shapelayout.rb +1 -1
  132. data/test/package/vml/test_write_shapetype.rb +1 -1
  133. data/test/package/vml/test_write_stroke.rb +1 -1
  134. data/test/regression/disabled_test_vml04.rb +1 -1
  135. data/test/regression/images/red_208.png +0 -0
  136. data/test/regression/test_array_formula01.rb +1 -1
  137. data/test/regression/test_array_formula02.rb +1 -1
  138. data/test/regression/test_autofilter00.rb +1 -1
  139. data/test/regression/test_autofilter01.rb +1 -1
  140. data/test/regression/test_autofilter02.rb +1 -1
  141. data/test/regression/test_autofilter03.rb +1 -1
  142. data/test/regression/test_autofilter04.rb +1 -1
  143. data/test/regression/test_autofilter05.rb +1 -1
  144. data/test/regression/test_autofilter06.rb +1 -1
  145. data/test/regression/test_autofilter07.rb +1 -1
  146. data/test/regression/test_button01.rb +1 -1
  147. data/test/regression/test_button02.rb +1 -1
  148. data/test/regression/test_button03.rb +1 -1
  149. data/test/regression/test_button04.rb +1 -1
  150. data/test/regression/test_button05.rb +1 -1
  151. data/test/regression/test_button06.rb +1 -1
  152. data/test/regression/test_button07.rb +1 -1
  153. data/test/regression/test_button08.rb +1 -1
  154. data/test/regression/test_button13.rb +1 -1
  155. data/test/regression/test_button14.rb +1 -1
  156. data/test/regression/test_chart_area01.rb +1 -1
  157. data/test/regression/test_chart_area02.rb +1 -1
  158. data/test/regression/test_chart_area03.rb +1 -1
  159. data/test/regression/test_chart_area04.rb +1 -1
  160. data/test/regression/test_chart_axis01.rb +1 -1
  161. data/test/regression/test_chart_axis02.rb +1 -1
  162. data/test/regression/test_chart_axis03.rb +1 -1
  163. data/test/regression/test_chart_axis04.rb +1 -1
  164. data/test/regression/test_chart_axis05.rb +1 -1
  165. data/test/regression/test_chart_axis06.rb +1 -1
  166. data/test/regression/test_chart_axis07.rb +1 -1
  167. data/test/regression/test_chart_axis08.rb +1 -1
  168. data/test/regression/test_chart_axis09.rb +1 -1
  169. data/test/regression/test_chart_axis10.rb +1 -1
  170. data/test/regression/test_chart_axis11.rb +1 -1
  171. data/test/regression/test_chart_axis12.rb +1 -1
  172. data/test/regression/test_chart_axis13.rb +1 -1
  173. data/test/regression/test_chart_axis14.rb +1 -1
  174. data/test/regression/test_chart_axis15.rb +1 -1
  175. data/test/regression/test_chart_axis16.rb +1 -1
  176. data/test/regression/test_chart_axis17.rb +1 -1
  177. data/test/regression/test_chart_axis18.rb +1 -1
  178. data/test/regression/test_chart_axis19.rb +1 -1
  179. data/test/regression/test_chart_axis20.rb +1 -1
  180. data/test/regression/test_chart_axis21.rb +1 -1
  181. data/test/regression/test_chart_axis22.rb +1 -1
  182. data/test/regression/test_chart_axis23.rb +1 -1
  183. data/test/regression/test_chart_axis24.rb +1 -1
  184. data/test/regression/test_chart_axis25.rb +1 -1
  185. data/test/regression/test_chart_axis26.rb +1 -1
  186. data/test/regression/test_chart_axis27.rb +1 -1
  187. data/test/regression/test_chart_axis28.rb +1 -1
  188. data/test/regression/test_chart_axis29.rb +1 -1
  189. data/test/regression/test_chart_axis30.rb +1 -1
  190. data/test/regression/test_chart_axis31.rb +1 -1
  191. data/test/regression/test_chart_axis32.rb +1 -1
  192. data/test/regression/test_chart_axis33.rb +1 -1
  193. data/test/regression/test_chart_axis34.rb +1 -1
  194. data/test/regression/test_chart_axis35.rb +1 -1
  195. data/test/regression/test_chart_axis36.rb +1 -1
  196. data/test/regression/test_chart_axis37.rb +1 -1
  197. data/test/regression/test_chart_axis38.rb +1 -1
  198. data/test/regression/test_chart_axis39.rb +1 -1
  199. data/test/regression/test_chart_axis40.rb +44 -0
  200. data/test/regression/test_chart_axis41.rb +48 -0
  201. data/test/regression/test_chart_bar01.rb +1 -1
  202. data/test/regression/test_chart_bar02.rb +1 -1
  203. data/test/regression/test_chart_bar03.rb +1 -1
  204. data/test/regression/test_chart_bar04.rb +1 -1
  205. data/test/regression/test_chart_bar05.rb +1 -1
  206. data/test/regression/test_chart_bar06.rb +1 -1
  207. data/test/regression/test_chart_bar07.rb +1 -1
  208. data/test/regression/test_chart_bar08.rb +1 -1
  209. data/test/regression/test_chart_bar09.rb +1 -1
  210. data/test/regression/test_chart_bar10.rb +1 -1
  211. data/test/regression/test_chart_bar11.rb +1 -1
  212. data/test/regression/test_chart_bar12.rb +1 -1
  213. data/test/regression/test_chart_bar13.rb +1 -1
  214. data/test/regression/test_chart_bar14.rb +1 -1
  215. data/test/regression/test_chart_bar15.rb +1 -1
  216. data/test/regression/test_chart_bar16.rb +1 -1
  217. data/test/regression/test_chart_bar17.rb +1 -1
  218. data/test/regression/test_chart_bar18.rb +1 -1
  219. data/test/regression/test_chart_bar19.rb +1 -1
  220. data/test/regression/test_chart_bar20.rb +1 -1
  221. data/test/regression/test_chart_bar21.rb +1 -1
  222. data/test/regression/test_chart_bar22.rb +1 -1
  223. data/test/regression/test_chart_bar23.rb +1 -1
  224. data/test/regression/test_chart_bar24.rb +1 -1
  225. data/test/regression/test_chart_blank01.rb +1 -1
  226. data/test/regression/test_chart_blank02.rb +1 -1
  227. data/test/regression/test_chart_blank03.rb +1 -1
  228. data/test/regression/test_chart_blank04.rb +1 -1
  229. data/test/regression/test_chart_blank05.rb +1 -1
  230. data/test/regression/test_chart_blank06.rb +1 -1
  231. data/test/regression/test_chart_chartarea01.rb +1 -1
  232. data/test/regression/test_chart_chartarea02.rb +1 -1
  233. data/test/regression/test_chart_chartarea03.rb +1 -1
  234. data/test/regression/test_chart_chartarea04.rb +1 -1
  235. data/test/regression/test_chart_chartarea05.rb +1 -1
  236. data/test/regression/test_chart_clustered01.rb +1 -1
  237. data/test/regression/test_chart_column01.rb +1 -1
  238. data/test/regression/test_chart_column02.rb +1 -1
  239. data/test/regression/test_chart_column03.rb +1 -1
  240. data/test/regression/test_chart_column04.rb +1 -1
  241. data/test/regression/test_chart_column05.rb +1 -1
  242. data/test/regression/test_chart_column06.rb +1 -1
  243. data/test/regression/test_chart_column07.rb +1 -1
  244. data/test/regression/test_chart_column08.rb +1 -1
  245. data/test/regression/test_chart_column09.rb +1 -1
  246. data/test/regression/test_chart_column10.rb +1 -1
  247. data/test/regression/test_chart_column11.rb +1 -1
  248. data/test/regression/test_chart_column12.rb +1 -1
  249. data/test/regression/test_chart_combined01.rb +1 -1
  250. data/test/regression/test_chart_combined02.rb +1 -1
  251. data/test/regression/test_chart_combined03.rb +1 -1
  252. data/test/regression/test_chart_combined04.rb +1 -1
  253. data/test/regression/test_chart_combined05.rb +1 -1
  254. data/test/regression/test_chart_combined06.rb +1 -1
  255. data/test/regression/test_chart_combined07.rb +1 -1
  256. data/test/regression/test_chart_combined08.rb +1 -1
  257. data/test/regression/test_chart_combined09.rb +50 -0
  258. data/test/regression/test_chart_crossing01.rb +1 -1
  259. data/test/regression/test_chart_crossing02.rb +1 -1
  260. data/test/regression/test_chart_crossing03.rb +1 -1
  261. data/test/regression/test_chart_crossing04.rb +1 -1
  262. data/test/regression/test_chart_data_labels01.rb +1 -1
  263. data/test/regression/test_chart_data_labels02.rb +1 -1
  264. data/test/regression/test_chart_data_labels03.rb +1 -1
  265. data/test/regression/test_chart_data_labels04.rb +1 -1
  266. data/test/regression/test_chart_data_labels05.rb +1 -1
  267. data/test/regression/test_chart_data_labels06.rb +1 -1
  268. data/test/regression/test_chart_data_labels07.rb +1 -1
  269. data/test/regression/test_chart_data_labels08.rb +1 -1
  270. data/test/regression/test_chart_data_labels09.rb +1 -1
  271. data/test/regression/test_chart_data_labels10.rb +1 -1
  272. data/test/regression/test_chart_data_labels11.rb +1 -1
  273. data/test/regression/test_chart_data_labels12.rb +1 -1
  274. data/test/regression/test_chart_data_labels13.rb +1 -1
  275. data/test/regression/test_chart_data_labels14.rb +1 -1
  276. data/test/regression/test_chart_data_labels15.rb +1 -1
  277. data/test/regression/test_chart_data_labels16.rb +1 -1
  278. data/test/regression/test_chart_data_labels17.rb +1 -1
  279. data/test/regression/test_chart_data_labels18.rb +1 -1
  280. data/test/regression/test_chart_data_labels19.rb +1 -1
  281. data/test/regression/test_chart_data_labels20.rb +1 -1
  282. data/test/regression/test_chart_data_labels21.rb +1 -1
  283. data/test/regression/test_chart_data_labels22.rb +1 -1
  284. data/test/regression/test_chart_data_labels23.rb +1 -1
  285. data/test/regression/test_chart_data_labels24.rb +1 -1
  286. data/test/regression/test_chart_date01.rb +1 -1
  287. data/test/regression/test_chart_date02.rb +1 -1
  288. data/test/regression/test_chart_date03.rb +1 -1
  289. data/test/regression/test_chart_date04.rb +1 -1
  290. data/test/regression/test_chart_date05.rb +1 -1
  291. data/test/regression/test_chart_display_units01.rb +1 -1
  292. data/test/regression/test_chart_display_units02.rb +1 -1
  293. data/test/regression/test_chart_display_units03.rb +1 -1
  294. data/test/regression/test_chart_display_units04.rb +1 -1
  295. data/test/regression/test_chart_display_units05.rb +1 -1
  296. data/test/regression/test_chart_display_units06.rb +1 -1
  297. data/test/regression/test_chart_display_units07.rb +1 -1
  298. data/test/regression/test_chart_display_units08.rb +1 -1
  299. data/test/regression/test_chart_display_units09.rb +1 -1
  300. data/test/regression/test_chart_display_units10.rb +1 -1
  301. data/test/regression/test_chart_display_units11.rb +1 -1
  302. data/test/regression/test_chart_display_units12.rb +1 -1
  303. data/test/regression/test_chart_doughnut01.rb +1 -1
  304. data/test/regression/test_chart_doughnut02.rb +1 -1
  305. data/test/regression/test_chart_doughnut03.rb +1 -1
  306. data/test/regression/test_chart_doughnut04.rb +1 -1
  307. data/test/regression/test_chart_doughnut05.rb +1 -1
  308. data/test/regression/test_chart_doughnut06.rb +1 -1
  309. data/test/regression/test_chart_drop_lines01.rb +1 -1
  310. data/test/regression/test_chart_drop_lines02.rb +1 -1
  311. data/test/regression/test_chart_drop_lines03.rb +1 -1
  312. data/test/regression/test_chart_drop_lines04.rb +1 -1
  313. data/test/regression/test_chart_errorbars01.rb +1 -1
  314. data/test/regression/test_chart_errorbars02.rb +1 -1
  315. data/test/regression/test_chart_errorbars03.rb +1 -1
  316. data/test/regression/test_chart_errorbars04.rb +1 -1
  317. data/test/regression/test_chart_errorbars05.rb +1 -1
  318. data/test/regression/test_chart_errorbars06.rb +1 -1
  319. data/test/regression/test_chart_errorbars07.rb +1 -1
  320. data/test/regression/test_chart_errorbars08.rb +1 -1
  321. data/test/regression/test_chart_errorbars09.rb +1 -1
  322. data/test/regression/test_chart_errorbars10.rb +1 -1
  323. data/test/regression/test_chart_font01.rb +1 -1
  324. data/test/regression/test_chart_font02.rb +1 -1
  325. data/test/regression/test_chart_font03.rb +1 -1
  326. data/test/regression/test_chart_font04.rb +1 -1
  327. data/test/regression/test_chart_font05.rb +1 -1
  328. data/test/regression/test_chart_font06.rb +1 -1
  329. data/test/regression/test_chart_font07.rb +1 -1
  330. data/test/regression/test_chart_font08.rb +1 -1
  331. data/test/regression/test_chart_font09.rb +1 -1
  332. data/test/regression/test_chart_format01.rb +1 -1
  333. data/test/regression/test_chart_format02.rb +1 -1
  334. data/test/regression/test_chart_format03.rb +1 -1
  335. data/test/regression/test_chart_format04.rb +1 -1
  336. data/test/regression/test_chart_format05.rb +1 -1
  337. data/test/regression/test_chart_format06.rb +1 -1
  338. data/test/regression/test_chart_format07.rb +1 -1
  339. data/test/regression/test_chart_format08.rb +1 -1
  340. data/test/regression/test_chart_format09.rb +1 -1
  341. data/test/regression/test_chart_format10.rb +1 -1
  342. data/test/regression/test_chart_format11.rb +1 -1
  343. data/test/regression/test_chart_format12.rb +1 -1
  344. data/test/regression/test_chart_format13.rb +1 -1
  345. data/test/regression/test_chart_format14.rb +1 -1
  346. data/test/regression/test_chart_format15.rb +1 -1
  347. data/test/regression/test_chart_format16.rb +1 -1
  348. data/test/regression/test_chart_format17.rb +1 -1
  349. data/test/regression/test_chart_format18.rb +1 -1
  350. data/test/regression/test_chart_format19.rb +1 -1
  351. data/test/regression/test_chart_format20.rb +1 -1
  352. data/test/regression/test_chart_format21.rb +47 -0
  353. data/test/regression/test_chart_format22.rb +47 -0
  354. data/test/regression/test_chart_format23.rb +47 -0
  355. data/test/regression/test_chart_format24.rb +52 -0
  356. data/test/regression/test_chart_format25.rb +46 -0
  357. data/test/regression/test_chart_gap01.rb +1 -1
  358. data/test/regression/test_chart_gap02.rb +1 -1
  359. data/test/regression/test_chart_gap03.rb +1 -1
  360. data/test/regression/test_chart_gap04.rb +1 -1
  361. data/test/regression/test_chart_gap05.rb +1 -1
  362. data/test/regression/test_chart_gradient01.rb +1 -1
  363. data/test/regression/test_chart_gradient02.rb +1 -1
  364. data/test/regression/test_chart_gradient03.rb +1 -1
  365. data/test/regression/test_chart_gradient04.rb +1 -1
  366. data/test/regression/test_chart_gradient05.rb +1 -1
  367. data/test/regression/test_chart_gradient06.rb +1 -1
  368. data/test/regression/test_chart_gradient07.rb +1 -1
  369. data/test/regression/test_chart_gradient08.rb +1 -1
  370. data/test/regression/test_chart_gradient09.rb +1 -1
  371. data/test/regression/test_chart_gradient10.rb +1 -1
  372. data/test/regression/test_chart_gradient11.rb +1 -1
  373. data/test/regression/test_chart_gradient12.rb +1 -1
  374. data/test/regression/test_chart_gradient13.rb +1 -1
  375. data/test/regression/test_chart_gridlines01.rb +1 -1
  376. data/test/regression/test_chart_gridlines02.rb +1 -1
  377. data/test/regression/test_chart_gridlines03.rb +1 -1
  378. data/test/regression/test_chart_gridlines04.rb +5 -4
  379. data/test/regression/test_chart_gridlines05.rb +1 -1
  380. data/test/regression/test_chart_gridlines06.rb +1 -1
  381. data/test/regression/test_chart_gridlines07.rb +1 -1
  382. data/test/regression/test_chart_gridlines08.rb +9 -12
  383. data/test/regression/test_chart_gridlines09.rb +1 -1
  384. data/test/regression/test_chart_layout01.rb +1 -1
  385. data/test/regression/test_chart_layout02.rb +1 -1
  386. data/test/regression/test_chart_layout03.rb +1 -1
  387. data/test/regression/test_chart_layout04.rb +1 -1
  388. data/test/regression/test_chart_layout05.rb +1 -1
  389. data/test/regression/test_chart_layout06.rb +1 -1
  390. data/test/regression/test_chart_layout07.rb +1 -1
  391. data/test/regression/test_chart_layout08.rb +1 -1
  392. data/test/regression/test_chart_legend01.rb +1 -1
  393. data/test/regression/test_chart_legend02.rb +1 -1
  394. data/test/regression/test_chart_line01.rb +1 -1
  395. data/test/regression/test_chart_line02.rb +1 -1
  396. data/test/regression/test_chart_line03.rb +1 -1
  397. data/test/regression/test_chart_line04.rb +1 -1
  398. data/test/regression/test_chart_name01.rb +1 -1
  399. data/test/regression/test_chart_name02.rb +1 -1
  400. data/test/regression/test_chart_name03.rb +1 -1
  401. data/test/regression/test_chart_order01.rb +1 -1
  402. data/test/regression/test_chart_order02.rb +1 -1
  403. data/test/regression/test_chart_order03.rb +1 -1
  404. data/test/regression/test_chart_pattern01.rb +49 -0
  405. data/test/regression/test_chart_pattern02.rb +106 -0
  406. data/test/regression/test_chart_pattern03.rb +105 -0
  407. data/test/regression/test_chart_pattern04.rb +105 -0
  408. data/test/regression/test_chart_pattern05.rb +105 -0
  409. data/test/regression/test_chart_pattern06.rb +105 -0
  410. data/test/regression/test_chart_pattern07.rb +105 -0
  411. data/test/regression/test_chart_pattern08.rb +105 -0
  412. data/test/regression/test_chart_pattern09.rb +57 -0
  413. data/test/regression/test_chart_pattern10.rb +57 -0
  414. data/test/regression/test_chart_pie01.rb +1 -1
  415. data/test/regression/test_chart_pie02.rb +1 -1
  416. data/test/regression/test_chart_pie03.rb +1 -1
  417. data/test/regression/test_chart_pie04.rb +1 -1
  418. data/test/regression/test_chart_pie05.rb +1 -1
  419. data/test/regression/test_chart_points01.rb +1 -1
  420. data/test/regression/test_chart_points02.rb +1 -1
  421. data/test/regression/test_chart_points03.rb +1 -1
  422. data/test/regression/test_chart_points04.rb +1 -1
  423. data/test/regression/test_chart_points05.rb +1 -1
  424. data/test/regression/test_chart_points06.rb +1 -1
  425. data/test/regression/test_chart_radar01.rb +1 -1
  426. data/test/regression/test_chart_radar02.rb +1 -1
  427. data/test/regression/test_chart_radar03.rb +1 -1
  428. data/test/regression/test_chart_scatter01.rb +1 -1
  429. data/test/regression/test_chart_scatter02.rb +1 -1
  430. data/test/regression/test_chart_scatter03.rb +1 -1
  431. data/test/regression/test_chart_scatter04.rb +1 -1
  432. data/test/regression/test_chart_scatter05.rb +1 -1
  433. data/test/regression/test_chart_scatter06.rb +1 -1
  434. data/test/regression/test_chart_scatter07.rb +1 -1
  435. data/test/regression/test_chart_scatter08.rb +1 -1
  436. data/test/regression/test_chart_scatter09.rb +1 -1
  437. data/test/regression/test_chart_scatter10.rb +1 -1
  438. data/test/regression/test_chart_scatter11.rb +1 -1
  439. data/test/regression/test_chart_scatter12.rb +1 -1
  440. data/test/regression/test_chart_scatter13.rb +1 -1
  441. data/test/regression/test_chart_scatter14.rb +1 -1
  442. data/test/regression/test_chart_scatter15.rb +1 -1
  443. data/test/regression/test_chart_size01.rb +1 -1
  444. data/test/regression/test_chart_size02.rb +1 -1
  445. data/test/regression/test_chart_size03.rb +1 -1
  446. data/test/regression/test_chart_size04.rb +1 -1
  447. data/test/regression/test_chart_size05.rb +1 -1
  448. data/test/regression/test_chart_sparse01.rb +1 -1
  449. data/test/regression/test_chart_stock01.rb +1 -1
  450. data/test/regression/test_chart_stock02.rb +1 -1
  451. data/test/regression/test_chart_str01.rb +1 -1
  452. data/test/regression/test_chart_str02.rb +1 -1
  453. data/test/regression/test_chart_table01.rb +1 -1
  454. data/test/regression/test_chart_table02.rb +1 -1
  455. data/test/regression/test_chart_title01.rb +1 -1
  456. data/test/regression/test_chart_title02.rb +1 -1
  457. data/test/regression/test_chartsheet01.rb +1 -1
  458. data/test/regression/test_chartsheet02.rb +1 -1
  459. data/test/regression/test_chartsheet03.rb +1 -1
  460. data/test/regression/test_chartsheet04.rb +1 -1
  461. data/test/regression/test_chartsheet05.rb +1 -1
  462. data/test/regression/test_chartsheet06.rb +1 -1
  463. data/test/regression/test_chartsheet07.rb +1 -1
  464. data/test/regression/test_chartsheet08.rb +1 -1
  465. data/test/regression/test_chartsheet09.rb +1 -1
  466. data/test/regression/test_comment01.rb +1 -1
  467. data/test/regression/test_comment02.rb +1 -1
  468. data/test/regression/test_comment03.rb +1 -1
  469. data/test/regression/test_comment04.rb +1 -1
  470. data/test/regression/test_comment06.rb +1 -1
  471. data/test/regression/test_comment07.rb +1 -1
  472. data/test/regression/test_comment08.rb +1 -1
  473. data/test/regression/test_comment09.rb +1 -1
  474. data/test/regression/test_comment10.rb +1 -1
  475. data/test/regression/test_comment11.rb +1 -1
  476. data/test/regression/test_comment12.rb +1 -1
  477. data/test/regression/test_cond_format01.rb +1 -1
  478. data/test/regression/test_cond_format02.rb +1 -1
  479. data/test/regression/test_cond_format03.rb +1 -1
  480. data/test/regression/test_cond_format04.rb +1 -1
  481. data/test/regression/test_cond_format05.rb +1 -1
  482. data/test/regression/test_cond_format06.rb +1 -1
  483. data/test/regression/test_cond_format07.rb +1 -1
  484. data/test/regression/test_cond_format08.rb +1 -1
  485. data/test/regression/test_cond_format10.rb +1 -1
  486. data/test/regression/test_cond_format11.rb +1 -1
  487. data/test/regression/test_cond_format12.rb +1 -1
  488. data/test/regression/test_cond_format13.rb +1 -1
  489. data/test/regression/test_custom_colors01.rb +1 -1
  490. data/test/regression/test_data_validation01.rb +1 -1
  491. data/test/regression/test_data_validation02.rb +1 -1
  492. data/test/regression/test_data_validation03.rb +1 -1
  493. data/test/regression/test_data_validation04.rb +2 -2
  494. data/test/regression/test_data_validation05.rb +2 -2
  495. data/test/regression/test_data_validation08.rb +24 -0
  496. data/test/regression/test_date_1904_01.rb +1 -1
  497. data/test/regression/test_date_1904_02.rb +1 -1
  498. data/test/regression/test_date_examples01.rb +1 -1
  499. data/test/regression/test_default_format01.rb +1 -1
  500. data/test/regression/test_default_row01.rb +1 -1
  501. data/test/regression/test_default_row02.rb +1 -1
  502. data/test/regression/test_default_row03.rb +1 -1
  503. data/test/regression/test_default_row04.rb +1 -1
  504. data/test/regression/test_default_row05.rb +32 -0
  505. data/test/regression/test_defined_name01.rb +1 -1
  506. data/test/regression/test_defined_name02.rb +1 -1
  507. data/test/regression/test_defined_name03.rb +1 -1
  508. data/test/regression/test_defined_name04.rb +15 -15
  509. data/test/regression/test_escapes01.rb +1 -1
  510. data/test/regression/test_escapes02.rb +1 -1
  511. data/test/regression/test_escapes03.rb +1 -1
  512. data/test/regression/test_escapes04.rb +1 -1
  513. data/test/regression/test_escapes05.rb +1 -1
  514. data/test/regression/test_escapes06.rb +1 -1
  515. data/test/regression/test_escapes07.rb +1 -1
  516. data/test/regression/test_escapes08.rb +1 -1
  517. data/test/regression/test_excel2003_style01.rb +1 -1
  518. data/test/regression/test_excel2003_style02.rb +1 -1
  519. data/test/regression/test_excel2003_style03.rb +1 -1
  520. data/test/regression/test_excel2003_style04.rb +1 -1
  521. data/test/regression/test_excel2003_style05.rb +1 -1
  522. data/test/regression/test_excel2003_style06.rb +1 -1
  523. data/test/regression/test_excel2003_style07.rb +1 -1
  524. data/test/regression/test_excel2003_style08.rb +1 -1
  525. data/test/regression/test_firstsheet01.rb +1 -1
  526. data/test/regression/test_fit_to_pages01.rb +1 -1
  527. data/test/regression/test_fit_to_pages02.rb +1 -1
  528. data/test/regression/test_fit_to_pages03.rb +1 -1
  529. data/test/regression/test_fit_to_pages04.rb +1 -1
  530. data/test/regression/test_fit_to_pages05.rb +1 -1
  531. data/test/regression/test_format01.rb +1 -1
  532. data/test/regression/test_format02.rb +1 -1
  533. data/test/regression/test_format03.rb +1 -1
  534. data/test/regression/test_format04.rb +1 -1
  535. data/test/regression/test_format05.rb +1 -1
  536. data/test/regression/test_format11.rb +1 -1
  537. data/test/regression/test_format12.rb +1 -1
  538. data/test/regression/test_format13.rb +31 -0
  539. data/test/regression/test_format14.rb +26 -0
  540. data/test/regression/test_formula_results01.rb +1 -1
  541. data/test/regression/test_gridlines01.rb +1 -1
  542. data/test/regression/test_header01.rb +1 -1
  543. data/test/regression/test_header02.rb +1 -1
  544. data/test/regression/test_header03.rb +1 -1
  545. data/test/regression/test_header_image01.rb +1 -1
  546. data/test/regression/test_header_image02.rb +1 -1
  547. data/test/regression/test_header_image03.rb +1 -1
  548. data/test/regression/test_header_image04.rb +1 -1
  549. data/test/regression/test_header_image05.rb +1 -1
  550. data/test/regression/test_header_image06.rb +1 -1
  551. data/test/regression/test_header_image07.rb +1 -1
  552. data/test/regression/test_header_image08.rb +1 -1
  553. data/test/regression/test_header_image09.rb +1 -1
  554. data/test/regression/test_header_image10.rb +1 -1
  555. data/test/regression/test_header_image11.rb +1 -1
  556. data/test/regression/test_header_image12.rb +1 -1
  557. data/test/regression/test_header_image13.rb +1 -1
  558. data/test/regression/test_header_image14.rb +1 -1
  559. data/test/regression/test_hide01.rb +1 -1
  560. data/test/regression/test_hyperlink01.rb +1 -1
  561. data/test/regression/test_hyperlink02.rb +1 -1
  562. data/test/regression/test_hyperlink03.rb +1 -1
  563. data/test/regression/test_hyperlink04.rb +1 -1
  564. data/test/regression/test_hyperlink05.rb +1 -1
  565. data/test/regression/test_hyperlink06.rb +1 -1
  566. data/test/regression/test_hyperlink07.rb +1 -1
  567. data/test/regression/test_hyperlink08.rb +1 -1
  568. data/test/regression/test_hyperlink09.rb +1 -1
  569. data/test/regression/test_hyperlink10.rb +1 -1
  570. data/test/regression/test_hyperlink11.rb +1 -1
  571. data/test/regression/test_hyperlink12.rb +1 -1
  572. data/test/regression/test_hyperlink13.rb +1 -1
  573. data/test/regression/test_hyperlink14.rb +1 -1
  574. data/test/regression/test_hyperlink15.rb +1 -1
  575. data/test/regression/test_hyperlink16.rb +1 -1
  576. data/test/regression/test_hyperlink17.rb +1 -1
  577. data/test/regression/test_hyperlink18.rb +1 -1
  578. data/test/regression/test_hyperlink20.rb +1 -1
  579. data/test/regression/test_hyperlink21.rb +1 -1
  580. data/test/regression/test_hyperlink22.rb +24 -0
  581. data/test/regression/test_hyperlink23.rb +24 -0
  582. data/test/regression/test_hyperlink24.rb +24 -0
  583. data/test/regression/test_hyperlink25.rb +27 -0
  584. data/test/regression/test_hyperlink26.rb +27 -0
  585. data/test/regression/test_hyperlink27.rb +24 -0
  586. data/test/regression/test_image01.rb +1 -1
  587. data/test/regression/test_image02.rb +1 -1
  588. data/test/regression/test_image03.rb +1 -1
  589. data/test/regression/test_image04.rb +1 -1
  590. data/test/regression/test_image05.rb +1 -1
  591. data/test/regression/test_image06.rb +1 -1
  592. data/test/regression/test_image07.rb +1 -1
  593. data/test/regression/test_image08.rb +1 -1
  594. data/test/regression/test_image09.rb +1 -1
  595. data/test/regression/test_image10.rb +1 -1
  596. data/test/regression/test_image11.rb +1 -1
  597. data/test/regression/test_image12.rb +1 -1
  598. data/test/regression/test_image13.rb +1 -1
  599. data/test/regression/test_image14.rb +1 -1
  600. data/test/regression/test_image15.rb +1 -1
  601. data/test/regression/test_image16.rb +1 -1
  602. data/test/regression/test_image17.rb +1 -1
  603. data/test/regression/test_image18.rb +1 -1
  604. data/test/regression/test_image19.rb +1 -1
  605. data/test/regression/test_image22.rb +1 -1
  606. data/test/regression/test_image23.rb +1 -1
  607. data/test/regression/test_image24.rb +1 -1
  608. data/test/regression/test_image25.rb +1 -1
  609. data/test/regression/test_image26.rb +1 -1
  610. data/test/regression/test_image27.rb +1 -1
  611. data/test/regression/test_image28.rb +27 -0
  612. data/test/regression/test_image29.rb +27 -0
  613. data/test/regression/test_image30.rb +27 -0
  614. data/test/regression/test_image31.rb +30 -0
  615. data/test/regression/test_image32.rb +28 -0
  616. data/test/regression/test_image33.rb +32 -0
  617. data/test/regression/test_landscape01.rb +1 -1
  618. data/test/regression/test_macro01.rb +1 -1
  619. data/test/regression/test_merge_cells01.rb +1 -1
  620. data/test/regression/test_merge_range01.rb +1 -1
  621. data/test/regression/test_merge_range02.rb +1 -1
  622. data/test/regression/test_merge_range03.rb +1 -1
  623. data/test/regression/test_merge_range04.rb +1 -1
  624. data/test/regression/test_merge_range05.rb +1 -1
  625. data/test/regression/test_outline01.rb +1 -1
  626. data/test/regression/test_outline02.rb +1 -1
  627. data/test/regression/test_outline03.rb +1 -1
  628. data/test/regression/test_outline04.rb +1 -1
  629. data/test/regression/test_outline05.rb +1 -1
  630. data/test/regression/test_outline06.rb +1 -1
  631. data/test/regression/test_page_breaks01.rb +1 -1
  632. data/test/regression/test_page_breaks02.rb +1 -1
  633. data/test/regression/test_page_breaks03.rb +1 -1
  634. data/test/regression/test_page_breaks04.rb +1 -1
  635. data/test/regression/test_page_breaks05.rb +1 -1
  636. data/test/regression/test_page_breaks06.rb +1 -1
  637. data/test/regression/test_page_view01.rb +1 -1
  638. data/test/regression/test_panes01.rb +1 -1
  639. data/test/regression/test_print_across01.rb +1 -1
  640. data/test/regression/test_print_area01.rb +1 -1
  641. data/test/regression/test_print_area02.rb +1 -1
  642. data/test/regression/test_print_area03.rb +1 -1
  643. data/test/regression/test_print_area04.rb +1 -1
  644. data/test/regression/test_print_area05.rb +1 -1
  645. data/test/regression/test_print_area06.rb +1 -1
  646. data/test/regression/test_print_area07.rb +1 -1
  647. data/test/regression/test_print_options01.rb +1 -1
  648. data/test/regression/test_print_options02.rb +1 -1
  649. data/test/regression/test_print_options03.rb +1 -1
  650. data/test/regression/test_print_options04.rb +1 -1
  651. data/test/regression/test_print_options05.rb +1 -1
  652. data/test/regression/test_print_options06.rb +1 -1
  653. data/test/regression/test_print_options07.rb +1 -1
  654. data/test/regression/test_print_scale01.rb +1 -1
  655. data/test/regression/test_print_scale02.rb +1 -1
  656. data/test/regression/test_properties01.rb +1 -1
  657. data/test/regression/test_properties02.rb +28 -0
  658. data/test/regression/test_protect01.rb +1 -1
  659. data/test/regression/test_protect02.rb +1 -1
  660. data/test/regression/test_protect03.rb +1 -1
  661. data/test/regression/test_quote_name01.rb +1 -1
  662. data/test/regression/test_quote_name03.rb +1 -1
  663. data/test/regression/test_quote_name04.rb +1 -1
  664. data/test/regression/test_repeat01.rb +1 -1
  665. data/test/regression/test_repeat02.rb +1 -1
  666. data/test/regression/test_repeat03.rb +1 -1
  667. data/test/regression/test_repeat04.rb +1 -1
  668. data/test/regression/test_repeat05.rb +1 -1
  669. data/test/regression/test_rich_string01.rb +1 -1
  670. data/test/regression/test_rich_string02.rb +1 -1
  671. data/test/regression/test_rich_string03.rb +1 -1
  672. data/test/regression/test_rich_string04.rb +1 -1
  673. data/test/regression/test_rich_string05.rb +1 -1
  674. data/test/regression/test_rich_string06.rb +1 -1
  675. data/test/regression/test_rich_string07.rb +1 -1
  676. data/test/regression/test_rich_string08.rb +1 -1
  677. data/test/regression/test_rich_string09.rb +1 -1
  678. data/test/regression/test_rich_string10.rb +1 -1
  679. data/test/regression/test_rich_string11.rb +1 -1
  680. data/test/regression/test_rich_string12.rb +1 -1
  681. data/test/regression/test_row_col_format01.rb +1 -1
  682. data/test/regression/test_row_col_format02.rb +1 -1
  683. data/test/regression/test_row_col_format03.rb +1 -1
  684. data/test/regression/test_row_col_format04.rb +1 -1
  685. data/test/regression/test_row_col_format05.rb +1 -1
  686. data/test/regression/test_row_col_format06.rb +1 -1
  687. data/test/regression/test_row_col_format07.rb +1 -1
  688. data/test/regression/test_row_col_format08.rb +1 -1
  689. data/test/regression/test_row_col_format09.rb +1 -1
  690. data/test/regression/test_row_col_format10.rb +1 -1
  691. data/test/regression/test_row_col_format11.rb +1 -1
  692. data/test/regression/test_row_col_format12.rb +1 -1
  693. data/test/regression/test_row_col_format13.rb +1 -1
  694. data/test/regression/test_row_col_format14.rb +1 -1
  695. data/test/regression/test_selection01.rb +1 -1
  696. data/test/regression/test_selection02.rb +1 -1
  697. data/test/regression/test_set_column01.rb +1 -1
  698. data/test/regression/test_set_column02.rb +1 -1
  699. data/test/regression/test_set_column03.rb +1 -1
  700. data/test/regression/test_set_column04.rb +1 -1
  701. data/test/regression/test_set_column05.rb +1 -1
  702. data/test/regression/test_set_column06.rb +1 -1
  703. data/test/regression/test_set_column07.rb +1 -1
  704. data/test/regression/test_set_column08.rb +1 -1
  705. data/test/regression/test_set_column09.rb +1 -1
  706. data/test/regression/test_set_print_scale01.rb +1 -1
  707. data/test/regression/test_set_start_page01.rb +1 -1
  708. data/test/regression/test_set_start_page02.rb +1 -1
  709. data/test/regression/test_set_start_page03.rb +1 -1
  710. data/test/regression/test_shape01.rb +1 -1
  711. data/test/regression/test_shape02.rb +1 -1
  712. data/test/regression/test_shape03.rb +1 -1
  713. data/test/regression/test_shape04.rb +1 -1
  714. data/test/regression/test_shape_connect01.rb +1 -1
  715. data/test/regression/test_shape_connect02.rb +1 -1
  716. data/test/regression/test_shape_connect03.rb +1 -1
  717. data/test/regression/test_shape_connect04.rb +1 -1
  718. data/test/regression/test_shape_scale01.rb +1 -1
  719. data/test/regression/test_shape_stencil01.rb +1 -1
  720. data/test/regression/test_shared_strings01.rb +1 -1
  721. data/test/regression/test_shared_strings02.rb +1 -1
  722. data/test/regression/test_simple01.rb +1 -1
  723. data/test/regression/test_simple02.rb +1 -1
  724. data/test/regression/test_simple03.rb +1 -1
  725. data/test/regression/test_simple04.rb +1 -1
  726. data/test/regression/test_simple05.rb +1 -1
  727. data/test/regression/test_tab_color01.rb +1 -1
  728. data/test/regression/test_table01.rb +1 -1
  729. data/test/regression/test_table02.rb +1 -1
  730. data/test/regression/test_table03.rb +1 -1
  731. data/test/regression/test_table04.rb +1 -1
  732. data/test/regression/test_table05.rb +1 -1
  733. data/test/regression/test_table06.rb +1 -1
  734. data/test/regression/test_table07.rb +1 -1
  735. data/test/regression/test_table08.rb +1 -1
  736. data/test/regression/test_table09.rb +1 -1
  737. data/test/regression/test_table10.rb +1 -1
  738. data/test/regression/test_table11.rb +1 -1
  739. data/test/regression/test_table12.rb +1 -1
  740. data/test/regression/test_table13.rb +1 -1
  741. data/test/regression/test_table14.rb +1 -1
  742. data/test/regression/test_table15.rb +1 -1
  743. data/test/regression/test_table16.rb +1 -1
  744. data/test/regression/test_table17.rb +1 -1
  745. data/test/regression/test_tutorial01.rb +1 -1
  746. data/test/regression/test_tutorial02.rb +1 -1
  747. data/test/regression/test_tutorial03.rb +1 -1
  748. data/test/regression/test_types02.rb +25 -0
  749. data/test/regression/test_types08.rb +31 -0
  750. data/test/regression/test_update_range_format_with_params.rb +1 -1
  751. data/test/regression/test_urls_as_strings.rb +1 -1
  752. data/test/regression/test_utf8_01.rb +1 -1
  753. data/test/regression/test_utf8_03.rb +1 -1
  754. data/test/regression/test_utf8_04.rb +1 -1
  755. data/test/regression/test_utf8_05.rb +1 -1
  756. data/test/regression/test_utf8_06.rb +1 -1
  757. data/test/regression/test_utf8_07.rb +1 -1
  758. data/test/regression/test_utf8_08.rb +1 -1
  759. data/test/regression/test_utf8_09.rb +1 -1
  760. data/test/regression/test_utf8_10.rb +1 -1
  761. data/test/regression/test_utf8_11.rb +23 -0
  762. data/test/regression/test_vml01.rb +1 -1
  763. data/test/regression/test_vml02.rb +1 -1
  764. data/test/regression/test_vml03.rb +1 -1
  765. data/test/regression/xlsx_files/chart_axis40.xlsx +0 -0
  766. data/test/regression/xlsx_files/chart_axis41.xlsx +0 -0
  767. data/test/regression/xlsx_files/chart_combined09.xlsx +0 -0
  768. data/test/regression/xlsx_files/chart_format21.xlsx +0 -0
  769. data/test/regression/xlsx_files/chart_format22.xlsx +0 -0
  770. data/test/regression/xlsx_files/chart_format23.xlsx +0 -0
  771. data/test/regression/xlsx_files/chart_format24.xlsx +0 -0
  772. data/test/regression/xlsx_files/chart_format25.xlsx +0 -0
  773. data/test/regression/xlsx_files/chart_pattern01.xlsx +0 -0
  774. data/test/regression/xlsx_files/chart_pattern02.xlsx +0 -0
  775. data/test/regression/xlsx_files/chart_pattern03.xlsx +0 -0
  776. data/test/regression/xlsx_files/chart_pattern04.xlsx +0 -0
  777. data/test/regression/xlsx_files/chart_pattern05.xlsx +0 -0
  778. data/test/regression/xlsx_files/chart_pattern06.xlsx +0 -0
  779. data/test/regression/xlsx_files/chart_pattern07.xlsx +0 -0
  780. data/test/regression/xlsx_files/chart_pattern08.xlsx +0 -0
  781. data/test/regression/xlsx_files/chart_pattern09.xlsx +0 -0
  782. data/test/regression/xlsx_files/chart_pattern10.xlsx +0 -0
  783. data/test/regression/xlsx_files/data_validation08.xlsx +0 -0
  784. data/test/regression/xlsx_files/default_row05.xlsx +0 -0
  785. data/test/regression/xlsx_files/format13.xlsx +0 -0
  786. data/test/regression/xlsx_files/format14.xlsx +0 -0
  787. data/test/regression/xlsx_files/hyperlink22.xlsx +0 -0
  788. data/test/regression/xlsx_files/hyperlink23.xlsx +0 -0
  789. data/test/regression/xlsx_files/hyperlink24.xlsx +0 -0
  790. data/test/regression/xlsx_files/hyperlink25.xlsx +0 -0
  791. data/test/regression/xlsx_files/hyperlink26.xlsx +0 -0
  792. data/test/regression/xlsx_files/hyperlink27.xlsx +0 -0
  793. data/test/regression/xlsx_files/image28.xlsx +0 -0
  794. data/test/regression/xlsx_files/image29.xlsx +0 -0
  795. data/test/regression/xlsx_files/image30.xlsx +0 -0
  796. data/test/regression/xlsx_files/image31.xlsx +0 -0
  797. data/test/regression/xlsx_files/image32.xlsx +0 -0
  798. data/test/regression/xlsx_files/image33.xlsx +0 -0
  799. data/test/regression/xlsx_files/properties02.xlsx +0 -0
  800. data/test/regression/xlsx_files/table18.xlsx +0 -0
  801. data/test/regression/xlsx_files/table19.xlsx +0 -0
  802. data/test/regression/xlsx_files/types02.xlsx +0 -0
  803. data/test/regression/xlsx_files/types08.xlsx +0 -0
  804. data/test/regression/xlsx_files/utf8_11.xlsx +0 -0
  805. data/test/test_delete_files.rb +3 -3
  806. data/test/test_example_match.rb +1 -1
  807. data/test/test_option_hash_for_workbook.rb +1 -1
  808. data/test/test_xml_writer_simple.rb +1 -1
  809. data/test/workbook/test_define_name.rb +1 -1
  810. data/test/workbook/test_get_chart_range.rb +3 -5
  811. data/test/workbook/test_sort_defined_names.rb +1 -1
  812. data/test/workbook/test_workbook_01.rb +1 -1
  813. data/test/workbook/test_workbook_02.rb +1 -1
  814. data/test/workbook/test_workbook_03.rb +1 -1
  815. data/test/workbook/test_worksheet_by_name.rb +35 -0
  816. data/test/workbook/test_write_calc_pr.rb +1 -1
  817. data/test/workbook/test_write_defined_name.rb +1 -1
  818. data/test/workbook/test_write_defined_names.rb +1 -1
  819. data/test/worksheet/test_calculate_spans.rb +1 -1
  820. data/test/worksheet/test_cond_format_01.rb +1 -1
  821. data/test/worksheet/test_cond_format_02.rb +1 -1
  822. data/test/worksheet/test_cond_format_03.rb +1 -1
  823. data/test/worksheet/test_cond_format_04.rb +1 -1
  824. data/test/worksheet/test_cond_format_05.rb +1 -1
  825. data/test/worksheet/test_cond_format_06.rb +1 -1
  826. data/test/worksheet/test_cond_format_07.rb +1 -1
  827. data/test/worksheet/test_cond_format_08.rb +1 -1
  828. data/test/worksheet/test_cond_format_09.rb +1 -1
  829. data/test/worksheet/test_cond_format_10.rb +1 -1
  830. data/test/worksheet/test_cond_format_11.rb +1 -1
  831. data/test/worksheet/test_cond_format_12.rb +1 -1
  832. data/test/worksheet/test_cond_format_13.rb +1 -1
  833. data/test/worksheet/test_cond_format_14.rb +1 -1
  834. data/test/worksheet/test_cond_format_15.rb +1 -1
  835. data/test/worksheet/test_cond_format_16.rb +1 -1
  836. data/test/worksheet/test_cond_format_17.rb +1 -1
  837. data/test/worksheet/test_cond_format_18.rb +1 -1
  838. data/test/worksheet/test_cond_format_19.rb +1 -1
  839. data/test/worksheet/test_cond_format_20.rb +1 -1
  840. data/test/worksheet/test_cond_format_21.rb +90 -0
  841. data/test/worksheet/test_convert_date_time_01.rb +1 -1
  842. data/test/worksheet/test_convert_date_time_02.rb +1 -1
  843. data/test/worksheet/test_convert_date_time_03.rb +1 -1
  844. data/test/worksheet/test_convert_date_time_04.rb +1 -1
  845. data/test/worksheet/test_extract_filter_tokens.rb +1 -1
  846. data/test/worksheet/test_parse_filter_expression.rb +1 -1
  847. data/test/worksheet/test_position_object.rb +1 -1
  848. data/test/worksheet/test_repeat_formula.rb +1 -1
  849. data/test/worksheet/test_sparkline_01.rb +1 -1
  850. data/test/worksheet/test_sparkline_02.rb +1 -1
  851. data/test/worksheet/test_sparkline_03.rb +1 -1
  852. data/test/worksheet/test_sparkline_04.rb +1 -1
  853. data/test/worksheet/test_sparkline_05.rb +1 -1
  854. data/test/worksheet/test_sparkline_06.rb +1 -1
  855. data/test/worksheet/test_sparkline_07.rb +1 -1
  856. data/test/worksheet/test_sparkline_08.rb +1 -1
  857. data/test/worksheet/test_sparkline_09.rb +1 -1
  858. data/test/worksheet/test_sparkline_10.rb +1 -1
  859. data/test/worksheet/test_sparkline_11.rb +1 -1
  860. data/test/worksheet/test_sparkline_12.rb +94 -0
  861. data/test/worksheet/test_update_format_methods.rb +9 -29
  862. data/test/worksheet/test_worksheet_01.rb +1 -1
  863. data/test/worksheet/test_worksheet_02.rb +1 -1
  864. data/test/worksheet/test_worksheet_03.rb +1 -1
  865. data/test/worksheet/test_worksheet_04.rb +1 -1
  866. data/test/worksheet/test_write_array_formula_01.rb +1 -8
  867. data/test/worksheet/test_write_autofilter.rb +1 -1
  868. data/test/worksheet/test_write_brk.rb +1 -1
  869. data/test/worksheet/test_write_cell.rb +1 -1
  870. data/test/worksheet/test_write_cell_value.rb +1 -1
  871. data/test/worksheet/test_write_col_breaks.rb +1 -1
  872. data/test/worksheet/test_write_col_info.rb +1 -1
  873. data/test/worksheet/test_write_conditional_formatting.rb +1 -1
  874. data/test/worksheet/test_write_custom_filter.rb +1 -1
  875. data/test/worksheet/test_write_custom_filters.rb +1 -1
  876. data/test/worksheet/test_write_data_validation_01.rb +1 -1
  877. data/test/worksheet/test_write_data_validation_02.rb +15 -2
  878. data/test/worksheet/test_write_dimension.rb +1 -1
  879. data/test/worksheet/test_write_filter.rb +1 -1
  880. data/test/worksheet/test_write_filter_column.rb +1 -1
  881. data/test/worksheet/test_write_filters.rb +1 -1
  882. data/test/worksheet/test_write_formula_does_not_change_formula_string.rb +1 -1
  883. data/test/worksheet/test_write_header_footer.rb +1 -1
  884. data/test/worksheet/test_write_hyperlink.rb +1 -8
  885. data/test/worksheet/test_write_legacy_drawing.rb +1 -1
  886. data/test/worksheet/test_write_merge_cell.rb +1 -1
  887. data/test/worksheet/test_write_merge_cells.rb +1 -1
  888. data/test/worksheet/test_write_methods.rb +68 -177
  889. data/test/worksheet/test_write_page_margins.rb +1 -1
  890. data/test/worksheet/test_write_page_set_up_pr.rb +1 -1
  891. data/test/worksheet/test_write_page_setup.rb +1 -1
  892. data/test/worksheet/test_write_pane.rb +1 -1
  893. data/test/worksheet/test_write_phonetic_pr.rb +1 -1
  894. data/test/worksheet/test_write_print_options.rb +1 -1
  895. data/test/worksheet/test_write_row_breaks.rb +1 -1
  896. data/test/worksheet/test_write_row_element.rb +1 -1
  897. data/test/worksheet/test_write_selection.rb +1 -1
  898. data/test/worksheet/test_write_sheet_calc_pr.rb +1 -1
  899. data/test/worksheet/test_write_sheet_data.rb +1 -1
  900. data/test/worksheet/test_write_sheet_format_pr.rb +1 -1
  901. data/test/worksheet/test_write_sheet_pr.rb +1 -1
  902. data/test/worksheet/test_write_sheet_protection.rb +1 -1
  903. data/test/worksheet/test_write_sheet_view.rb +1 -1
  904. data/test/worksheet/test_write_sheet_view1.rb +1 -1
  905. data/test/worksheet/test_write_sheet_view2.rb +1 -1
  906. data/test/worksheet/test_write_sheet_view3.rb +1 -1
  907. data/test/worksheet/test_write_sheet_view4.rb +1 -1
  908. data/test/worksheet/test_write_sheet_view5.rb +1 -1
  909. data/test/worksheet/test_write_sheet_view6.rb +1 -1
  910. data/test/worksheet/test_write_sheet_view7.rb +1 -1
  911. data/test/worksheet/test_write_sheet_view8.rb +1 -1
  912. data/test/worksheet/test_write_sheet_view9.rb +1 -1
  913. data/test/worksheet/test_write_tab_color.rb +1 -1
  914. data/test/worksheet/test_write_worksheet_attributes.rb +1 -1
  915. data/write_xlsx.gemspec +2 -2
  916. metadata +169 -15
  917. data/test/test_col_name.rb +0 -13
  918. data/test/workbook/test_workbook_new.rb +0 -18
  919. data/test/worksheet/test_format.rb +0 -17
  920. data/test/worksheet/test_write_multiline_string_with_url.rb +0 -30
  921. data/test/worksheet/test_write_url.rb +0 -19
@@ -1 +1 @@
1
- WriteXLSX_VERSION = "0.85.11"
1
+ WriteXLSX_VERSION = "0.90.0"
@@ -203,6 +203,14 @@ def sheets(*args)
203
203
  end
204
204
  end
205
205
 
206
+ #
207
+ # Return a worksheet object in the workbook using the sheetname.
208
+ #
209
+ def worksheet_by_name(sheetname = nil)
210
+ sheets.select { |s| s.name == sheetname }.first
211
+ end
212
+ alias get_worksheet_by_name worksheet_by_name
213
+
206
214
  #
207
215
  # Set the date system: false = 1900 (the default), true = 1904
208
216
  #
@@ -726,7 +734,7 @@ def define_name(name, formula)
726
734
 
727
735
  # Raise if the sheet index wasn't found.
728
736
  if !sheet_index
729
- raise "Unknown sheet name #{sheetname} in defined_name()\n"
737
+ raise "Unknown sheet name #{sheetname} in defined_name()"
730
738
  end
731
739
 
732
740
  # Raise if the name contains invalid chars as defined by Excel help.
@@ -734,17 +742,17 @@ def define_name(name, formula)
734
742
  # http://office.microsoft.com/en-001/excel-help/define-and-use-names-in-formulas-HA010147120.aspx#BMsyntax_rules_for_names
735
743
  #
736
744
  if name =~ /\A[-0-9 !"#\$%&'\(\)\*\+,\.:;<=>\?@\[\]\^`\{\}~]/ || name =~ /.+[- !"#\$%&'\(\)\*\+,\\:;<=>\?@\[\]\^`\{\}~]/
737
- raise "Invalid characters in name '#{name}' used in defined_name()\n"
745
+ raise "Invalid characters in name '#{name}' used in defined_name()"
738
746
  end
739
747
 
740
748
  # Raise if the name looks like a cell name.
741
749
  if name =~ %r(^[a-zA-Z][a-zA-Z]?[a-dA-D]?[0-9]+$)
742
- raise "Invalid name '#{name}' looks like a cell name in defined_name()\n"
750
+ raise "Invalid name '#{name}' looks like a cell name in defined_name()"
743
751
  end
744
752
 
745
753
  # Raise if the name looks like a R1C1
746
754
  if name =~ /\A[rcRC]\Z/ || name =~ /\A[rcRC]\d+[rcRC]\d+\Z/
747
- raise "Invalid name '#{name}' like a RC cell ref in defined_name()\n"
755
+ raise "Invalid name '#{name}' like a RC cell ref in defined_name()"
748
756
  end
749
757
 
750
758
  @defined_names.push([ name, sheet_index, formula.sub(/^=/, '') ])
@@ -786,17 +794,18 @@ def set_properties(params)
786
794
 
787
795
  # List of valid input parameters.
788
796
  valid = {
789
- :title => 1,
790
- :subject => 1,
791
- :author => 1,
792
- :keywords => 1,
793
- :comments => 1,
794
- :last_author => 1,
795
- :created => 1,
796
- :category => 1,
797
- :manager => 1,
798
- :company => 1,
799
- :status => 1
797
+ :title => 1,
798
+ :subject => 1,
799
+ :author => 1,
800
+ :keywords => 1,
801
+ :comments => 1,
802
+ :last_author => 1,
803
+ :created => 1,
804
+ :category => 1,
805
+ :manager => 1,
806
+ :company => 1,
807
+ :status => 1,
808
+ :hyperlink_base => 1
800
809
  }
801
810
 
802
811
  # Check for valid input parameters.
@@ -805,7 +814,7 @@ def set_properties(params)
805
814
  end
806
815
 
807
816
  # Set the creation time unless specified by the user.
808
- params[:created] = @local_time unless params.has_key?(:created)
817
+ params[:created] = @createtime unless params.has_key?(:created)
809
818
 
810
819
  @doc_properties = params.dup
811
820
  end
@@ -1632,9 +1641,10 @@ def prepare_vml_objects #:nodoc:
1632
1641
  #
1633
1642
  def prepare_tables
1634
1643
  table_id = 0
1644
+ seen = {}
1635
1645
 
1636
1646
  sheets.each do |sheet|
1637
- table_id += sheet.prepare_tables(table_id + 1)
1647
+ table_id += sheet.prepare_tables(table_id + 1, seen)
1638
1648
  end
1639
1649
  end
1640
1650
 
@@ -296,6 +296,7 @@ class Worksheet
296
296
  attr_reader :comments, :comments_author # :nodoc:
297
297
  attr_accessor :dxf_priority # :nodoc:
298
298
  attr_reader :vba_codename # :nodoc:
299
+ attr_writer :excel_version
299
300
 
300
301
  def initialize(workbook, index, name) #:nodoc:
301
302
  @writer = Package::XMLWriterSimple.new
@@ -2528,6 +2529,26 @@ def write_array_formula(*args)
2528
2529
  end
2529
2530
  end
2530
2531
 
2532
+ #
2533
+ # write_boolean(row, col, val, format)
2534
+ #
2535
+ # Write a boolean value to the specified row and column (zero indexed).
2536
+ #
2537
+ def write_boolean(*args)
2538
+ row, col, val, xf = row_col_notation(args)
2539
+ raise WriteXLSXInsufficientArgumentError if row.nil? || col.nil?
2540
+
2541
+ val = val ? 1 : 0 # Boolean value.
2542
+ # xf : cell format.
2543
+ type = 'l' # The data type
2544
+
2545
+ # Check that row and col are valid and store max and min values
2546
+ check_dimensions(row, col)
2547
+ store_row_col_max_min_values(row, col)
2548
+
2549
+ store_data_to_table(BooleanCellData.new(self, row, col, val, xf))
2550
+ end
2551
+
2531
2552
  #
2532
2553
  # :call-seq:
2533
2554
  # update_format_with_params(row, col, format_params)
@@ -2536,12 +2557,12 @@ def write_array_formula(*args)
2536
2557
  #
2537
2558
  # worksheet.update_format_with_params(0, 0, color: 'red')
2538
2559
  #
2539
- # This method is used to update formatting of the cell keeping cell contents
2560
+ # This method is used to update formatting of the cell keeping cell contents
2540
2561
  # and formatting.
2541
2562
  #
2542
- # If the cell doesn't have CellData object, this method create a CellData
2563
+ # If the cell doesn't have CellData object, this method create a CellData
2543
2564
  # using write_blank method.
2544
- # If the cell has CellData, this method fetch contents and format of cell from
2565
+ # If the cell has CellData, this method fetch contents and format of cell from
2545
2566
  # the CellData object and recreate CellData using write method.
2546
2567
  #
2547
2568
  def update_format_with_params(*args)
@@ -2589,7 +2610,7 @@ def update_format_with_params(*args)
2589
2610
  #
2590
2611
  # worksheet.update_range_format_with_params(0, 0, 3, 3, color: 'red')
2591
2612
  #
2592
- # This method is used to update formatting of multiple cells keeping cells' contents
2613
+ # This method is used to update formatting of multiple cells keeping cells' contents
2593
2614
  # and formatting.
2594
2615
  #
2595
2616
  #
@@ -4288,7 +4309,7 @@ def conditional_formatting(*args)
4288
4309
  # :header
4289
4310
  # :formula
4290
4311
  # :total_string
4291
- # :total_function
4312
+ # :
4292
4313
  # :format
4293
4314
  #
4294
4315
  # The column data must be specified as an array of hash. For example to
@@ -4916,9 +4937,8 @@ def insert_button(*args)
4916
4937
  # :custom
4917
4938
  #
4918
4939
  # +:any+ is used to specify that the type of data is unrestricted.
4919
- # This is the same as not applying a data validation. It is only
4920
- # provided for completeness and isn't used very often in the
4921
- # context of WriteXLSX.
4940
+ # This is usefl to display an input message without restricting the data
4941
+ # that can be entered.
4922
4942
  #
4923
4943
  # +:integer+ restricts the cell to integer values. Excel refers to this
4924
4944
  # as 'whole number'.
@@ -5802,6 +5822,22 @@ def get_range_data(row_start, col_start, row_end, col_end) # :nodoc:
5802
5822
  # width # Width of object frame.
5803
5823
  # height # Height of object frame.
5804
5824
  def position_object_pixels(col_start, row_start, x1, y1, width, height) #:nodoc:
5825
+ # Adjust start column for negative offsets.
5826
+ while x1 < 0 && col_start > 0
5827
+ x1 += size_col(col_start - 1)
5828
+ col_start -= 1
5829
+ end
5830
+
5831
+ # Adjust start row for negative offsets.
5832
+ while y1 < 0 && row_start > 0
5833
+ y1 += size_row(row_start - 1)
5834
+ row_start -= 1
5835
+ end
5836
+
5837
+ # Ensure that the image isn't shifted off the page at top left.
5838
+ x1 = 0 if x1 < 0
5839
+ y1 = 0 if y1 < 0
5840
+
5805
5841
  # Calculate the absolute x offset of the top-left vertex.
5806
5842
  if @col_size_changed
5807
5843
  x_abs = (0 .. col_start-1).inject(0) {|sum, col| sum += size_col(col)}
@@ -5954,12 +5990,18 @@ def prepare_header_vml_objects(vml_header_id, vml_drawing_id)
5954
5990
  #
5955
5991
  # Set the table ids for the worksheet tables.
5956
5992
  #
5957
- def prepare_tables(table_id)
5993
+ def prepare_tables(table_id, seen)
5958
5994
  if tables_count > 0
5959
5995
  id = table_id
5960
5996
  tables.each do |table|
5961
5997
  table.prepare(id)
5962
5998
 
5999
+ if seen[table.name]
6000
+ raise "error: invalid duplicate table name '#{table.name}' found."
6001
+ else
6002
+ seen[table.name] = 1
6003
+ end
6004
+
5963
6005
  # Store the link used for the rels file.
5964
6006
  @external_table_links << ['/table', "../tables/table#{id}.xml"]
5965
6007
  id += 1
@@ -128,6 +128,27 @@ def write_cell
128
128
  end
129
129
  end
130
130
 
131
+ class BooleanCellData < CellData # :nodoc:
132
+ def initialize(worksheet, row, col, val, xf)
133
+ @worksheet = worksheet
134
+ @row, @col, @token, @xf = row, col, val, xf
135
+ end
136
+
137
+ def data
138
+ @token
139
+ end
140
+
141
+ def write_cell
142
+ attributes = cell_attributes
143
+
144
+ attributes << ['t', 'b']
145
+ @worksheet.writer.tag_elements('c', attributes) do
146
+ @worksheet.write_cell_value(token)
147
+ end
148
+ end
149
+ end
150
+
151
+
131
152
  class BlankCellData < CellData # :nodoc:
132
153
  def initialize(worksheet, row, col, xf)
133
154
  @worksheet = worksheet
@@ -32,11 +32,17 @@ def initialize(*args)
32
32
  @value = @minimum if @minimum
33
33
 
34
34
  @validate = valid_validation_type[@validate.downcase]
35
- if @validate == 'none'
35
+
36
+ # No action is required for validate type 'any'
37
+ # unless there are input messages.
38
+ if @validate == 'none' && !@input_message && !@input_title
36
39
  @validate_none = true
37
40
  return
38
41
  end
39
- if ['list', 'custom'].include?(@validate)
42
+
43
+ # The any, list and custom validations don't have a criteria
44
+ # so we use a default of 'between'
45
+ if ['none', 'list', 'custom'].include?(@validate)
40
46
  @criteria = 'between'
41
47
  @maximum = nil
42
48
  end
@@ -59,7 +65,7 @@ def initialize(*args)
59
65
  end
60
66
  set_some_defaults
61
67
 
62
- # A (for now) undocumented parameter to pass additional cell ranges.
68
+ # A (for now) undocumented parameter to pass additional cell ranges.
63
69
  @other_cells.each { |cells| @cells << cells } if has_key?(:other_cells)
64
70
  end
65
71
 
@@ -82,11 +88,15 @@ def validate_none?
82
88
  #
83
89
  def write_data_validation(writer) #:nodoc:
84
90
  @writer = writer
85
- @writer.tag_elements('dataValidation', attributes) do
86
- # Write the formula1 element.
87
- write_formula_1(@value)
88
- # Write the formula2 element.
89
- write_formula_2(@maximum) if @maximum
91
+ if @validate == 'none'
92
+ @writer.empty_tag('dataValidation', attributes)
93
+ else
94
+ @writer.tag_elements('dataValidation', attributes) do
95
+ # Write the formula1 element.
96
+ write_formula_1(@value)
97
+ # Write the formula2 element.
98
+ write_formula_2(@maximum) if @maximum
99
+ end
90
100
  end
91
101
  end
92
102
 
@@ -136,8 +146,10 @@ def attributes
136
146
  end
137
147
  end
138
148
 
139
- attributes << ['type', @validate]
140
- attributes << ['operator', @criteria] if @criteria != 'between'
149
+ if @validate != 'none'
150
+ attributes << ['type', @validate]
151
+ attributes << ['operator', @criteria] if @criteria != 'between'
152
+ end
141
153
 
142
154
  if @error_type
143
155
  attributes << ['errorStyle', 'warning'] if @error_type == 1
@@ -26,17 +26,19 @@ def initialize(url, str, tip)
26
26
  # Strip the mailto header.
27
27
  normalized_str = str.sub(/^mailto:/, '')
28
28
 
29
+ # Split url into the link and optional anchor/location.
30
+ url, @url_str = url.split(/#/, 2)
31
+
29
32
  # Escape URL unless it looks already escaped.
30
33
  url = escape_url(url)
31
34
 
32
- # Excel limits escaped URL to 255 characters.
33
- if url.bytesize > 255
34
- raise "URL '#{url}' > 255 characters, it exceeds Excel's limit for URLS."
35
+ # Excel limits the escaped URL and location/anchor to 255 characters.
36
+ if url.bytesize > 255 || (!@url_str.nil? && @url_str.bytesize > 255)
37
+ raise "Ignoring URL '#{url}' where link or anchor > 255 characters since it exceeds Excel's limit for URLS. See LIMITATIONS section of the Excel::Writer::XLSX documentation."
35
38
  end
36
39
 
37
40
  @url = url
38
41
  @str = normalized_str
39
- @url_str = nil
40
42
  @tip = tip
41
43
  end
42
44
 
@@ -127,15 +129,12 @@ def initialize(url, str, tip)
127
129
  # Strip the mailto header.
128
130
  str.sub!(/^mailto:/, '')
129
131
 
132
+ # Split url into the link and optional anchor/location.
133
+ url, url_str = url.split(/#/, 2)
134
+
130
135
  # Escape URL unless it looks already escaped.
131
136
  url = escape_url(url)
132
137
 
133
- # External Workbook links need to be modified into the right format.
134
- # The URL will look something like 'c:\temp\file.xlsx#Sheet!A1'.
135
- # We need the part to the left of the # as the URL and the part to
136
- # the right as the "location" string (if it exists).
137
- url, url_str = url.split(/#/)
138
-
139
138
  # Add the file:/// URI to the url if non-local.
140
139
  if url =~ %r![:]! || # Windows style "C:/" link.
141
140
  url =~ %r!^\\\\! # Network share.
@@ -144,14 +143,15 @@ def initialize(url, str, tip)
144
143
 
145
144
  # Convert a ./dir/file.xlsx link to dir/file.xlsx.
146
145
  url = url.sub(%r!^.\\!, '')
146
+ @url_str = url_str
147
147
 
148
- # Excel limits escaped URL to 255 characters.
149
- if url.bytesize > 255
150
- raise "URL '#{url}' > 255 characters, it exceeds Excel's limit for URLS."
148
+ # Excel limits the escaped URL and location/anchor to 255 characters.
149
+ if url.bytesize > 255 || (!@url_str.nil? && @url_str.bytesize > 255)
150
+ raise "Ignoring URL '#{url}' where link or anchor > 255 characters since it exceeds Excel's limit for URLS. See LIMITATIONS section of the Excel::Writer::XLSX documentation."
151
151
  end
152
+
152
153
  @url = url
153
154
  @str = str
154
- @url_str = url_str
155
155
  @tip = tip
156
156
  end
157
157
  end
@@ -2,7 +2,7 @@
2
2
  require 'helper'
3
3
  require 'write_xlsx/chart'
4
4
 
5
- class TestAddSeries < Test::Unit::TestCase
5
+ class TestAddSeries < Minitest::Test
6
6
  def setup
7
7
  @chart = Writexlsx::Chart.new('Bar')
8
8
  end
@@ -18,6 +18,8 @@ def test_add_series_only_values
18
18
  series.instance_variable_set(:@val_data_id, 0)
19
19
  series.instance_variable_set(:@line, { :_defined => 0 })
20
20
  series.instance_variable_set(:@fill, { :_defined => 0 })
21
+ series.instance_variable_set(:@pattern, nil)
22
+ series.instance_variable_set(:@gradient, nil)
21
23
  series.instance_variable_set(:@marker, nil)
22
24
  series.instance_variable_set(:@trendline, nil)
23
25
  series.instance_variable_set(:@smooth, nil)
@@ -50,6 +52,8 @@ def test_add_series_with_categories_and_values
50
52
  series.instance_variable_set(:@val_data_id, 1)
51
53
  series.instance_variable_set(:@line , { :_defined => 0 })
52
54
  series.instance_variable_set(:@fill , { :_defined => 0 })
55
+ series.instance_variable_set(:@pattern, nil)
56
+ series.instance_variable_set(:@gradient, nil)
53
57
  series.instance_variable_set(:@marker, nil)
54
58
  series.instance_variable_set(:@trendline, nil)
55
59
  series.instance_variable_set(:@smooth, nil)
@@ -85,6 +89,8 @@ def test_add_series_only_values_checked_by_array
85
89
  series.instance_variable_set(:@val_data_id, 0)
86
90
  series.instance_variable_set(:@line , { :_defined => 0 })
87
91
  series.instance_variable_set(:@fill , { :_defined => 0 })
92
+ series.instance_variable_set(:@pattern, nil)
93
+ series.instance_variable_set(:@gradient, nil)
88
94
  series.instance_variable_set(:@marker, nil)
89
95
  series.instance_variable_set(:@trendline, nil)
90
96
  series.instance_variable_set(:@smooth, nil)
@@ -116,6 +122,8 @@ def test_add_series_both_checked_by_array
116
122
  series.instance_variable_set(:@val_data_id, 1)
117
123
  series.instance_variable_set(:@line , { :_defined => 0 })
118
124
  series.instance_variable_set(:@fill , { :_defined => 0 })
125
+ series.instance_variable_set(:@pattern, nil)
126
+ series.instance_variable_set(:@gradient, nil)
119
127
  series.instance_variable_set(:@marker, nil)
120
128
  series.instance_variable_set(:@trendline, nil)
121
129
  series.instance_variable_set(:@smooth, nil)
@@ -151,6 +159,8 @@ def test_add_series_secondary_axis
151
159
  series.instance_variable_set(:@val_data_id, 1)
152
160
  series.instance_variable_set(:@line , { :_defined => 0 })
153
161
  series.instance_variable_set(:@fill , { :_defined => 0 })
162
+ series.instance_variable_set(:@pattern, nil)
163
+ series.instance_variable_set(:@gradient, nil)
154
164
  series.instance_variable_set(:@marker, nil)
155
165
  series.instance_variable_set(:@trendline, nil)
156
166
  series.instance_variable_set(:@smooth, nil)
@@ -2,7 +2,7 @@
2
2
  require 'helper'
3
3
  require 'write_xlsx/chart'
4
4
 
5
- class TestProcessNames < Test::Unit::TestCase
5
+ class TestProcessNames < Minitest::Test
6
6
  def setup
7
7
  @chart = Writexlsx::Chart.new('Bar')
8
8
  end
@@ -2,7 +2,7 @@
2
2
  require 'helper'
3
3
  require 'write_xlsx/chart'
4
4
 
5
- class TestWriteALatin < Test::Unit::TestCase
5
+ class TestWriteALatin < Minitest::Test
6
6
  def setup
7
7
  @chart = Writexlsx::Chart.new('Bar')
8
8
  end
@@ -2,7 +2,7 @@
2
2
  require 'helper'
3
3
  require 'write_xlsx/chart'
4
4
 
5
- class TestWriteAuto < Test::Unit::TestCase
5
+ class TestWriteAuto < Minitest::Test
6
6
  def setup
7
7
  @chart = Writexlsx::Chart.new('Bar')
8
8
  end