write_xlsx 0.0.2

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 (261) hide show
  1. data/.document +5 -0
  2. data/.gitattributes +1 -0
  3. data/Gemfile +12 -0
  4. data/LICENSE.txt +20 -0
  5. data/README.rdoc +82 -0
  6. data/Rakefile +78 -0
  7. data/VERSION +1 -0
  8. data/examples/a_simple.rb +45 -0
  9. data/examples/array_formula.rb +33 -0
  10. data/examples/autofilter.rb +235 -0
  11. data/examples/chart_area.rb +59 -0
  12. data/examples/chart_bar.rb +59 -0
  13. data/examples/chart_column.rb +58 -0
  14. data/examples/chart_line.rb +59 -0
  15. data/examples/chart_pie.rb +49 -0
  16. data/examples/chart_scatter.rb +59 -0
  17. data/examples/chart_stock.rb +65 -0
  18. data/examples/colors.rb +130 -0
  19. data/examples/comments1.rb +12 -0
  20. data/examples/comments2.rb +335 -0
  21. data/examples/conditional_format.rb +67 -0
  22. data/examples/data_validate.rb +279 -0
  23. data/examples/defined_name.rb +28 -0
  24. data/examples/demo.rb +104 -0
  25. data/examples/diag_border.rb +26 -0
  26. data/examples/headers.rb +119 -0
  27. data/examples/hide_sheet.rb +30 -0
  28. data/examples/hyperlink1.rb +58 -0
  29. data/examples/indent.rb +28 -0
  30. data/examples/merge1.rb +38 -0
  31. data/examples/merge2.rb +48 -0
  32. data/examples/merge3.rb +43 -0
  33. data/examples/merge4.rb +82 -0
  34. data/examples/merge5.rb +70 -0
  35. data/examples/merge6.rb +48 -0
  36. data/examples/outline.rb +252 -0
  37. data/examples/properties.rb +33 -0
  38. data/examples/protection.rb +34 -0
  39. data/examples/rich_strings.rb +42 -0
  40. data/examples/right_to_left.rb +24 -0
  41. data/examples/tab_colors.rb +26 -0
  42. data/lib/write_xlsx.rb +77 -0
  43. data/lib/write_xlsx/chart.rb +3027 -0
  44. data/lib/write_xlsx/chart/area.rb +52 -0
  45. data/lib/write_xlsx/chart/bar.rb +126 -0
  46. data/lib/write_xlsx/chart/column.rb +132 -0
  47. data/lib/write_xlsx/chart/line.rb +51 -0
  48. data/lib/write_xlsx/chart/pie.rb +210 -0
  49. data/lib/write_xlsx/chart/scatter.rb +252 -0
  50. data/lib/write_xlsx/chart/stock.rb +134 -0
  51. data/lib/write_xlsx/chartsheet.rb +173 -0
  52. data/lib/write_xlsx/colors.rb +65 -0
  53. data/lib/write_xlsx/compatibility.rb +71 -0
  54. data/lib/write_xlsx/drawing.rb +547 -0
  55. data/lib/write_xlsx/format.rb +683 -0
  56. data/lib/write_xlsx/package/app.rb +218 -0
  57. data/lib/write_xlsx/package/comments.rb +221 -0
  58. data/lib/write_xlsx/package/content_types.rb +189 -0
  59. data/lib/write_xlsx/package/core.rb +196 -0
  60. data/lib/write_xlsx/package/packager.rb +510 -0
  61. data/lib/write_xlsx/package/relationships.rb +98 -0
  62. data/lib/write_xlsx/package/shared_strings.rb +96 -0
  63. data/lib/write_xlsx/package/styles.rb +705 -0
  64. data/lib/write_xlsx/package/theme.rb +45 -0
  65. data/lib/write_xlsx/package/vml.rb +386 -0
  66. data/lib/write_xlsx/package/xml_writer_simple.rb +90 -0
  67. data/lib/write_xlsx/utility.rb +113 -0
  68. data/lib/write_xlsx/workbook.rb +1488 -0
  69. data/lib/write_xlsx/worksheet.rb +6578 -0
  70. data/lib/write_xlsx/zip_file_utils.rb +98 -0
  71. data/test/chart/test_add_series.rb +113 -0
  72. data/test/chart/test_process_names.rb +27 -0
  73. data/test/chart/test_write_auto.rb +15 -0
  74. data/test/chart/test_write_ax_id.rb +15 -0
  75. data/test/chart/test_write_ax_pos.rb +15 -0
  76. data/test/chart/test_write_chart_space.rb +15 -0
  77. data/test/chart/test_write_cross_ax.rb +15 -0
  78. data/test/chart/test_write_crosses.rb +15 -0
  79. data/test/chart/test_write_format_code.rb +15 -0
  80. data/test/chart/test_write_idx.rb +15 -0
  81. data/test/chart/test_write_label_align.rb +15 -0
  82. data/test/chart/test_write_label_offset.rb +15 -0
  83. data/test/chart/test_write_lang.rb +15 -0
  84. data/test/chart/test_write_layout.rb +15 -0
  85. data/test/chart/test_write_legend.rb +16 -0
  86. data/test/chart/test_write_legend_pos.rb +15 -0
  87. data/test/chart/test_write_major_gridlines.rb +15 -0
  88. data/test/chart/test_write_marker.rb +17 -0
  89. data/test/chart/test_write_marker_size.rb +15 -0
  90. data/test/chart/test_write_marker_value.rb +16 -0
  91. data/test/chart/test_write_num_cache.rb +16 -0
  92. data/test/chart/test_write_num_fmt.rb +16 -0
  93. data/test/chart/test_write_number_format.rb +15 -0
  94. data/test/chart/test_write_order.rb +15 -0
  95. data/test/chart/test_write_orientation.rb +15 -0
  96. data/test/chart/test_write_page_margins.rb +15 -0
  97. data/test/chart/test_write_page_setup.rb +15 -0
  98. data/test/chart/test_write_plot_vis_only.rb +15 -0
  99. data/test/chart/test_write_pt.rb +16 -0
  100. data/test/chart/test_write_pt_count.rb +16 -0
  101. data/test/chart/test_write_series_formula.rb +16 -0
  102. data/test/chart/test_write_style.rb +41 -0
  103. data/test/chart/test_write_symbol.rb +16 -0
  104. data/test/chart/test_write_tick_lbl_pos.rb +16 -0
  105. data/test/chart/test_write_v.rb +16 -0
  106. data/test/drawing/test_drawing_chart_01.rb +50 -0
  107. data/test/drawing/test_drawing_image_01.rb +59 -0
  108. data/test/helper.rb +90 -0
  109. data/test/package/app/test_app01.rb +44 -0
  110. data/test/package/app/test_app02.rb +46 -0
  111. data/test/package/app/test_app03.rb +53 -0
  112. data/test/package/comments/test_comments01.rb +36 -0
  113. data/test/package/comments/test_write_text_t.rb +44 -0
  114. data/test/package/content_types/test_content_types.rb +35 -0
  115. data/test/package/content_types/test_write_default.rb +13 -0
  116. data/test/package/content_types/test_write_override.rb +13 -0
  117. data/test/package/core/test_core01.rb +28 -0
  118. data/test/package/core/test_core02.rb +42 -0
  119. data/test/package/relationships/test_relationships.rb +28 -0
  120. data/test/package/relationships/test_sheet_rels.rb +22 -0
  121. data/test/package/shared_strings/test_shared_strings01.rb +30 -0
  122. data/test/package/shared_strings/test_shared_strings02.rb +30 -0
  123. data/test/package/shared_strings/test_write_si.rb +13 -0
  124. data/test/package/shared_strings/test_write_sst.rb +15 -0
  125. data/test/package/styles/test_styles_01.rb +69 -0
  126. data/test/package/styles/test_styles_02.rb +104 -0
  127. data/test/package/styles/test_styles_03.rb +90 -0
  128. data/test/package/styles/test_styles_04.rb +216 -0
  129. data/test/package/styles/test_styles_05.rb +150 -0
  130. data/test/package/styles/test_styles_06.rb +104 -0
  131. data/test/package/styles/test_styles_07.rb +104 -0
  132. data/test/package/styles/test_styles_08.rb +109 -0
  133. data/test/package/styles/test_styles_09.rb +95 -0
  134. data/test/package/vml/test_vml_01.rb +42 -0
  135. data/test/package/vml/test_write_anchor.rb +14 -0
  136. data/test/package/vml/test_write_auto_fill.rb +14 -0
  137. data/test/package/vml/test_write_column.rb +14 -0
  138. data/test/package/vml/test_write_div.rb +14 -0
  139. data/test/package/vml/test_write_fill.rb +14 -0
  140. data/test/package/vml/test_write_idmap.rb +14 -0
  141. data/test/package/vml/test_write_move_with_cells.rb +14 -0
  142. data/test/package/vml/test_write_path.rb +22 -0
  143. data/test/package/vml/test_write_row.rb +14 -0
  144. data/test/package/vml/test_write_shadow.rb +14 -0
  145. data/test/package/vml/test_write_shapelayout.rb +14 -0
  146. data/test/package/vml/test_write_shapetype.rb +14 -0
  147. data/test/package/vml/test_write_size_with_cells.rb +14 -0
  148. data/test/package/vml/test_write_stroke.rb +14 -0
  149. data/test/package/vml/test_write_textbox.rb +14 -0
  150. data/test/perl_output/a_simple.xlsx +0 -0
  151. data/test/perl_output/array_formula.xlsx +0 -0
  152. data/test/perl_output/autofilter.xlsx +0 -0
  153. data/test/perl_output/chart_area.xlsx +0 -0
  154. data/test/perl_output/chart_bar.xlsx +0 -0
  155. data/test/perl_output/chart_column.xlsx +0 -0
  156. data/test/perl_output/chart_line.xlsx +0 -0
  157. data/test/perl_output/chart_pie.xlsx +0 -0
  158. data/test/perl_output/chart_scatter.xlsx +0 -0
  159. data/test/perl_output/chart_stock.xlsx +0 -0
  160. data/test/perl_output/comments1.xlsx +0 -0
  161. data/test/perl_output/comments2.xlsx +0 -0
  162. data/test/perl_output/conditional_format.xlsx +0 -0
  163. data/test/perl_output/data_validate.xlsx +0 -0
  164. data/test/perl_output/defined_name.xlsx +0 -0
  165. data/test/perl_output/demo.xlsx +0 -0
  166. data/test/perl_output/diag_border.xlsx +0 -0
  167. data/test/perl_output/fit_to_pages.xlsx +0 -0
  168. data/test/perl_output/headers.xlsx +0 -0
  169. data/test/perl_output/hide_sheet.xlsx +0 -0
  170. data/test/perl_output/hyperlink.xlsx +0 -0
  171. data/test/perl_output/indent.xlsx +0 -0
  172. data/test/perl_output/merge1.xlsx +0 -0
  173. data/test/perl_output/merge2.xlsx +0 -0
  174. data/test/perl_output/merge3.xlsx +0 -0
  175. data/test/perl_output/merge4.xlsx +0 -0
  176. data/test/perl_output/merge5.xlsx +0 -0
  177. data/test/perl_output/merge6.xlsx +0 -0
  178. data/test/perl_output/outline.xlsx +0 -0
  179. data/test/perl_output/print_scale.xlsx +0 -0
  180. data/test/perl_output/properties.xlsx +0 -0
  181. data/test/perl_output/protection.xlsx +0 -0
  182. data/test/perl_output/rich_strings.xlsx +0 -0
  183. data/test/perl_output/right_to_left.xlsx +0 -0
  184. data/test/perl_output/tab_colors.xlsx +0 -0
  185. data/test/test_delete_files.rb +37 -0
  186. data/test/test_example_match.rb +2281 -0
  187. data/test/test_xml_writer_simple.rb +63 -0
  188. data/test/workbook/test_get_chart_range.rb +59 -0
  189. data/test/workbook/test_sort_defined_names.rb +77 -0
  190. data/test/workbook/test_workbook_01.rb +29 -0
  191. data/test/workbook/test_workbook_02.rb +31 -0
  192. data/test/workbook/test_workbook_03.rb +31 -0
  193. data/test/workbook/test_workbook_new.rb +18 -0
  194. data/test/workbook/test_write_defined_name.rb +17 -0
  195. data/test/workbook/test_write_defined_names.rb +41 -0
  196. data/test/worksheet/test_calculate_spans.rb +58 -0
  197. data/test/worksheet/test_convert_date_time_01.rb +439 -0
  198. data/test/worksheet/test_convert_date_time_02.rb +478 -0
  199. data/test/worksheet/test_convert_date_time_03.rb +435 -0
  200. data/test/worksheet/test_extract_filter_tokens.rb +109 -0
  201. data/test/worksheet/test_parse_filter_expression.rb +143 -0
  202. data/test/worksheet/test_position_object.rb +50 -0
  203. data/test/worksheet/test_repeat_formula.rb +55 -0
  204. data/test/worksheet/test_worksheet_01.rb +32 -0
  205. data/test/worksheet/test_worksheet_02.rb +38 -0
  206. data/test/worksheet/test_worksheet_03.rb +44 -0
  207. data/test/worksheet/test_worksheet_04.rb +45 -0
  208. data/test/worksheet/test_write_array_formula_01.rb +99 -0
  209. data/test/worksheet/test_write_autofilter.rb +260 -0
  210. data/test/worksheet/test_write_brk.rb +18 -0
  211. data/test/worksheet/test_write_cell.rb +49 -0
  212. data/test/worksheet/test_write_cell_value.rb +33 -0
  213. data/test/worksheet/test_write_col_breaks.rb +27 -0
  214. data/test/worksheet/test_write_col_info.rb +95 -0
  215. data/test/worksheet/test_write_conditional_formatting.rb +72 -0
  216. data/test/worksheet/test_write_custom_filter.rb +18 -0
  217. data/test/worksheet/test_write_custom_filters.rb +25 -0
  218. data/test/worksheet/test_write_data_validation_01.rb +113 -0
  219. data/test/worksheet/test_write_data_validation_02.rb +528 -0
  220. data/test/worksheet/test_write_dimension.rb +94 -0
  221. data/test/worksheet/test_write_ext.rb +18 -0
  222. data/test/worksheet/test_write_ext_lst.rb +18 -0
  223. data/test/worksheet/test_write_filter.rb +18 -0
  224. data/test/worksheet/test_write_filter_column.rb +18 -0
  225. data/test/worksheet/test_write_filters.rb +32 -0
  226. data/test/worksheet/test_write_header_footer.rb +53 -0
  227. data/test/worksheet/test_write_hyperlink.rb +39 -0
  228. data/test/worksheet/test_write_hyperlinks.rb +27 -0
  229. data/test/worksheet/test_write_legacy_drawing.rb +19 -0
  230. data/test/worksheet/test_write_merge_cell.rb +18 -0
  231. data/test/worksheet/test_write_merge_cells.rb +192 -0
  232. data/test/worksheet/test_write_methods.rb +353 -0
  233. data/test/worksheet/test_write_mx_plv.rb +19 -0
  234. data/test/worksheet/test_write_page_margins.rb +98 -0
  235. data/test/worksheet/test_write_page_set_up_pr.rb +19 -0
  236. data/test/worksheet/test_write_page_setup.rb +54 -0
  237. data/test/worksheet/test_write_pane.rb +123 -0
  238. data/test/worksheet/test_write_phonetic_pr.rb +19 -0
  239. data/test/worksheet/test_write_print_options.rb +77 -0
  240. data/test/worksheet/test_write_row_breaks.rb +27 -0
  241. data/test/worksheet/test_write_row_element.rb +69 -0
  242. data/test/worksheet/test_write_selection.rb +18 -0
  243. data/test/worksheet/test_write_sheet_calc_pr.rb +18 -0
  244. data/test/worksheet/test_write_sheet_data.rb +18 -0
  245. data/test/worksheet/test_write_sheet_format_pr.rb +18 -0
  246. data/test/worksheet/test_write_sheet_pr.rb +36 -0
  247. data/test/worksheet/test_write_sheet_protection.rb +174 -0
  248. data/test/worksheet/test_write_sheet_view.rb +62 -0
  249. data/test/worksheet/test_write_sheet_view1.rb +64 -0
  250. data/test/worksheet/test_write_sheet_view2.rb +56 -0
  251. data/test/worksheet/test_write_sheet_view3.rb +83 -0
  252. data/test/worksheet/test_write_sheet_view4.rb +83 -0
  253. data/test/worksheet/test_write_sheet_view5.rb +74 -0
  254. data/test/worksheet/test_write_sheet_view6.rb +51 -0
  255. data/test/worksheet/test_write_sheet_view7.rb +71 -0
  256. data/test/worksheet/test_write_sheet_view8.rb +51 -0
  257. data/test/worksheet/test_write_sheet_view9.rb +51 -0
  258. data/test/worksheet/test_write_tab_color.rb +23 -0
  259. data/test/worksheet/test_write_worksheet.rb +19 -0
  260. data/write_xlsx.gemspec +308 -0
  261. metadata +363 -0
