writeexcel 0.5.0 → 0.6.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (130) hide show
  1. data/.gitattributes +1 -1
  2. data/.gitignore +24 -24
  3. data/README.rdoc +34 -55
  4. data/VERSION +1 -1
  5. data/charts/chartex.rb +316 -316
  6. data/charts/demo1.rb +46 -46
  7. data/charts/demo2.rb +65 -65
  8. data/charts/demo3.rb +117 -117
  9. data/charts/demo4.rb +119 -119
  10. data/charts/demo5.rb +48 -48
  11. data/examples/a_simple.rb +43 -43
  12. data/examples/autofilter.rb +265 -265
  13. data/examples/bigfile.rb +30 -30
  14. data/examples/chart_area.rb +121 -121
  15. data/examples/chart_bar.rb +120 -120
  16. data/examples/chart_column.rb +120 -120
  17. data/examples/chart_line.rb +120 -120
  18. data/examples/chart_pie.rb +108 -108
  19. data/examples/chart_scatter.rb +121 -121
  20. data/examples/chart_stock.rb +148 -148
  21. data/examples/chess.rb +142 -142
  22. data/examples/colors.rb +129 -129
  23. data/examples/comments1.rb +27 -27
  24. data/examples/comments2.rb +352 -352
  25. data/examples/copyformat.rb +52 -52
  26. data/examples/data_validate.rb +279 -279
  27. data/examples/date_time.rb +87 -87
  28. data/examples/defined_name.rb +32 -32
  29. data/examples/demo.rb +124 -124
  30. data/examples/diag_border.rb +36 -36
  31. data/examples/formats.rb +490 -490
  32. data/examples/formula_result.rb +30 -30
  33. data/examples/header.rb +137 -137
  34. data/examples/hide_sheet.rb +29 -29
  35. data/examples/hyperlink.rb +43 -43
  36. data/examples/images.rb +63 -63
  37. data/examples/indent.rb +31 -31
  38. data/examples/merge1.rb +40 -40
  39. data/examples/merge2.rb +45 -45
  40. data/examples/merge3.rb +66 -66
  41. data/examples/merge4.rb +83 -83
  42. data/examples/merge5.rb +80 -80
  43. data/examples/merge6.rb +67 -67
  44. data/examples/outline.rb +255 -255
  45. data/examples/outline_collapsed.rb +209 -209
  46. data/examples/panes.rb +113 -113
  47. data/examples/properties.rb +34 -34
  48. data/examples/properties_jp.rb +33 -33
  49. data/examples/protection.rb +47 -47
  50. data/examples/regions.rb +53 -53
  51. data/examples/repeat.rb +43 -43
  52. data/examples/right_to_left.rb +27 -27
  53. data/examples/row_wrap.rb +53 -53
  54. data/examples/stats.rb +74 -74
  55. data/examples/stocks.rb +81 -81
  56. data/examples/tab_colors.rb +31 -31
  57. data/examples/utf8.rb +15 -15
  58. data/examples/write_arrays.rb +83 -83
  59. data/lib/writeexcel/biffwriter.rb +232 -232
  60. data/lib/writeexcel/caller_info.rb +12 -12
  61. data/lib/writeexcel/chart.rb +2190 -2177
  62. data/lib/writeexcel/charts/area.rb +154 -154
  63. data/lib/writeexcel/charts/bar.rb +177 -177
  64. data/lib/writeexcel/charts/column.rb +156 -156
  65. data/lib/writeexcel/charts/external.rb +66 -66
  66. data/lib/writeexcel/charts/line.rb +154 -154
  67. data/lib/writeexcel/charts/pie.rb +169 -169
  68. data/lib/writeexcel/charts/scatter.rb +192 -192
  69. data/lib/writeexcel/charts/stock.rb +213 -213
  70. data/lib/writeexcel/colors.rb +64 -64
  71. data/lib/writeexcel/compatibility.rb +0 -255
  72. data/lib/writeexcel/debug_info.rb +37 -33
  73. data/lib/writeexcel/excelformulaparser.rb +587 -587
  74. data/lib/writeexcel/format.rb +13 -4
  75. data/lib/writeexcel/formula.rb +26 -9
  76. data/lib/writeexcel/helper.rb +68 -64
  77. data/lib/writeexcel/olewriter.rb +311 -311
  78. data/lib/writeexcel/properties.rb +242 -240
  79. data/lib/writeexcel/storage_lite.rb +984 -978
  80. data/lib/writeexcel/workbook.rb +3210 -3192
  81. data/lib/writeexcel/worksheet.rb +143 -51
  82. data/lib/writeexcel/write_file.rb +44 -40
  83. data/lib/writeexcel.rb +1159 -1159
  84. data/test/helper.rb +31 -28
  85. data/test/perl_output/README +31 -31
  86. data/test/test_00_IEEE_double.rb +13 -13
  87. data/test/test_01_add_worksheet.rb +10 -10
  88. data/test/test_02_merge_formats.rb +53 -53
  89. data/test/test_04_dimensions.rb +392 -392
  90. data/test/test_05_rows.rb +179 -179
  91. data/test/test_06_extsst.rb +77 -77
  92. data/test/test_11_date_time.rb +479 -479
  93. data/test/test_12_date_only.rb +501 -501
  94. data/test/test_13_date_seconds.rb +481 -481
  95. data/test/test_21_escher.rb +637 -637
  96. data/test/test_22_mso_drawing_group.rb +745 -745
  97. data/test/test_23_note.rb +73 -73
  98. data/test/test_24_txo.rb +75 -75
  99. data/test/test_25_position_object.rb +84 -84
  100. data/test/test_26_autofilter.rb +314 -314
  101. data/test/test_27_autofilter.rb +131 -131
  102. data/test/test_28_autofilter.rb +161 -161
  103. data/test/test_29_process_jpg.rb +683 -683
  104. data/test/test_30_validation_dval.rb +77 -77
  105. data/test/test_31_validation_dv_strings.rb +126 -126
  106. data/test/test_32_validation_dv_formula.rb +206 -206
  107. data/test/test_40_property_types.rb +188 -188
  108. data/test/test_41_properties.rb +235 -235
  109. data/test/test_42_set_properties.rb +437 -437
  110. data/test/test_50_name_stored.rb +299 -299
  111. data/test/test_51_name_print_area.rb +357 -357
  112. data/test/test_52_name_print_titles.rb +454 -454
  113. data/test/test_53_autofilter.rb +203 -203
  114. data/test/test_60_chart_generic.rb +578 -578
  115. data/test/test_61_chart_subclasses.rb +95 -95
  116. data/test/test_62_chart_formats.rb +272 -272
  117. data/test/test_63_chart_area_formats.rb +649 -649
  118. data/test/test_biff.rb +75 -75
  119. data/test/test_compatibility.rb +12 -627
  120. data/test/test_example_match.rb +3144 -3144
  121. data/test/test_formula.rb +61 -61
  122. data/test/test_ole.rb +106 -106
  123. data/test/test_storage_lite.rb +125 -125
  124. data/test/test_workbook.rb +139 -139
  125. data/test/test_worksheet.rb +110 -110
  126. data/utils/add_magic_comment.rb +80 -80
  127. data/writeexcel.gemspec +4 -6
  128. data/writeexcel.rdoc +58 -15
  129. metadata +9 -6
  130. data/test/test_new_encoding.rb +0 -205
