ricardoo27-writeexcel 0.6.12.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (245) hide show
  1. data/.document +5 -0
  2. data/.gitattributes +1 -0
  3. data/README.rdoc +136 -0
  4. data/Rakefile +52 -0
  5. data/VERSION +1 -0
  6. data/charts/chartex.rb +316 -0
  7. data/charts/demo1.rb +46 -0
  8. data/charts/demo101.bin +0 -0
  9. data/charts/demo2.rb +65 -0
  10. data/charts/demo201.bin +0 -0
  11. data/charts/demo3.rb +117 -0
  12. data/charts/demo301.bin +0 -0
  13. data/charts/demo4.rb +119 -0
  14. data/charts/demo401.bin +0 -0
  15. data/charts/demo5.rb +48 -0
  16. data/charts/demo501.bin +0 -0
  17. data/examples/a_simple.rb +43 -0
  18. data/examples/autofilter.rb +265 -0
  19. data/examples/bigfile.rb +30 -0
  20. data/examples/chart_area.rb +121 -0
  21. data/examples/chart_bar.rb +120 -0
  22. data/examples/chart_column.rb +120 -0
  23. data/examples/chart_line.rb +120 -0
  24. data/examples/chart_pie.rb +108 -0
  25. data/examples/chart_scatter.rb +121 -0
  26. data/examples/chart_stock.rb +148 -0
  27. data/examples/chess.rb +142 -0
  28. data/examples/colors.rb +129 -0
  29. data/examples/comments1.rb +27 -0
  30. data/examples/comments2.rb +352 -0
  31. data/examples/copyformat.rb +52 -0
  32. data/examples/data_validate.rb +279 -0
  33. data/examples/date_time.rb +87 -0
  34. data/examples/defined_name.rb +32 -0
  35. data/examples/demo.rb +124 -0
  36. data/examples/diag_border.rb +36 -0
  37. data/examples/formats.rb +490 -0
  38. data/examples/formula_result.rb +30 -0
  39. data/examples/header.rb +137 -0
  40. data/examples/hide_sheet.rb +29 -0
  41. data/examples/hyperlink.rb +43 -0
  42. data/examples/images.rb +63 -0
  43. data/examples/indent.rb +31 -0
  44. data/examples/merge1.rb +40 -0
  45. data/examples/merge2.rb +45 -0
  46. data/examples/merge3.rb +66 -0
  47. data/examples/merge4.rb +83 -0
  48. data/examples/merge5.rb +80 -0
  49. data/examples/merge6.rb +67 -0
  50. data/examples/outline.rb +255 -0
  51. data/examples/outline_collapsed.rb +209 -0
  52. data/examples/panes.rb +113 -0
  53. data/examples/password_protection.rb +33 -0
  54. data/examples/properties.rb +34 -0
  55. data/examples/properties_jp.rb +33 -0
  56. data/examples/protection.rb +47 -0
  57. data/examples/regions.rb +53 -0
  58. data/examples/repeat.rb +43 -0
  59. data/examples/republic.png +0 -0
  60. data/examples/right_to_left.rb +27 -0
  61. data/examples/row_wrap.rb +53 -0
  62. data/examples/set_first_sheet.rb +14 -0
  63. data/examples/stats.rb +74 -0
  64. data/examples/stocks.rb +81 -0
  65. data/examples/store_formula.rb +15 -0
  66. data/examples/tab_colors.rb +31 -0
  67. data/examples/utf8.rb +15 -0
  68. data/examples/write_arrays.rb +83 -0
  69. data/html/en/doc_en.html +5946 -0
  70. data/html/images/a_simple.jpg +0 -0
  71. data/html/images/area1.jpg +0 -0
  72. data/html/images/bar1.jpg +0 -0
  73. data/html/images/chart_area.xls +0 -0
  74. data/html/images/column1.jpg +0 -0
  75. data/html/images/data_validation.jpg +0 -0
  76. data/html/images/line1.jpg +0 -0
  77. data/html/images/pie1.jpg +0 -0
  78. data/html/images/regions.jpg +0 -0
  79. data/html/images/scatter1.jpg +0 -0
  80. data/html/images/stats.jpg +0 -0
  81. data/html/images/stock1.jpg +0 -0
  82. data/html/images/stocks.jpg +0 -0
  83. data/html/index.html +16 -0
  84. data/html/style.css +433 -0
  85. data/lib/writeexcel.rb +1159 -0
  86. data/lib/writeexcel/biffwriter.rb +223 -0
  87. data/lib/writeexcel/caller_info.rb +12 -0
  88. data/lib/writeexcel/cell_range.rb +332 -0
  89. data/lib/writeexcel/chart.rb +1968 -0
  90. data/lib/writeexcel/charts/area.rb +154 -0
  91. data/lib/writeexcel/charts/bar.rb +177 -0
  92. data/lib/writeexcel/charts/column.rb +156 -0
  93. data/lib/writeexcel/charts/external.rb +66 -0
  94. data/lib/writeexcel/charts/line.rb +154 -0
  95. data/lib/writeexcel/charts/pie.rb +169 -0
  96. data/lib/writeexcel/charts/scatter.rb +192 -0
  97. data/lib/writeexcel/charts/stock.rb +213 -0
  98. data/lib/writeexcel/col_info.rb +87 -0
  99. data/lib/writeexcel/colors.rb +68 -0
  100. data/lib/writeexcel/comments.rb +460 -0
  101. data/lib/writeexcel/compatibility.rb +65 -0
  102. data/lib/writeexcel/convert_date_time.rb +117 -0
  103. data/lib/writeexcel/data_validations.rb +370 -0
  104. data/lib/writeexcel/debug_info.rb +41 -0
  105. data/lib/writeexcel/embedded_chart.rb +35 -0
  106. data/lib/writeexcel/excelformula.y +139 -0
  107. data/lib/writeexcel/excelformulaparser.rb +587 -0
  108. data/lib/writeexcel/format.rb +1575 -0
  109. data/lib/writeexcel/formula.rb +987 -0
  110. data/lib/writeexcel/helper.rb +78 -0
  111. data/lib/writeexcel/image.rb +218 -0
  112. data/lib/writeexcel/olewriter.rb +305 -0
  113. data/lib/writeexcel/outline.rb +24 -0
  114. data/lib/writeexcel/properties.rb +242 -0
  115. data/lib/writeexcel/shared_string_table.rb +153 -0
  116. data/lib/writeexcel/storage_lite.rb +984 -0
  117. data/lib/writeexcel/workbook.rb +2478 -0
  118. data/lib/writeexcel/worksheet.rb +6925 -0
  119. data/lib/writeexcel/worksheets.rb +25 -0
  120. data/lib/writeexcel/write_file.rb +63 -0
  121. data/test/excelfile/Chart1.xls +0 -0
  122. data/test/excelfile/Chart2.xls +0 -0
  123. data/test/excelfile/Chart3.xls +0 -0
  124. data/test/excelfile/Chart4.xls +0 -0
  125. data/test/excelfile/Chart5.xls +0 -0
  126. data/test/helper.rb +31 -0
  127. data/test/perl_output/Chart1.xls.data +0 -0
  128. data/test/perl_output/Chart2.xls.data +0 -0
  129. data/test/perl_output/Chart3.xls.data +0 -0
  130. data/test/perl_output/Chart4.xls.data +0 -0
  131. data/test/perl_output/Chart5.xls.data +0 -0
  132. data/test/perl_output/README +31 -0
  133. data/test/perl_output/a_simple.xls +0 -0
  134. data/test/perl_output/autofilter.xls +0 -0
  135. data/test/perl_output/biff_add_continue_testdata +0 -0
  136. data/test/perl_output/chart_area.xls +0 -0
  137. data/test/perl_output/chart_bar.xls +0 -0
  138. data/test/perl_output/chart_column.xls +0 -0
  139. data/test/perl_output/chart_line.xls +0 -0
  140. data/test/perl_output/chess.xls +0 -0
  141. data/test/perl_output/colors.xls +0 -0
  142. data/test/perl_output/comments0.xls +0 -0
  143. data/test/perl_output/comments1.xls +0 -0
  144. data/test/perl_output/comments2.xls +0 -0
  145. data/test/perl_output/data_validate.xls +0 -0
  146. data/test/perl_output/date_time.xls +0 -0
  147. data/test/perl_output/defined_name.xls +0 -0
  148. data/test/perl_output/demo.xls +0 -0
  149. data/test/perl_output/demo101.bin +0 -0
  150. data/test/perl_output/demo201.bin +0 -0
  151. data/test/perl_output/demo301.bin +0 -0
  152. data/test/perl_output/demo401.bin +0 -0
  153. data/test/perl_output/demo501.bin +0 -0
  154. data/test/perl_output/diag_border.xls +0 -0
  155. data/test/perl_output/f_font_biff +0 -0
  156. data/test/perl_output/f_font_key +1 -0
  157. data/test/perl_output/f_xf_biff +0 -0
  158. data/test/perl_output/file_font_biff +0 -0
  159. data/test/perl_output/file_font_key +1 -0
  160. data/test/perl_output/file_xf_biff +0 -0
  161. data/test/perl_output/formula_result.xls +0 -0
  162. data/test/perl_output/headers.xls +0 -0
  163. data/test/perl_output/hidden.xls +0 -0
  164. data/test/perl_output/hide_zero.xls +0 -0
  165. data/test/perl_output/hyperlink.xls +0 -0
  166. data/test/perl_output/images.xls +0 -0
  167. data/test/perl_output/indent.xls +0 -0
  168. data/test/perl_output/merge1.xls +0 -0
  169. data/test/perl_output/merge2.xls +0 -0
  170. data/test/perl_output/merge3.xls +0 -0
  171. data/test/perl_output/merge4.xls +0 -0
  172. data/test/perl_output/merge5.xls +0 -0
  173. data/test/perl_output/merge6.xls +0 -0
  174. data/test/perl_output/ole_write_header +0 -0
  175. data/test/perl_output/outline.xls +0 -0
  176. data/test/perl_output/outline_collapsed.xls +0 -0
  177. data/test/perl_output/panes.xls +0 -0
  178. data/test/perl_output/password_protection.xls +0 -0
  179. data/test/perl_output/protection.xls +0 -0
  180. data/test/perl_output/regions.xls +0 -0
  181. data/test/perl_output/right_to_left.xls +0 -0
  182. data/test/perl_output/set_first_sheet.xls +0 -0
  183. data/test/perl_output/stats.xls +0 -0
  184. data/test/perl_output/stocks.xls +0 -0
  185. data/test/perl_output/store_formula.xls +0 -0
  186. data/test/perl_output/tab_colors.xls +0 -0
  187. data/test/perl_output/unicode_cyrillic.xls +0 -0
  188. data/test/perl_output/utf8.xls +0 -0
  189. data/test/perl_output/workbook1.xls +0 -0
  190. data/test/perl_output/workbook2.xls +0 -0
  191. data/test/perl_output/ws_colinfo +1 -0
  192. data/test/perl_output/ws_store_colinfo +0 -0
  193. data/test/perl_output/ws_store_dimensions +0 -0
  194. data/test/perl_output/ws_store_filtermode +0 -0
  195. data/test/perl_output/ws_store_filtermode_off +0 -0
  196. data/test/perl_output/ws_store_filtermode_on +0 -0
  197. data/test/perl_output/ws_store_selection +0 -0
  198. data/test/perl_output/ws_store_window2 +1 -0
  199. data/test/republic.png +0 -0
  200. data/test/test_00_IEEE_double.rb +13 -0
  201. data/test/test_01_add_worksheet.rb +10 -0
  202. data/test/test_02_merge_formats.rb +49 -0
  203. data/test/test_04_dimensions.rb +388 -0
  204. data/test/test_05_rows.rb +175 -0
  205. data/test/test_06_extsst.rb +74 -0
  206. data/test/test_11_date_time.rb +475 -0
  207. data/test/test_12_date_only.rb +525 -0
  208. data/test/test_13_date_seconds.rb +477 -0
  209. data/test/test_21_escher.rb +624 -0
  210. data/test/test_22_mso_drawing_group.rb +741 -0
  211. data/test/test_23_note.rb +57 -0
  212. data/test/test_24_txo.rb +74 -0
  213. data/test/test_25_position_object.rb +80 -0
  214. data/test/test_26_autofilter.rb +309 -0
  215. data/test/test_27_autofilter.rb +126 -0
  216. data/test/test_28_autofilter.rb +156 -0
  217. data/test/test_29_process_jpg.rb +670 -0
  218. data/test/test_30_validation_dval.rb +74 -0
  219. data/test/test_31_validation_dv_strings.rb +123 -0
  220. data/test/test_32_validation_dv_formula.rb +203 -0
  221. data/test/test_40_property_types.rb +188 -0
  222. data/test/test_41_properties.rb +235 -0
  223. data/test/test_42_set_properties.rb +434 -0
  224. data/test/test_50_name_stored.rb +295 -0
  225. data/test/test_51_name_print_area.rb +353 -0
  226. data/test/test_52_name_print_titles.rb +450 -0
  227. data/test/test_53_autofilter.rb +199 -0
  228. data/test/test_60_chart_generic.rb +574 -0
  229. data/test/test_61_chart_subclasses.rb +84 -0
  230. data/test/test_62_chart_formats.rb +268 -0
  231. data/test/test_63_chart_area_formats.rb +645 -0
  232. data/test/test_biff.rb +71 -0
  233. data/test/test_big_workbook.rb +17 -0
  234. data/test/test_compatibility.rb +12 -0
  235. data/test/test_example_match.rb +3246 -0
  236. data/test/test_format.rb +1189 -0
  237. data/test/test_formula.rb +61 -0
  238. data/test/test_ole.rb +102 -0
  239. data/test/test_storage_lite.rb +116 -0
  240. data/test/test_workbook.rb +146 -0
  241. data/test/test_worksheet.rb +106 -0
  242. data/utils/add_magic_comment.rb +80 -0
  243. data/writeexcel.gemspec +278 -0
  244. data/writeexcel.rdoc +1425 -0
  245. metadata +292 -0