@@ -0,0 +1,94 @@
1
+ # -*- coding: utf-8 -*-
2
+ require 'helper'
3
+ require 'write_xlsx'
4
+ require 'stringio'
5
+
6
+ class TestWriteDimension < Test::Unit::TestCase
7
+ def setup
8
+ @workbook = WriteXLSX.new(StringIO.new)
9
+ @worksheet = @workbook.add_worksheet('')
10
+ end
11
+
12
+ def test_write_dimension_with_no_dimension_set
13
+ @worksheet.__send__('write_dimension')
14
+ result = @worksheet.instance_variable_get(:@writer).string
15
+ expected = '<dimension ref="A1" />'
16
+ assert_equal(expected, result)
17
+ end
18
+
19
+ def test_write_dimension_with_dimension_set
20
+ cell = 'A1'
21
+ @worksheet.write(cell, 'some string')
22
+ @worksheet.__send__('write_dimension')
23
+ result = @worksheet.instance_variable_get(:@writer).string
24
+ expected = %Q!<dimension ref="#{cell}" />!
25
+ assert_equal(expected, result)
26
+ end
27
+
28
+ def test_write_dimension_with_dimension_set_big_row
29
+ cell = 'A1048576'
30
+ @worksheet.write(cell, 'some string')
31
+ @worksheet.__send__('write_dimension')
32
+ result = @worksheet.instance_variable_get(:@writer).string
33
+ expected = %Q!<dimension ref="#{cell}" />!
34
+ assert_equal(expected, result)
35
+ end
36
+
37
+ def test_write_dimension_with_dimension_set_big_column
38
+ cell = 'XFD1'
39
+ @worksheet.write(cell, 'some string')
40
+ @worksheet.__send__('write_dimension')
41
+ result = @worksheet.instance_variable_get(:@writer).string
42
+ expected = %Q!<dimension ref="#{cell}" />!
43
+ assert_equal(expected, result)
44
+ end
45
+
46
+ def test_write_dimension_with_dimension_set_big_row_and_column
47
+ cell = 'XFD1048576'
48
+ @worksheet.write(cell, 'some string')
49
+ @worksheet.__send__('write_dimension')
50
+ result = @worksheet.instance_variable_get(:@writer).string
51
+ expected = %Q!<dimension ref="#{cell}" />!
52
+ assert_equal(expected, result)
53
+ end
54
+
55
+ def test_write_dimension_with_dimension_set_narrow_range
56
+ cell = 'A1:B2'
57
+ @worksheet.write('A1', 'some string')
58
+ @worksheet.write('B2', 'some string')
59
+ @worksheet.__send__('write_dimension')
60
+ result = @worksheet.instance_variable_get(:@writer).string
61
+ expected = %Q!<dimension ref="#{cell}" />!
62
+ assert_equal(expected, result)
63
+ end
64
+
65
+ def test_write_dimension_with_dimension_set_narrow_range_2
66
+ cell = 'A1:B2'
67
+ @worksheet.write('B2', 'some string')
68
+ @worksheet.write('A1', 'some string')
69
+ @worksheet.__send__('write_dimension')
70
+ result = @worksheet.instance_variable_get(:@writer).string
71
+ expected = %Q!<dimension ref="#{cell}" />!
72
+ assert_equal(expected, result)
73
+ end
74
+
75
+ def test_write_dimension_with_dimension_set_wide_range
76
+ cell = 'B2:H11'
77
+ @worksheet.write('B2', 'some string')
78
+ @worksheet.write('H11', 'some string')
79
+ @worksheet.__send__('write_dimension')
80
+ result = @worksheet.instance_variable_get(:@writer).string
81
+ expected = %Q!<dimension ref="#{cell}" />!
82
+ assert_equal(expected, result)
83
+ end
84
+
85
+ def test_write_dimension_with_dimension_set_very_wide_range
86
+ cell = 'A1:XFD1048576'
87
+ @worksheet.write('A1', 'some string')
88
+ @worksheet.write('XFD1048576', 'some string')
89
+ @worksheet.__send__('write_dimension')
90
+ result = @worksheet.instance_variable_get(:@writer).string
91
+ expected = %Q!<dimension ref="#{cell}" />!
92
+ assert_equal(expected, result)
93
+ end
94
+ end
@@ -0,0 +1,18 @@
1
+ # -*- coding: utf-8 -*-
2
+ require 'helper'
3
+ require 'write_xlsx'
4
+ require 'stringio'
5
+
6
+ class TestWriteExt < Test::Unit::TestCase
7
+ def setup
8
+ @workbook = WriteXLSX.new(StringIO.new)
9
+ @worksheet = @workbook.add_worksheet('')
10
+ end
11
+
12
+ def test_write_ext
13
+ @worksheet.__send__('write_ext')
14
+ result = @worksheet.instance_variable_get(:@writer).string
15
+ expected = '<ext xmlns:mx="http://schemas.microsoft.com/office/mac/excel/2008/main" uri="http://schemas.microsoft.com/office/mac/excel/2008/main"><mx:PLV Mode="1" OnePage="0" WScale="0" /></ext>'
16
+ assert_equal(expected, result)
17
+ end
18
+ end
@@ -0,0 +1,18 @@
1
+ # -*- coding: utf-8 -*-
2
+ require 'helper'
3
+ require 'write_xlsx'
4
+ require 'stringio'
5
+
6
+ class TestWriteExtLst < Test::Unit::TestCase
7
+ def setup
8
+ @workbook = WriteXLSX.new(StringIO.new)
9
+ @worksheet = @workbook.add_worksheet('')
10
+ end
11
+
12
+ def test_write_ext_lst
13
+ @worksheet.__send__('write_ext_lst')
14
+ result = @worksheet.instance_variable_get(:@writer).string
15
+ expected = '<extLst><ext xmlns:mx="http://schemas.microsoft.com/office/mac/excel/2008/main" uri="http://schemas.microsoft.com/office/mac/excel/2008/main"><mx:PLV Mode="1" OnePage="0" WScale="0" /></ext></extLst>'
16
+ assert_equal(expected, result)
17
+ end
18
+ end
@@ -0,0 +1,18 @@
1
+ # -*- coding: utf-8 -*-
2
+ require 'helper'
3
+ require 'write_xlsx'
4
+ require 'stringio'
5
+
6
+ class TestWriteFilter < Test::Unit::TestCase
7
+ def setup
8
+ @workbook = WriteXLSX.new(StringIO.new)
9
+ @worksheet = @workbook.add_worksheet('')
10
+ end
11
+
12
+ def test_write_filter
13
+ @worksheet.__send__('write_filter', 'East')
14
+ result = @worksheet.instance_variable_get(:@writer).string
15
+ expected = '<filter val="East" />'
16
+ assert_equal(expected, result)
17
+ end
18
+ end
@@ -0,0 +1,18 @@
1
+ # -*- coding: utf-8 -*-
2
+ require 'helper'
3
+ require 'write_xlsx'
4
+ require 'stringio'
5
+
6
+ class TestWriteFilterColumn < Test::Unit::TestCase
7
+ def setup
8
+ @workbook = WriteXLSX.new(StringIO.new)
9
+ @worksheet = @workbook.add_worksheet('')
10
+ end
11
+
12
+ def test_write_filter_column
13
+ @worksheet.__send__('write_filter_column', 0, 1, *['East'])
14
+ result = @worksheet.instance_variable_get(:@writer).string
15
+ expected = '<filterColumn colId="0"><filters><filter val="East" /></filters></filterColumn>'
16
+ assert_equal(expected, result)
17
+ end
18
+ end
@@ -0,0 +1,32 @@
1
+ # -*- coding: utf-8 -*-
2
+ require 'helper'
3
+ require 'write_xlsx'
4
+ require 'stringio'
5
+
6
+ class TestWriteFilters < Test::Unit::TestCase
7
+ def setup
8
+ @workbook = WriteXLSX.new(StringIO.new)
9
+ @worksheet = @workbook.add_worksheet('')
10
+ end
11
+
12
+ def test_write_filters_East
13
+ @worksheet.__send__('write_filters', 'East')
14
+ result = @worksheet.instance_variable_get(:@writer).string
15
+ expected = '<filters><filter val="East" /></filters>'
16
+ assert_equal(expected, result)
17
+ end
18
+
19
+ def test_write_filters_East_South
20
+ @worksheet.__send__('write_filters', 'East', 'South')
21
+ result = @worksheet.instance_variable_get(:@writer).string
22
+ expected = '<filters><filter val="East" /><filter val="South" /></filters>'
23
+ assert_equal(expected, result)
24
+ end
25
+
26
+ def test_write_filters_blanks
27
+ @worksheet.__send__('write_filters', 'blanks')
28
+ result = @worksheet.instance_variable_get(:@writer).string
29
+ expected = '<filters blank="1" />'
30
+ assert_equal(expected, result)
31
+ end
32
+ end
@@ -0,0 +1,53 @@
1
+ # -*- coding: utf-8 -*-
2
+ require 'helper'
3
+ require 'write_xlsx/workbook'
4
+ require 'write_xlsx/worksheet'
5
+ require 'stringio'
6
+
7
+ class TestWriteHeaderFooter < Test::Unit::TestCase
8
+ def setup
9
+ @workbook = WriteXLSX.new(StringIO.new)
10
+ @worksheet = @workbook.add_worksheet('')
11
+ end
12
+
13
+ def test_write_odd_header
14
+ @worksheet.set_header('Page &P of &N')
15
+ @worksheet.__send__('write_odd_header')
16
+ result = @worksheet.instance_variable_get(:@writer).string
17
+ expected = '<oddHeader>Page &amp;P of &amp;N</oddHeader>'
18
+ assert_equal(expected, result)
19
+ end
20
+
21
+ def test_write_odd_footer
22
+ @worksheet.set_footer('&F')
23
+ @worksheet.__send__('write_odd_footer')
24
+ result = @worksheet.instance_variable_get(:@writer).string
25
+ expected = '<oddFooter>&amp;F</oddFooter>'
26
+ assert_equal(expected, result)
27
+ end
28
+
29
+ def test_write_haeder_footer_only_header
30
+ @worksheet.set_header('Page &P of &N')
31
+ @worksheet.__send__('write_header_footer')
32
+ result = @worksheet.instance_variable_get(:@writer).string
33
+ expected = '<headerFooter><oddHeader>Page &amp;P of &amp;N</oddHeader></headerFooter>'
34
+ assert_equal(expected, result)
35
+ end
36
+
37
+ def test_write_haeder_footer_only_footer
38
+ @worksheet.set_footer('&F')
39
+ @worksheet.__send__('write_header_footer')
40
+ result = @worksheet.instance_variable_get(:@writer).string
41
+ expected = '<headerFooter><oddFooter>&amp;F</oddFooter></headerFooter>'
42
+ assert_equal(expected, result)
43
+ end
44
+
45
+ def test_write_haeder_footer_both_header_and_footer
46
+ @worksheet.set_header('Page &P of &N')
47
+ @worksheet.set_footer('&F')
48
+ @worksheet.__send__('write_header_footer')
49
+ result = @worksheet.instance_variable_get(:@writer).string
50
+ expected = '<headerFooter><oddHeader>Page &amp;P of &amp;N</oddHeader><oddFooter>&amp;F</oddFooter></headerFooter>'
51
+ assert_equal(expected, result)
52
+ end
53
+ end
@@ -0,0 +1,39 @@
1
+ # -*- coding: utf-8 -*-
2
+ require 'helper'
3
+ require 'write_xlsx'
4
+ require 'stringio'
5
+
6
+ class TestWriteHyperlink < Test::Unit::TestCase
7
+ def setup
8
+ @workbook = WriteXLSX.new(StringIO.new)
9
+ @worksheet = @workbook.add_worksheet('')
10
+ end
11
+
12
+ def test_write_hyperlink_external
13
+ @worksheet.__send__('write_hyperlink_external', 0, 0, 1)
14
+ result = @worksheet.instance_variable_get(:@writer).string
15
+ expected = '<hyperlink ref="A1" r:id="rId1" />'
16
+ assert_equal(expected, result)
17
+ end
18
+
19
+ def test_write_hyperlink_internal_sheet2
20
+ @worksheet.__send__('write_hyperlink_internal', 0, 0, 'Sheet2!A1', 'Sheet2!A1')
21
+ result = @worksheet.instance_variable_get(:@writer).string
22
+ expected = '<hyperlink ref="A1" location="Sheet2!A1" display="Sheet2!A1" />'
23
+ assert_equal(expected, result)
24
+ end
25
+
26
+ def test_write_hyperlink_internal_quated_sheet
27
+ @worksheet.__send__('write_hyperlink_internal', 4, 0, "'Data Sheet'!D5", "'Data Sheet'!D5")
28
+ result = @worksheet.instance_variable_get(:@writer).string
29
+ expected = %q{<hyperlink ref="A5" location="'Data Sheet'!D5" display="'Data Sheet'!D5" />}
30
+ assert_equal(expected, result)
31
+ end
32
+
33
+ def test_write_hyperlink_internal_tooltip
34
+ @worksheet.__send__('write_hyperlink_internal', 17, 0, 'Sheet2!A1', 'Sheet2!A1', 'Screen Tip 1')
35
+ result = @worksheet.instance_variable_get(:@writer).string
36
+ expected = '<hyperlink ref="A18" location="Sheet2!A1" tooltip="Screen Tip 1" display="Sheet2!A1" />'
37
+ assert_equal(expected, result)
38
+ end
39
+ end
@@ -0,0 +1,27 @@
1
+ # -*- coding: utf-8 -*-
2
+ require 'helper'
3
+ require 'write_xlsx'
4
+ require 'stringio'
5
+
6
+ class TestWriteHyperlinks < Test::Unit::TestCase
7
+ def setup
8
+ @workbook = WriteXLSX.new(StringIO.new)
9
+ @worksheet = @workbook.add_worksheet('')
10
+ end
11
+
12
+ def test_write_hyperlinks
13
+ @worksheet.instance_variable_set(:@hlink_refs, [[ 1, 0, 0, 1 ]])
14
+ @worksheet.__send__('write_hyperlinks')
15
+ result = @worksheet.instance_variable_get(:@writer).string
16
+ expected = '<hyperlinks><hyperlink ref="A1" r:id="rId1" /></hyperlinks>'
17
+ assert_equal(expected, result)
18
+ end
19
+
20
+ def test_write_hyperlinks_internal
21
+ @worksheet.instance_variable_set(:@hlink_refs, [[ 2, 0, 0, 'Sheet2!A1', 'Sheet2!A1' ]])
22
+ @worksheet.__send__('write_hyperlinks')
23
+ result = @worksheet.instance_variable_get(:@writer).string
24
+ expected = '<hyperlinks><hyperlink ref="A1" location="Sheet2!A1" display="Sheet2!A1" /></hyperlinks>'
25
+ assert_equal(expected, result)
26
+ end
27
+ end
@@ -0,0 +1,19 @@
1
+ # -*- coding: utf-8 -*-
2
+ require 'helper'
3
+ require 'write_xlsx'
4
+ require 'stringio'
5
+
6
+ class TestWriteLegacyDrawing < Test::Unit::TestCase
7
+ def setup
8
+ @workbook = WriteXLSX.new(StringIO.new)
9
+ @worksheet = @workbook.add_worksheet('')
10
+ end
11
+
12
+ def test_write_legacy_drawing
13
+ @worksheet.instance_variable_set(:@has_comments, true)
14
+ @worksheet.__send__('write_legacy_drawing')
15
+ result = @worksheet.instance_variable_get(:@writer).string
16
+ expected = '<legacyDrawing r:id="rId1" />'
17
+ assert_equal(expected, result)
18
+ end
19
+ end
@@ -0,0 +1,18 @@
1
+ # -*- coding: utf-8 -*-
2
+ require 'helper'
3
+ require 'write_xlsx'
4
+ require 'stringio'
5
+
6
+ class TestWriteMergeCell < Test::Unit::TestCase
7
+ def setup
8
+ @workbook = WriteXLSX.new(StringIO.new)
9
+ @worksheet = @workbook.add_worksheet('')
10
+ end
11
+
12
+ def test_write_merge_cell
13
+ @worksheet.__send__('write_merge_cell', [ 2, 1, 2, 2 ])
14
+ result = @worksheet.instance_variable_get(:@writer).string
15
+ expected = '<mergeCell ref="B3:C3" />'
16
+ assert_equal(expected, result)
17
+ end
18
+ end
@@ -0,0 +1,192 @@
1
+ # -*- coding: utf-8 -*-
2
+ require 'helper'
3
+ require 'write_xlsx'
4
+ require 'stringio'
5
+
6
+ class TestWriteMergeCells < Test::Unit::TestCase
7
+ def setup
8
+ @workbook = WriteXLSX.new(StringIO.new)
9
+ @worksheet = @workbook.add_worksheet('')
10
+ end
11
+
12
+ def test_write_merge_cells_B3_C3_Foo_format
13
+ format = Writexlsx::Format.new({}, {}, :xf_index => 1)
14
+ @worksheet.select
15
+ @worksheet.merge_range('B3:C3', 'Foo', format)
16
+ @worksheet.__send__('assemble_xml_file')
17
+ result = got_to_array(@worksheet.instance_variable_get(:@writer).string)
18
+ expected = expected_to_array(<<EOS
19
+ <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
20
+ <worksheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships">
21
+ <dimension ref="B3:C3"/>
22
+ <sheetViews>
23
+ <sheetView tabSelected="1" workbookViewId="0"/>
24
+ </sheetViews>
25
+ <sheetFormatPr defaultRowHeight="15"/>
26
+ <sheetData>
27
+ <row r="3" spans="2:3">
28
+ <c r="B3" s="1" t="s">
29
+ <v>0</v>
30
+ </c>
31
+ <c r="C3" s="1"/>
32
+ </row>
33
+ </sheetData>
34
+ <mergeCells count="1">
35
+ <mergeCell ref="B3:C3"/>
36
+ </mergeCells>
37
+ <pageMargins left="0.7" right="0.7" top="0.75" bottom="0.75" header="0.3" footer="0.3"/>
38
+ </worksheet>
39
+ EOS
40
+ )
41
+ assert_equal(expected, result)
42
+ end
43
+
44
+ def test_write_merge_cells_two_range
45
+ format1 = Writexlsx::Format.new({}, {}, :xf_index => 1)
46
+ format2 = Writexlsx::Format.new({}, {}, :xf_index => 2)
47
+ @worksheet.select
48
+ @worksheet.merge_range('B3:C3', 'Foo', format1)
49
+ @worksheet.merge_range('A2:D2', nil, format2)
50
+ @worksheet.__send__('assemble_xml_file')
51
+ result = got_to_array(@worksheet.instance_variable_get(:@writer).string)
52
+ expected = expected_to_array(<<EOS
53
+ <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
54
+ <worksheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships">
55
+ <dimension ref="A2:D3"/>
56
+ <sheetViews>
57
+ <sheetView tabSelected="1" workbookViewId="0"/>
58
+ </sheetViews>
59
+ <sheetFormatPr defaultRowHeight="15"/>
60
+ <sheetData>
61
+ <row r="2" spans="1:4">
62
+ <c r="A2" s="2"/>
63
+ <c r="B2" s="2"/>
64
+ <c r="C2" s="2"/>
65
+ <c r="D2" s="2"/>
66
+ </row>
67
+ <row r="3" spans="1:4">
68
+ <c r="B3" s="1" t="s">
69
+ <v>0</v>
70
+ </c>
71
+ <c r="C3" s="1"/>
72
+ </row>
73
+ </sheetData>
74
+ <mergeCells count="2">
75
+ <mergeCell ref="B3:C3"/>
76
+ <mergeCell ref="A2:D2"/>
77
+ </mergeCells>
78
+ <pageMargins left="0.7" right="0.7" top="0.75" bottom="0.75" header="0.3" footer="0.3"/>
79
+ </worksheet>
80
+ EOS
81
+ )
82
+ assert_equal(expected, result)
83
+ end
84
+
85
+ def test_write_merge_range_type
86
+ format1 = Writexlsx::Format.new({}, {}, :xf_index => 1)
87
+ format2 = Writexlsx::Format.new({}, {}, :xf_index => 2)
88
+ format3 = Writexlsx::Format.new({}, {}, :xf_index => 3)
89
+
90
+ @worksheet.set_column('B:C', 12)
91
+ @worksheet.instance_variable_set(:@date_1904, 0)
92
+
93
+ @worksheet.select
94
+ @worksheet.merge_range_type('formula', 'B14:C14', '=1+2', format1, 3)
95
+ @worksheet.merge_range_type('number', 'B2:C2', 123, format1)
96
+ @worksheet.merge_range_type('string', 'B4:C4', 'foo', format1)
97
+ @worksheet.merge_range_type('blank', 'B6:C6', format1)
98
+ # @worksheet.merge_range_type('rich_string', 'B8:C8', 'This is ', format2, 'bold', format1)
99
+ @worksheet.merge_range_type('date_time', 'B10:C10', '2011-01-01T', format2)
100
+ # @worksheet.merge_range_type('url', 'B12:C12', 'http://www.perl.com/', format3)
101
+
102
+ @worksheet.__send__('assemble_xml_file')
103
+ result = got_to_array(@worksheet.instance_variable_get(:@writer).string)
104
+ expected = expected_to_array(<<EOS
105
+ <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
106
+ <worksheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships">
107
+ <dimension ref="B2:C14"/>
108
+ <sheetViews>
109
+ <sheetView tabSelected="1" workbookViewId="0"/>
110
+ </sheetViews>
111
+ <sheetFormatPr defaultRowHeight="15"/>
112
+ <cols>
113
+ <col min="2" max="3" width="12.7109375" customWidth="1"/>
114
+ </cols>
115
+ <sheetData>
116
+ <row r="2" spans="2:3">
117
+ <c r="B2" s="1">
118
+ <v>123</v>
119
+ </c>
120
+ <c r="C2" s="1"/>
121
+ </row>
122
+ <row r="4" spans="2:3">
123
+ <c r="B4" s="1" t="s">
124
+ <v>0</v>
125
+ </c>
126
+ <c r="C4" s="1"/>
127
+ </row>
128
+ <row r="6" spans="2:3">
129
+ <c r="B6" s="1"/>
130
+ <c r="C6" s="1"/>
131
+ </row>
132
+ <row r="10" spans="2:3">
133
+ <c r="B10" s="2">
134
+ <v>40544</v>
135
+ </c>
136
+ <c r="C10" s="2"/>
137
+ </row>
138
+ <row r="14" spans="2:3">
139
+ <c r="B14" s="1">
140
+ <f>1+2</f>
141
+ <v>3</v>
142
+ </c>
143
+ <c r="C14" s="1"/>
144
+ </row>
145
+ </sheetData>
146
+ <mergeCells count="5">
147
+ <mergeCell ref="B14:C14"/>
148
+ <mergeCell ref="B2:C2"/>
149
+ <mergeCell ref="B4:C4"/>
150
+ <mergeCell ref="B6:C6"/>
151
+ <mergeCell ref="B10:C10"/>
152
+ </mergeCells>
153
+ <pageMargins left="0.7" right="0.7" top="0.75" bottom="0.75" header="0.3" footer="0.3"/>
154
+ </worksheet>
155
+ EOS
156
+ )
157
+ assert_equal(expected, result)
158
+ end
159
+ =begin
160
+ def test_write_merge_cells_2_1_2_2_Foo_format
161
+ format = Writexlsx::Format.new({}, {}, :xf_index => 1)
162
+ @worksheet.merge_range(2, 1, 2, 2, 'Foo', format)
163
+ @worksheet.__send__('write_merge_cells')
164
+ @worksheet.__send__('assemble_xml_file')
165
+ result = got_to_array(@worksheet.instance_variable_get(:@writer).string)
166
+ expected = expected_to_array(<<EOS
167
+ <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
168
+ <worksheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships">
169
+ <dimension ref="B3:C3"/>
170
+ <sheetViews>
171
+ <sheetView tabSelected="1" workbookViewId="0"/>
172
+ </sheetViews>
173
+ <sheetFormatPr defaultRowHeight="15"/>
174
+ <sheetData>
175
+ <row r="3" spans="2:3">
176
+ <c r="B3" s="1" t="s">
177
+ <v>0</v>
178
+ </c>
179
+ <c r="C3" s="1"/>
180
+ </row>
181
+ </sheetData>
182
+ <mergeCells count="1">
183
+ <mergeCell ref="B3:C3"/>
184
+ </mergeCells>
185
+ <pageMargins left="0.7" right="0.7" top="0.75" bottom="0.75" header="0.3" footer="0.3"/>
186
+ </worksheet>
187
+ EOS
188
+ )
189
+ assert_equal(expected, result)
190
+ end
191
+ =end
192
+ end