data/test/test_05_rows.rb CHANGED
@@ -1,179 +1,179 @@
1
- # -*- coding: utf-8 -*-
2
- ###############################################################################
3
- #
4
- # A test for WriteExcel.
5
- #
6
- # Check that max/min columns of the Excel ROW record are 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_rows < Test::Unit::TestCase
18
-
19
- def setup
20
- end
21
-
22
- def test_1
23
- file = StringIO.new
24
- workbook = WriteExcel.new(file)
25
- workbook.compatibility_mode(1)
26
- @tests = []
27
-
28
- # for test case 1
29
- row = 1
30
- col1 = 0
31
- col2 = 0
32
- worksheet = workbook.add_worksheet
33
- worksheet.set_row(row, 15)
34
- @tests.push(
35
- [
36
- " \tset_row(): row = #{row}, col1 = #{col1}, col2 = #{col2}",
37
- {
38
- :col_min => 0,
39
- :col_max => 0,
40
- }
41
- ]
42
- )
43
-
44
- # for test case 2
45
- row = 2
46
- col1 = 0
47
- col2 = 0
48
- worksheet = workbook.add_worksheet
49
- worksheet.write(row, col1, 'Test')
50
- worksheet.write(row, col2, 'Test')
51
- @tests.push(
52
- [
53
- " \tset_row(): row = #{row}, col1 = #{col1}, col2 = #{col2}",
54
- {
55
- :col_min => 0,
56
- :col_max => 1,
57
- }
58
- ]
59
- )
60
-
61
-
62
- # for test case 3
63
- row = 3
64
- col1 = 0
65
- col2 = 1
66
- worksheet = workbook.add_worksheet
67
- worksheet.write(row, col1, 'Test')
68
- worksheet.write(row, col2, 'Test')
69
- @tests.push(
70
- [
71
- " \twrite(): row = #{row}, col1 = #{col1}, col2 = #{col2}",
72
- {
73
- :col_min => 0,
74
- :col_max => 2,
75
- }
76
- ]
77
- )
78
-
79
- # for test case 4
80
- row = 4
81
- col1 = 1
82
- col2 = 1
83
- worksheet = workbook.add_worksheet
84
- worksheet.write(row, col1, 'Test')
85
- worksheet.write(row, col2, 'Test')
86
- @tests.push(
87
- [
88
- " \twrite(): row = #{row}, col1 = #{col1}, col2 = #{col2}",
89
- {
90
- :col_min => 1,
91
- :col_max => 2,
92
- }
93
- ]
94
- )
95
-
96
- # for test case 5
97
- row = 5
98
- col1 = 1
99
- col2 = 255
100
- worksheet = workbook.add_worksheet
101
- worksheet.write(row, col1, 'Test')
102
- worksheet.write(row, col2, 'Test')
103
- @tests.push(
104
- [
105
- " \twrite(): row = #{row}, col1 = #{col1}, col2 = #{col2}",
106
- {
107
- :col_min => 1,
108
- :col_max => 256,
109
- }
110
- ]
111
- )
112
-
113
- # for test case 6
114
- row = 6
115
- col1 = 255
116
- col2 = 255
117
- worksheet = workbook.add_worksheet
118
- worksheet.write(row, col1, 'Test')
119
- worksheet.write(row, col2, 'Test')
120
- @tests.push(
121
- [
122
- " \twrite(): row = #{row}, col1 = #{col1}, col2 = #{col2}",
123
- {
124
- :col_min => 255,
125
- :col_max => 256,
126
- }
127
- ]
128
- )
129
-
130
- # for test case 7
131
- row = 7
132
- col1 = 2
133
- col2 = 9
134
- worksheet = workbook.add_worksheet
135
- worksheet.set_row(row, 15)
136
- worksheet.write(row, col1, 'Test')
137
- worksheet.write(row, col2, 'Test')
138
- @tests.push(
139
- [
140
- " \tset_row + write(): row = #{row}, col1 = #{col1}, col2 = #{col2}",
141
- {
142
- :col_min => 2,
143
- :col_max => 10,
144
- }
145
- ]
146
- )
147
-
148
- workbook.biff_only = 1
149
- workbook.close
150
- # Read in the row records
151
- rows = []
152
-
153
- xlsfile = StringIO.new(file.string)
154
-
155
- while header = xlsfile.read(4)
156
- record, length = header.unpack('vv')
157
- data = xlsfile.read(length)
158
-
159
- #read the row records only
160
- next unless record == 0x0208
161
- col_min, col_max = data.unpack('x2 vv')
162
-
163
- rows.push(
164
- {
165
- :col_min => col_min,
166
- :col_max => col_max
167
- }
168
- )
169
- end
170
- xlsfile.close
171
- (0 .. @tests.size - 1).each do |i|
172
- assert_equal(@tests[i][1], rows[i], @tests[i][0])
173
- end
174
- end
175
-
176
- def teardown
177
- end
178
-
179
- end
1
+ # -*- coding: utf-8 -*-
2
+ ###############################################################################
3
+ #
4
+ # A test for WriteExcel.
5
+ #
6
+ # Check that max/min columns of the Excel ROW record are 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_rows < Test::Unit::TestCase
18
+
19
+ def setup
20
+ end
21
+
22
+ def test_1
23
+ file = StringIO.new
24
+ workbook = WriteExcel.new(file)
25
+ workbook.compatibility_mode(1)
26
+ @tests = []
27
+
28
+ # for test case 1
29
+ row = 1
30
+ col1 = 0
31
+ col2 = 0
32
+ worksheet = workbook.add_worksheet
33
+ worksheet.set_row(row, 15)
34
+ @tests.push(
35
+ [
36
+ " \tset_row(): row = #{row}, col1 = #{col1}, col2 = #{col2}",
37
+ {
38
+ :col_min => 0,
39
+ :col_max => 0,
40
+ }
41
+ ]
42
+ )
43
+
44
+ # for test case 2
45
+ row = 2
46
+ col1 = 0
47
+ col2 = 0
48
+ worksheet = workbook.add_worksheet
49
+ worksheet.write(row, col1, 'Test')
50
+ worksheet.write(row, col2, 'Test')
51
+ @tests.push(
52
+ [
53
+ " \tset_row(): row = #{row}, col1 = #{col1}, col2 = #{col2}",
54
+ {
55
+ :col_min => 0,
56
+ :col_max => 1,
57
+ }
58
+ ]
59
+ )
60
+
61
+
62
+ # for test case 3
63
+ row = 3
64
+ col1 = 0
65
+ col2 = 1
66
+ worksheet = workbook.add_worksheet
67
+ worksheet.write(row, col1, 'Test')
68
+ worksheet.write(row, col2, 'Test')
69
+ @tests.push(
70
+ [
71
+ " \twrite(): row = #{row}, col1 = #{col1}, col2 = #{col2}",
72
+ {
73
+ :col_min => 0,
74
+ :col_max => 2,
75
+ }
76
+ ]
77
+ )
78
+
79
+ # for test case 4
80
+ row = 4
81
+ col1 = 1
82
+ col2 = 1
83
+ worksheet = workbook.add_worksheet
84
+ worksheet.write(row, col1, 'Test')
85
+ worksheet.write(row, col2, 'Test')
86
+ @tests.push(
87
+ [
88
+ " \twrite(): row = #{row}, col1 = #{col1}, col2 = #{col2}",
89
+ {
90
+ :col_min => 1,
91
+ :col_max => 2,
92
+ }
93
+ ]
94
+ )
95
+
96
+ # for test case 5
97
+ row = 5
98
+ col1 = 1
99
+ col2 = 255
100
+ worksheet = workbook.add_worksheet
101
+ worksheet.write(row, col1, 'Test')
102
+ worksheet.write(row, col2, 'Test')
103
+ @tests.push(
104
+ [
105
+ " \twrite(): row = #{row}, col1 = #{col1}, col2 = #{col2}",
106
+ {
107
+ :col_min => 1,
108
+ :col_max => 256,
109
+ }
110
+ ]
111
+ )
112
+
113
+ # for test case 6
114
+ row = 6
115
+ col1 = 255
116
+ col2 = 255
117
+ worksheet = workbook.add_worksheet
118
+ worksheet.write(row, col1, 'Test')
119
+ worksheet.write(row, col2, 'Test')
120
+ @tests.push(
121
+ [
122
+ " \twrite(): row = #{row}, col1 = #{col1}, col2 = #{col2}",
123
+ {
124
+ :col_min => 255,
125
+ :col_max => 256,
126
+ }
127
+ ]
128
+ )
129
+
130
+ # for test case 7
131
+ row = 7
132
+ col1 = 2
133
+ col2 = 9
134
+ worksheet = workbook.add_worksheet
135
+ worksheet.set_row(row, 15)
136
+ worksheet.write(row, col1, 'Test')
137
+ worksheet.write(row, col2, 'Test')
138
+ @tests.push(
139
+ [
140
+ " \tset_row + write(): row = #{row}, col1 = #{col1}, col2 = #{col2}",
141
+ {
142
+ :col_min => 2,
143
+ :col_max => 10,
144
+ }
145
+ ]
146
+ )
147
+
148
+ workbook.biff_only = 1
149
+ workbook.close
150
+ # Read in the row records
151
+ rows = []
152
+
153
+ xlsfile = StringIO.new(file.string)
154
+
155
+ while header = xlsfile.read(4)
156
+ record, length = header.unpack('vv')
157
+ data = xlsfile.read(length)
158
+
159
+ #read the row records only
160
+ next unless record == 0x0208
161
+ col_min, col_max = data.unpack('x2 vv')
162
+
163
+ rows.push(
164
+ {
165
+ :col_min => col_min,
166
+ :col_max => col_max
167
+ }
168
+ )
169
+ end
170
+ xlsfile.close
171
+ (0 .. @tests.size - 1).each do |i|
172
+ assert_equal(@tests[i][1], rows[i], @tests[i][0])
173
+ end
174
+ end
175
+
176
+ def teardown
177
+ end
178
+
179
+ end
@@ -1,77 +1,77 @@
1
- # -*- coding: utf-8 -*-
2
- ###############################################################################
3
- #
4
- # A test for WriteExcel.
5
- #
6
- # all test is commented out because Workbook#calculate_extsst_size was set to
7
- # private method. Before that, all test passed.
8
- #
9
- #
10
- #
11
- #
12
- # Check that we calculate the correct bucket size and number for the EXTSST
13
- # record. The data is taken from actual Excel files.
14
- #
15
- # reverse('©'), October 2007, John McNamara, jmcnamara@cpan.org
16
- #
17
- # original written in Perl by John McNamara
18
- # converted to Ruby by Hideo Nakamura, cxn03651@msj.biglobe.ne.jp
19
- #
20
- ############################################################################
21
- require 'helper'
22
- require 'stringio'
23
-
24
- class TC_extsst < Test::Unit::TestCase
25
-
26
- def setup
27
- @tests = [ # Unique Number of Bucket
28
- # strings buckets size
29
- [0, 0, 8],
30
- [1, 1, 8],
31
- [7, 1, 8],
32
- [8, 1, 8],
33
- [15, 2, 8],
34
- [16, 2, 8],
35
- [17, 3, 8],
36
- [32, 4, 8],
37
- [33, 5, 8],
38
- [64, 8, 8],
39
- [128, 16, 8],
40
- [256, 32, 8],
41
- [512, 64, 8],
42
- [1023, 128, 8],
43
- [1024, 114, 9],
44
- [1025, 114, 9],
45
- [2048, 121, 17],
46
- [4096, 125, 33],
47
- [4097, 125, 33],
48
- [8192, 127, 65],
49
- [8193, 127, 65],
50
- [9000, 127, 71],
51
- [10000, 127, 79],
52
- [16384, 128, 129],
53
- [262144, 128, 2049],
54
- [1048576, 128, 8193],
55
- [4194304, 128, 32769],
56
- [8257536, 128, 64513],
57
- ]
58
- end
59
-
60
- def test_to_tests
61
- @tests.each do |test|
62
- io = StringIO.new
63
- workbook = WriteExcel.new(io)
64
- workbook.not_using_tmpfile
65
-
66
- str_unique = test[0]
67
-
68
- workbook.str_unique = str_unique
69
- workbook.calculate_extsst_size
70
-
71
- assert_equal(test[1], workbook.extsst_buckets,
72
- " \tBucket number for #{str_unique} strings")
73
- assert_equal(test[2], workbook.extsst_bucket_size,
74
- " \tBucket size for #{str_unique} strings")
75
- end
76
- end
77
- end
1
+ # -*- coding: utf-8 -*-
2
+ ###############################################################################
3
+ #
4
+ # A test for WriteExcel.
5
+ #
6
+ # all test is commented out because Workbook#calculate_extsst_size was set to
7
+ # private method. Before that, all test passed.
8
+ #
9
+ #
10
+ #
11
+ #
12
+ # Check that we calculate the correct bucket size and number for the EXTSST
13
+ # record. The data is taken from actual Excel files.
14
+ #
15
+ # reverse('©'), October 2007, John McNamara, jmcnamara@cpan.org
16
+ #
17
+ # original written in Perl by John McNamara
18
+ # converted to Ruby by Hideo Nakamura, cxn03651@msj.biglobe.ne.jp
19
+ #
20
+ ############################################################################
21
+ require 'helper'
22
+ require 'stringio'
23
+
24
+ class TC_extsst < Test::Unit::TestCase
25
+
26
+ def setup
27
+ @tests = [ # Unique Number of Bucket
28
+ # strings buckets size
29
+ [0, 0, 8],
30
+ [1, 1, 8],
31
+ [7, 1, 8],
32
+ [8, 1, 8],
33
+ [15, 2, 8],
34
+ [16, 2, 8],
35
+ [17, 3, 8],
36
+ [32, 4, 8],
37
+ [33, 5, 8],
38
+ [64, 8, 8],
39
+ [128, 16, 8],
40
+ [256, 32, 8],
41
+ [512, 64, 8],
42
+ [1023, 128, 8],
43
+ [1024, 114, 9],
44
+ [1025, 114, 9],
45
+ [2048, 121, 17],
46
+ [4096, 125, 33],
47
+ [4097, 125, 33],
48
+ [8192, 127, 65],
49
+ [8193, 127, 65],
50
+ [9000, 127, 71],
51
+ [10000, 127, 79],
52
+ [16384, 128, 129],
53
+ [262144, 128, 2049],
54
+ [1048576, 128, 8193],
55
+ [4194304, 128, 32769],
56
+ [8257536, 128, 64513],
57
+ ]
58
+ end
59
+
60
+ def test_to_tests
61
+ @tests.each do |test|
62
+ io = StringIO.new
63
+ workbook = WriteExcel.new(io)
64
+ workbook.not_using_tmpfile
65
+
66
+ str_unique = test[0]
67
+
68
+ workbook.str_unique = str_unique
69
+ workbook.calculate_extsst_size
70
+
71
+ assert_equal(test[1], workbook.extsst_buckets,
72
+ " \tBucket number for #{str_unique} strings")
73
+ assert_equal(test[2], workbook.extsst_bucket_size,
74
+ " \tBucket size for #{str_unique} strings")
75
+ end
76
+ end
77
+ end