@@ -0,0 +1,25 @@
1
+ class Workbook < BIFFWriter
2
+ require 'writeexcel/properties'
3
+ require 'writeexcel/helper'
4
+
5
+ class Worksheets < Array
6
+ attr_accessor :activesheet
7
+ attr_writer :firstsheet
8
+
9
+ def initialize
10
+ @activesheet = nil
11
+ end
12
+
13
+ def activesheet_index
14
+ index(@activesheet)
15
+ end
16
+
17
+ def firstsheet_index
18
+ index(@firstsheet) || 0
19
+ end
20
+
21
+ def selected_count
22
+ self.select { |sheet| sheet.selected? }.size
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,63 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+ class WriteFile
4
+ def initialize
5
+ @data = ''
6
+ @datasize = 0
7
+ @limit = 8224
8
+
9
+ # Open a tmp file to store the majority of the Worksheet data. If this fails,
10
+ # for example due to write permissions, store the data in memory. This can be
11
+ # slow for large files.
12
+ @filehandle = Tempfile.new('writeexcel')
13
+ @filehandle.binmode
14
+
15
+ # failed. store temporary data in memory.
16
+ @using_tmpfile = @filehandle ? true : false
17
+ end
18
+
19
+ ###############################################################################
20
+ #
21
+ # _prepend($data)
22
+ #
23
+ # General storage function
24
+ #
25
+ def prepend(*args)
26
+ data = join_data(args)
27
+ @data = data + @data
28
+
29
+ data
30
+ end
31
+
32
+ ###############################################################################
33
+ #
34
+ # _append($data)
35
+ #
36
+ # General storage function
37
+ #
38
+ def append(*args)
39
+ data = join_data(args)
40
+
41
+ if @using_tmpfile
42
+ @filehandle.write(data)
43
+ else
44
+ @data += data
45
+ end
46
+
47
+ data
48
+ end
49
+
50
+ private
51
+
52
+ def join_data(args)
53
+ data =
54
+ ruby_18 { args.join } ||
55
+ ruby_19 { args.compact.collect{ |arg| arg.dup.force_encoding('ASCII-8BIT') }.join }
56
+ # Add CONTINUE records if necessary
57
+ data = add_continue(data) if data.bytesize > @limit
58
+
59
+ @datasize += data.bytesize
60
+
61
+ data
62
+ end
63
+ end
Binary file
Binary file
Binary file
Binary file
Binary file
@@ -0,0 +1,31 @@
1
+ # -*- coding: utf-8 -*-
2
+ require 'rubygems'
3
+ require 'test/unit'
4
+
5
+ $LOAD_PATH.unshift(File.dirname(__FILE__))
6
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
7
+ require 'writeexcel'
8
+
9
+ class Test::Unit::TestCase
10
+ ###############################################################################
11
+ #
12
+ # Unpack the binary data into a format suitable for printing in tests.
13
+ #
14
+ def unpack_record(data)
15
+ data.unpack('C*').map! {|c| sprintf("%02X", c) }.join(' ')
16
+ end
17
+
18
+ # expected : existing file path
19
+ # target : io (ex) string io object where stored data.
20
+ def compare_file(expected, target)
21
+ # target is StringIO object.
22
+ result =
23
+ ruby_18 { target.string } ||
24
+ ruby_19 { target.string.force_encoding('BINARY') }
25
+ assert_equal(
26
+ File.binread(expected),
27
+ result,
28
+ "#{File.basename(expected)} doesn't match."
29
+ )
30
+ end
31
+ end
@@ -0,0 +1,31 @@
1
+ ###############################################################################
2
+ # This file contains sample output from the Spreadsheet::WriteExcel Perl
3
+ # module. Used for testing file sizes/contents
4
+ ###############################################################################
5
+
6
+ Files:
7
+
8
+ ws_ -> from Worksheet.pm
9
+ f_ -> from Format.pm
10
+ ole_ -> from OLEWriter.pm
11
+
12
+ f_font_biff
13
+ Output of the _get_font call
14
+
15
+ f_font_key
16
+ Output of the _get_font_key call
17
+
18
+ f_xf_biff
19
+ Output of the _get_xf call
20
+
21
+ ws_colinfo
22
+ Output of the _store_colinfo call (default values)
23
+
24
+ ws_store_dimensions
25
+ Output of the _store_dimensions call
26
+
27
+ ws_store_window2
28
+ Output of the _store_window call
29
+
30
+ ws_store_selection
31
+ Output of the _store_selection call
Binary file
@@ -0,0 +1 @@
1
+ Arial100004000000327670
@@ -0,0 +1 @@
1
+ Arial1000040000003276700
Binary file
@@ -0,0 +1 @@
1
+ 15
File without changes
Binary file
@@ -0,0 +1,13 @@
1
+ # -*- coding: utf-8 -*-
2
+ require 'helper'
3
+
4
+ class TC_BIFFWriter < Test::Unit::TestCase
5
+
6
+ def test_IEEE_double
7
+ teststr = [1.2345].pack("d")
8
+ hexdata = [0x8D, 0x97, 0x6E, 0x12, 0x83, 0xC0, 0xF3, 0x3F]
9
+ number = hexdata.pack("C8")
10
+
11
+ assert(number == teststr || number == teststr.reverse, "Not Little/Big endian. Give up.")
12
+ end
13
+ end
@@ -0,0 +1,10 @@
1
+ # -*- coding: utf-8 -*-
2
+ require 'helper'
3
+
4
+ class TC_add_worksheet < Test::Unit::TestCase
5
+
6
+ def test_true
7
+ assert(true)
8
+ end
9
+
10
+ end
@@ -0,0 +1,49 @@
1
+ # -*- coding: utf-8 -*-
2
+ require 'helper'
3
+ require 'stringio'
4
+
5
+ class TC_merge_formats < Test::Unit::TestCase
6
+
7
+ def setup
8
+ @workbook = WriteExcel.new(StringIO.new)
9
+ @worksheet = @workbook.add_worksheet
10
+ @merged_format = @workbook.add_format(:bold => 1)
11
+ @non_merged_format = @workbook.add_format(:bold => 1)
12
+
13
+ @worksheet.set_row( 5, nil, @merged_format)
14
+ @worksheet.set_column('G:G', nil, @merged_format)
15
+ end
16
+
17
+ def test_some
18
+ # Test 1 Normal usage.
19
+ assert_nothing_raised { @worksheet.write('A1', 'Test', @non_merged_format) }
20
+ assert_nothing_raised { @worksheet.write('A3:B4', 'Test', @merged_format) }
21
+
22
+ # Test 2 Non merge format in merged cells.
23
+ assert_nothing_raised {
24
+ @worksheet.merge_range('D3:E4', 'Test', @non_merged_format)
25
+ }
26
+
27
+ # Test 3 Merge format in column.
28
+ assert_nothing_raised { @worksheet.write('G1', 'Test') }
29
+
30
+ # Test 4 Merge format in row.
31
+ assert_nothing_raised { @worksheet.write('A6', 'Test') }
32
+
33
+ # Test 5 Merge format in column and row.
34
+ assert_nothing_raised { @worksheet.write('G6', 'Test') }
35
+
36
+ # Test 6 No merge format in column and row.
37
+ assert_nothing_raised { @worksheet.write('H7', 'Test') }
38
+
39
+ # Test 7 Normal usage again.
40
+ assert_nothing_raised {
41
+ @worksheet.write('A1', 'Test', @non_merged_format)
42
+ }
43
+ assert_nothing_raised {
44
+ @worksheet.merge_range('A3:B4', 'Test', @merged_format)
45
+ }
46
+ end
47
+
48
+
49
+ end
@@ -0,0 +1,388 @@
1
+ # -*- coding: utf-8 -*-
2
+ ###############################################################################
3
+ #
4
+ # A test for WriteExcel.
5
+ #
6
+ # Check that the Excel DIMENSIONS record is written correctly.
7
+ #
8
+ # reverse('©'), October 2007, John McNamara, jmcnamara@cpan.org
9
+ #
10
+ # original written in Perl by John McNamara
11
+ # converted to Ruby by Hideo Nakamura, cxn03651@msj.biglobe.ne.jp
12
+ #
13
+ ############################################################################
14
+ require 'helper'
15
+ require 'stringio'
16
+
17
+ class TC_dimensions < Test::Unit::TestCase
18
+
19
+ def setup
20
+ @workbook = WriteExcel.new(StringIO.new)
21
+ @worksheet = @workbook.add_worksheet
22
+ @format = @workbook.add_format
23
+ @dims = ['row_min', 'row_max', 'col_min', 'col_max']
24
+ @smiley = [0x263a].pack('n')
25
+ end
26
+
27
+ def test_no_worksheet_cell_data
28
+ data = @worksheet.__send__("store_dimensions")
29
+
30
+ vals = data.unpack('x4 VVvv')
31
+ alist = @dims.zip(vals)
32
+ results = Hash[*alist.flatten]
33
+
34
+ alist = @dims.zip([0, 0, 0, 0])
35
+ expected = Hash[*alist.flatten]
36
+
37
+ assert_equal(expected, results)
38
+ end
39
+
40
+ def test_data_in_cell_0_0
41
+ @worksheet.write(0, 0, 'Test')
42
+ data = @worksheet.__send__("store_dimensions")
43
+
44
+ vals = data.unpack('x4 VVvv')
45
+ alist = @dims.zip(vals)
46
+ results = Hash[*alist.flatten]
47
+
48
+ alist = @dims.zip([0, 1, 0, 1])
49
+ expected = Hash[*alist.flatten]
50
+
51
+ assert_equal(expected, results)
52
+ end
53
+
54
+ def test_data_in_cell_0_255
55
+ @worksheet.write(0, 255, 'Test')
56
+ data = @worksheet.__send__("store_dimensions")
57
+
58
+ vals = data.unpack('x4 VVvv')
59
+ alist = @dims.zip(vals)
60
+ results = Hash[*alist.flatten]
61
+
62
+ alist = @dims.zip([0, 1, 255, 256])
63
+ expected = Hash[*alist.flatten]
64
+
65
+ assert_equal(expected, results)
66
+ end
67
+
68
+ def test_data_in_cell_65535_0
69
+ @worksheet.write(65535, 0, 'Test')
70
+ data = @worksheet.__send__("store_dimensions")
71
+
72
+ vals = data.unpack('x4 VVvv')
73
+ alist = @dims.zip(vals)
74
+ results = Hash[*alist.flatten]
75
+
76
+ alist = @dims.zip([65535, 65536, 0, 1])
77
+ expected = Hash[*alist.flatten]
78
+
79
+ assert_equal(expected, results)
80
+ end
81
+
82
+ def test_data_in_cell_65535_255
83
+ @worksheet.write(65535, 255, 'Test')
84
+ data = @worksheet.__send__("store_dimensions")
85
+
86
+ vals = data.unpack('x4 VVvv')
87
+ alist = @dims.zip(vals)
88
+ results = Hash[*alist.flatten]
89
+
90
+ alist = @dims.zip([65535, 65536, 255, 256])
91
+ expected = Hash[*alist.flatten]
92
+
93
+ assert_equal(expected, results)
94
+ end
95
+
96
+ def test_set_row_for_row_4
97
+ @worksheet.set_row(4, 20)
98
+ data = @worksheet.__send__("store_dimensions")
99
+
100
+ vals = data.unpack('x4 VVvv')
101
+ alist = @dims.zip(vals)
102
+ results = Hash[*alist.flatten]
103
+
104
+ alist = @dims.zip([4, 5, 0, 0])
105
+ expected = Hash[*alist.flatten]
106
+
107
+ assert_equal(expected, results)
108
+ end
109
+
110
+ def test_set_row_for_row_4_to_6
111
+ @worksheet.set_row(4, 20)
112
+ @worksheet.set_row(5, 20)
113
+ @worksheet.set_row(6, 20)
114
+ data = @worksheet.__send__("store_dimensions")
115
+
116
+ vals = data.unpack('x4 VVvv')
117
+ alist = @dims.zip(vals)
118
+ results = Hash[*alist.flatten]
119
+
120
+ alist = @dims.zip([4, 7, 0, 0])
121
+ expected = Hash[*alist.flatten]
122
+
123
+ assert_equal(expected, results)
124
+ end
125
+
126
+ def test_set_column_for_row_4
127
+ @worksheet.set_column(4, 4, 20)
128
+ data = @worksheet.__send__("store_dimensions")
129
+
130
+ vals = data.unpack('x4 VVvv')
131
+ alist = @dims.zip(vals)
132
+ results = Hash[*alist.flatten]
133
+
134
+ alist = @dims.zip([0, 0, 0, 0])
135
+ expected = Hash[*alist.flatten]
136
+
137
+ assert_equal(expected, results)
138
+ end
139
+
140
+ def test_data_in_cell_0_0_and_set_row_for_row_4
141
+ @worksheet.write(0, 0, 'Test')
142
+ @worksheet.set_row(4, 20)
143
+ data = @worksheet.__send__("store_dimensions")
144
+
145
+ vals = data.unpack('x4 VVvv')
146
+ alist = @dims.zip(vals)
147
+ results = Hash[*alist.flatten]
148
+
149
+ alist = @dims.zip([0, 5, 0, 1])
150
+ expected = Hash[*alist.flatten]
151
+
152
+ assert_equal(expected, results)
153
+ end
154
+
155
+ def test_data_in_cell_0_0_and_set_row_for_row_4_reverse_order
156
+ @worksheet.set_row(4, 20)
157
+ @worksheet.write(0, 0, 'Test')
158
+ data = @worksheet.__send__("store_dimensions")
159
+
160
+ vals = data.unpack('x4 VVvv')
161
+ alist = @dims.zip(vals)
162
+ results = Hash[*alist.flatten]
163
+
164
+ alist = @dims.zip([0, 5, 0, 1])
165
+ expected = Hash[*alist.flatten]
166
+
167
+ assert_equal(expected, results)
168
+ end
169
+
170
+ def test_data_in_cell_5_3_and_set_row_for_row_4
171
+ @worksheet.write(5, 3, 'Test')
172
+ @worksheet.set_row(4, 20)
173
+ data = @worksheet.__send__("store_dimensions")
174
+
175
+ vals = data.unpack('x4 VVvv')
176
+ alist = @dims.zip(vals)
177
+ results = Hash[*alist.flatten]
178
+
179
+ alist = @dims.zip([4, 6, 3, 4])
180
+ expected = Hash[*alist.flatten]
181
+
182
+ assert_equal(expected, results)
183
+ end
184
+
185
+ def test_comment_in_cell_5_3
186
+ @worksheet.write_comment(5, 3, 'Test')
187
+ data = @worksheet.__send__("store_dimensions")
188
+
189
+ vals = data.unpack('x4 VVvv')
190
+ alist = @dims.zip(vals)
191
+ results = Hash[*alist.flatten]
192
+
193
+ alist = @dims.zip([5, 6, 3, 4])
194
+ expected = Hash[*alist.flatten]
195
+
196
+ assert_equal(expected, results)
197
+ end
198
+
199
+ def test_nil_value_for_row
200
+ error = @worksheet.write_string(nil, 1, 'Test')
201
+ data = @worksheet.__send__("store_dimensions")
202
+
203
+ vals = data.unpack('x4 VVvv')
204
+ alist = @dims.zip(vals)
205
+ results = Hash[*alist.flatten]
206
+
207
+ alist = @dims.zip([0, 0, 0, 0])
208
+ expected = Hash[*alist.flatten]
209
+
210
+ assert_equal(expected, results)
211
+ assert_equal(-2, error)
212
+ end
213
+
214
+ def test_data_in_cell_5_3_and_10_1
215
+ @worksheet.write( 5, 3, 'Test')
216
+ @worksheet.write(10, 1, 'Test')
217
+ data = @worksheet.__send__("store_dimensions")
218
+
219
+ vals = data.unpack('x4 VVvv')
220
+ alist = @dims.zip(vals)
221
+ results = Hash[*alist.flatten]
222
+
223
+ alist = @dims.zip([5, 11, 1, 4])
224
+ expected = Hash[*alist.flatten]
225
+
226
+ assert_equal(expected, results)
227
+ end
228
+
229
+ def test_data_in_cell_5_3_and_10_5
230
+ @worksheet.write( 5, 3, 'Test')
231
+ @worksheet.write(10, 5, 'Test')
232
+ data = @worksheet.__send__("store_dimensions")
233
+
234
+ vals = data.unpack('x4 VVvv')
235
+ alist = @dims.zip(vals)
236
+ results = Hash[*alist.flatten]
237
+
238
+ alist = @dims.zip([5, 11, 3, 6])
239
+ expected = Hash[*alist.flatten]
240
+
241
+ assert_equal(expected, results)
242
+ end
243
+
244
+ def test_write_string
245
+ @worksheet.write_string(5, 3, 'Test')
246
+ data = @worksheet.__send__("store_dimensions")
247
+
248
+ vals = data.unpack('x4 VVvv')
249
+ alist = @dims.zip(vals)
250
+ results = Hash[*alist.flatten]
251
+
252
+ alist = @dims.zip([5, 6, 3, 4])
253
+ expected = Hash[*alist.flatten]
254
+
255
+ assert_equal(expected, results)
256
+ end
257
+
258
+ def test_write_number
259
+ @worksheet.write_number(5, 3, 5)
260
+ data = @worksheet.__send__("store_dimensions")
261
+
262
+ vals = data.unpack('x4 VVvv')
263
+ alist = @dims.zip(vals)
264
+ results = Hash[*alist.flatten]
265
+
266
+ alist = @dims.zip([5, 6, 3, 4])
267
+ expected = Hash[*alist.flatten]
268
+
269
+ assert_equal(expected, results)
270
+ end
271
+
272
+ def test_write_url
273
+ @worksheet.write_url(5, 3, 'http://www.ruby.com')
274
+ data = @worksheet.__send__("store_dimensions")
275
+
276
+ vals = data.unpack('x4 VVvv')
277
+ alist = @dims.zip(vals)
278
+ results = Hash[*alist.flatten]
279
+
280
+ alist = @dims.zip([5, 6, 3, 4])
281
+ expected = Hash[*alist.flatten]
282
+
283
+ assert_equal(expected, results)
284
+ end
285
+
286
+ def test_write_formula
287
+ @worksheet.write_formula(5, 3, ' 1 + 2')
288
+ data = @worksheet.__send__("store_dimensions")
289
+
290
+ vals = data.unpack('x4 VVvv')
291
+ alist = @dims.zip(vals)
292
+ results = Hash[*alist.flatten]
293
+
294
+ alist = @dims.zip([5, 6, 3, 4])
295
+ expected = Hash[*alist.flatten]
296
+
297
+ assert_equal(expected, results)
298
+ end
299
+
300
+ def test_write_blank
301
+ @worksheet.write_string(5, 3, @format)
302
+ data = @worksheet.__send__("store_dimensions")
303
+
304
+ vals = data.unpack('x4 VVvv')
305
+ alist = @dims.zip(vals)
306
+ results = Hash[*alist.flatten]
307
+
308
+ alist = @dims.zip([5, 6, 3, 4])
309
+ expected = Hash[*alist.flatten]
310
+
311
+ assert_equal(expected, results)
312
+ end
313
+
314
+ def test_write_blank_no_format
315
+ @worksheet.write_string(5, 3)
316
+ data = @worksheet.__send__("store_dimensions")
317
+
318
+ vals = data.unpack('x4 VVvv')
319
+ alist = @dims.zip(vals)
320
+ results = Hash[*alist.flatten]
321
+
322
+ alist = @dims.zip([0, 0, 0, 0])
323
+ expected = Hash[*alist.flatten]
324
+
325
+ assert_equal(expected, results)
326
+ end
327
+
328
+ def test_write_utf16be_string
329
+ @worksheet.write_utf16be_string(5, 3, @smiley)
330
+ data = @worksheet.__send__("store_dimensions")
331
+
332
+ vals = data.unpack('x4 VVvv')
333
+ alist = @dims.zip(vals)
334
+ results = Hash[*alist.flatten]
335
+
336
+ alist = @dims.zip([5, 6, 3, 4])
337
+ expected = Hash[*alist.flatten]
338
+
339
+ assert_equal(expected, results)
340
+ end
341
+
342
+ def test_write_utf16le_string
343
+ @worksheet.write_utf16le_string(5, 3, @smiley)
344
+ data = @worksheet.__send__("store_dimensions")
345
+
346
+ vals = data.unpack('x4 VVvv')
347
+ alist = @dims.zip(vals)
348
+ results = Hash[*alist.flatten]
349
+
350
+ alist = @dims.zip([5, 6, 3, 4])
351
+ expected = Hash[*alist.flatten]
352
+
353
+ assert_equal(expected, results)
354
+ end
355
+
356
+ def test_repeat_formula
357
+ formula = @worksheet.__send__("store_formula", '=A1 * 3 + 50')
358
+ @worksheet.repeat_formula(5, 3, formula, @format, 'A1', 'A2')
359
+
360
+ data = @worksheet.__send__("store_dimensions")
361
+
362
+ vals = data.unpack('x4 VVvv')
363
+ alist = @dims.zip(vals)
364
+ results = Hash[*alist.flatten]
365
+
366
+ alist = @dims.zip([5, 6, 3, 4])
367
+ expected = Hash[*alist.flatten]
368
+
369
+ assert_equal(expected, results)
370
+ end
371
+
372
+ def test_merge_range
373
+ formula = @worksheet.__send__("store_formula", '=A1 * 3 + 50')
374
+ @worksheet.merge_range('C6:E8', 'Test', @format)
375
+
376
+ data = @worksheet.__send__("store_dimensions")
377
+
378
+ vals = data.unpack('x4 VVvv')
379
+ alist = @dims.zip(vals)
380
+ results = Hash[*alist.flatten]
381
+
382
+ alist = @dims.zip([5, 8, 2, 5])
383
+ expected = Hash[*alist.flatten]
384
+
385
+ assert_equal(expected, results)
386
+ end
387
+
388
+ end