mindreframer-creek 1.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,78 @@
1
+ <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
2
+ <sst xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" count="6" uniqueCount="5">
3
+ <si>
4
+ <t>Cell A1</t>
5
+ </si>
6
+ <si>
7
+ <t>Cell B1</t>
8
+ </si>
9
+ <si>
10
+ <t>My Cell</t>
11
+ </si>
12
+ <si>
13
+ <r>
14
+ <rPr>
15
+ <sz val="11"/>
16
+ <color rgb="FFFF0000"/>
17
+ <rFont val="Calibri"/>
18
+ <family val="2"/>
19
+ <scheme val="minor"/>
20
+ </rPr>
21
+ <t>Cell</t>
22
+ </r>
23
+ <r>
24
+ <rPr>
25
+ <sz val="11"/>
26
+ <color theme="1"/>
27
+ <rFont val="Calibri"/>
28
+ <family val="2"/>
29
+ <scheme val="minor"/>
30
+ </rPr>
31
+ <t xml:space="preserve"> </t>
32
+ </r>
33
+ <r>
34
+ <rPr>
35
+ <b/>
36
+ <sz val="11"/>
37
+ <color theme="1"/>
38
+ <rFont val="Calibri"/>
39
+ <family val="2"/>
40
+ <scheme val="minor"/>
41
+ </rPr>
42
+ <t>A2</t>
43
+ </r>
44
+ </si>
45
+ <si>
46
+ <r>
47
+ <rPr>
48
+ <sz val="11"/>
49
+ <color rgb="FF00B0F0"/>
50
+ <rFont val="Calibri"/>
51
+ <family val="2"/>
52
+ <scheme val="minor"/>
53
+ </rPr>
54
+ <t>Cell</t>
55
+ </r>
56
+ <r>
57
+ <rPr>
58
+ <sz val="11"/>
59
+ <color theme="1"/>
60
+ <rFont val="Calibri"/>
61
+ <family val="2"/>
62
+ <scheme val="minor"/>
63
+ </rPr>
64
+ <t xml:space="preserve"> </t>
65
+ </r>
66
+ <r>
67
+ <rPr>
68
+ <i/>
69
+ <sz val="11"/>
70
+ <color theme="1"/>
71
+ <rFont val="Calibri"/>
72
+ <family val="2"/>
73
+ <scheme val="minor"/>
74
+ </rPr>
75
+ <t>B2</t>
76
+ </r>
77
+ </si>
78
+ </sst>
@@ -0,0 +1,208 @@
1
+ <?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
2
+ <styleSheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main">
3
+ <numFmts count="2">
4
+ <numFmt numFmtId="164" formatCode="GENERAL" />
5
+ <numFmt numFmtId="165" formatCode="MM/DD/YYYY" />
6
+ </numFmts>
7
+ <fonts count="6">
8
+ <font>
9
+ <sz val="11" />
10
+ <color rgb="FF000000" />
11
+ <name val="Calibri" />
12
+ <family val="2" />
13
+ <charset val="1" />
14
+ </font>
15
+ <font>
16
+ <sz val="10" />
17
+ <name val="Arial" />
18
+ <family val="0" />
19
+ </font>
20
+ <font>
21
+ <sz val="10" />
22
+ <name val="Arial" />
23
+ <family val="0" />
24
+ </font>
25
+ <font>
26
+ <sz val="10" />
27
+ <name val="Arial" />
28
+ <family val="0" />
29
+ </font>
30
+ <font><b val="true" />
31
+ <sz val="12" />
32
+ <color rgb="FFFFFFFF" />
33
+ <name val="Calibri" />
34
+ <family val="2" />
35
+ <charset val="1" />
36
+ </font>
37
+ <font><b val="true" />
38
+ <sz val="11" />
39
+ <color rgb="FF000000" />
40
+ <name val="Calibri" />
41
+ <family val="2" />
42
+ <charset val="1" />
43
+ </font>
44
+ </fonts>
45
+ <fills count="4">
46
+ <fill>
47
+ <patternFill patternType="none" />
48
+ </fill>
49
+ <fill>
50
+ <patternFill patternType="gray125" />
51
+ </fill>
52
+ <fill>
53
+ <patternFill patternType="solid">
54
+ <fgColor rgb="FF090948" />
55
+ <bgColor rgb="FF000080" />
56
+ </patternFill>
57
+ </fill>
58
+ <fill>
59
+ <patternFill patternType="solid">
60
+ <fgColor rgb="FFDCE6F2" />
61
+ <bgColor rgb="FFCCFFFF" />
62
+ </patternFill>
63
+ </fill>
64
+ </fills>
65
+ <borders count="2">
66
+ <border diagonalUp="false" diagonalDown="false">
67
+ <left/>
68
+ <right/>
69
+ <top/>
70
+ <bottom/>
71
+ <diagonal/>
72
+ </border>
73
+ <border diagonalUp="false" diagonalDown="false">
74
+ <left style="thin" />
75
+ <right style="thin" />
76
+ <top style="thin" />
77
+ <bottom style="thin" />
78
+ <diagonal/>
79
+ </border>
80
+ </borders>
81
+ <cellStyleXfs count="20">
82
+ <xf numFmtId="164" fontId="0" fillId="0" borderId="0" applyFont="true" applyBorder="true" applyAlignment="true" applyProtection="true">
83
+ <alignment horizontal="general" vertical="bottom" textRotation="0" wrapText="false" indent="0" shrinkToFit="false" />
84
+ <protection locked="true" hidden="false" />
85
+ </xf>
86
+ <xf numFmtId="0" fontId="1" fillId="0" borderId="0" applyFont="true" applyBorder="false" applyAlignment="false" applyProtection="false"></xf>
87
+ <xf numFmtId="0" fontId="1" fillId="0" borderId="0" applyFont="true" applyBorder="false" applyAlignment="false" applyProtection="false"></xf>
88
+ <xf numFmtId="0" fontId="2" fillId="0" borderId="0" applyFont="true" applyBorder="false" applyAlignment="false" applyProtection="false"></xf>
89
+ <xf numFmtId="0" fontId="2" fillId="0" borderId="0" applyFont="true" applyBorder="false" applyAlignment="false" applyProtection="false"></xf>
90
+ <xf numFmtId="0" fontId="0" fillId="0" borderId="0" applyFont="true" applyBorder="false" applyAlignment="false" applyProtection="false"></xf>
91
+ <xf numFmtId="0" fontId="0" fillId="0" borderId="0" applyFont="true" applyBorder="false" applyAlignment="false" applyProtection="false"></xf>
92
+ <xf numFmtId="0" fontId="0" fillId="0" borderId="0" applyFont="true" applyBorder="false" applyAlignment="false" applyProtection="false"></xf>
93
+ <xf numFmtId="0" fontId="0" fillId="0" borderId="0" applyFont="true" applyBorder="false" applyAlignment="false" applyProtection="false"></xf>
94
+ <xf numFmtId="0" fontId="0" fillId="0" borderId="0" applyFont="true" applyBorder="false" applyAlignment="false" applyProtection="false"></xf>
95
+ <xf numFmtId="0" fontId="0" fillId="0" borderId="0" applyFont="true" applyBorder="false" applyAlignment="false" applyProtection="false"></xf>
96
+ <xf numFmtId="0" fontId="0" fillId="0" borderId="0" applyFont="true" applyBorder="false" applyAlignment="false" applyProtection="false"></xf>
97
+ <xf numFmtId="0" fontId="0" fillId="0" borderId="0" applyFont="true" applyBorder="false" applyAlignment="false" applyProtection="false"></xf>
98
+ <xf numFmtId="0" fontId="0" fillId="0" borderId="0" applyFont="true" applyBorder="false" applyAlignment="false" applyProtection="false"></xf>
99
+ <xf numFmtId="0" fontId="0" fillId="0" borderId="0" applyFont="true" applyBorder="false" applyAlignment="false" applyProtection="false"></xf>
100
+ <xf numFmtId="43" fontId="1" fillId="0" borderId="0" applyFont="true" applyBorder="false" applyAlignment="false" applyProtection="false"></xf>
101
+ <xf numFmtId="41" fontId="1" fillId="0" borderId="0" applyFont="true" applyBorder="false" applyAlignment="false" applyProtection="false"></xf>
102
+ <xf numFmtId="44" fontId="1" fillId="0" borderId="0" applyFont="true" applyBorder="false" applyAlignment="false" applyProtection="false"></xf>
103
+ <xf numFmtId="42" fontId="1" fillId="0" borderId="0" applyFont="true" applyBorder="false" applyAlignment="false" applyProtection="false"></xf>
104
+ <xf numFmtId="9" fontId="1" fillId="0" borderId="0" applyFont="true" applyBorder="false" applyAlignment="false" applyProtection="false"></xf>
105
+ </cellStyleXfs>
106
+ <cellXfs count="8">
107
+ <xf numFmtId="164" fontId="0" fillId="0" borderId="0" xfId="0" applyFont="false" applyBorder="false" applyAlignment="false" applyProtection="false">
108
+ <alignment horizontal="general" vertical="bottom" textRotation="0" wrapText="false" indent="0" shrinkToFit="false" />
109
+ <protection locked="true" hidden="false" />
110
+ </xf>
111
+ <xf numFmtId="164" fontId="4" fillId="2" borderId="1" xfId="0" applyFont="true" applyBorder="true" applyAlignment="true" applyProtection="false">
112
+ <alignment horizontal="center" vertical="bottom" textRotation="0" wrapText="false" indent="0" shrinkToFit="false" />
113
+ <protection locked="true" hidden="false" />
114
+ </xf>
115
+ <xf numFmtId="164" fontId="4" fillId="2" borderId="0" xfId="0" applyFont="true" applyBorder="true" applyAlignment="true" applyProtection="false">
116
+ <alignment horizontal="center" vertical="bottom" textRotation="0" wrapText="false" indent="0" shrinkToFit="false" />
117
+ <protection locked="true" hidden="false" />
118
+ </xf>
119
+ <xf numFmtId="165" fontId="4" fillId="2" borderId="0" xfId="0" applyFont="true" applyBorder="true" applyAlignment="true" applyProtection="false">
120
+ <alignment horizontal="center" vertical="bottom" textRotation="0" wrapText="false" indent="0" shrinkToFit="false" />
121
+ <protection locked="true" hidden="false" />
122
+ </xf>
123
+ <xf numFmtId="164" fontId="5" fillId="3" borderId="0" xfId="0" applyFont="true" applyBorder="true" applyAlignment="true" applyProtection="false">
124
+ <alignment horizontal="general" vertical="center" textRotation="0" wrapText="true" indent="0" shrinkToFit="false" />
125
+ <protection locked="true" hidden="false" />
126
+ </xf>
127
+ <xf numFmtId="164" fontId="0" fillId="0" borderId="0" xfId="0" applyFont="true" applyBorder="true" applyAlignment="true" applyProtection="false">
128
+ <alignment horizontal="left" vertical="center" textRotation="0" wrapText="true" indent="0" shrinkToFit="false" />
129
+ <protection locked="true" hidden="false" />
130
+ </xf>
131
+ <xf numFmtId="164" fontId="0" fillId="0" borderId="0" xfId="0" applyFont="true" applyBorder="false" applyAlignment="false" applyProtection="false">
132
+ <alignment horizontal="general" vertical="bottom" textRotation="0" wrapText="false" indent="0" shrinkToFit="false" />
133
+ <protection locked="true" hidden="false" />
134
+ </xf>
135
+ <xf numFmtId="164" fontId="0" fillId="0" borderId="0" xfId="0" applyFont="false" applyBorder="true" applyAlignment="false" applyProtection="false">
136
+ <alignment horizontal="general" vertical="bottom" textRotation="0" wrapText="false" indent="0" shrinkToFit="false" />
137
+ <protection locked="true" hidden="false" />
138
+ </xf>
139
+ </cellXfs>
140
+ <cellStyles count="6">
141
+ <cellStyle name="Normal" xfId="0" builtinId="0" customBuiltin="false" />
142
+ <cellStyle name="Comma" xfId="15" builtinId="3" customBuiltin="false" />
143
+ <cellStyle name="Comma [0]" xfId="16" builtinId="6" customBuiltin="false" />
144
+ <cellStyle name="Currency" xfId="17" builtinId="4" customBuiltin="false" />
145
+ <cellStyle name="Currency [0]" xfId="18" builtinId="7" customBuiltin="false" />
146
+ <cellStyle name="Percent" xfId="19" builtinId="5" customBuiltin="false" />
147
+ </cellStyles>
148
+ <colors>
149
+ <indexedColors>
150
+ <rgbColor rgb="FF000000" />
151
+ <rgbColor rgb="FFFFFFFF" />
152
+ <rgbColor rgb="FFFF0000" />
153
+ <rgbColor rgb="FF00FF00" />
154
+ <rgbColor rgb="FF0000FF" />
155
+ <rgbColor rgb="FFFFFF00" />
156
+ <rgbColor rgb="FFFF00FF" />
157
+ <rgbColor rgb="FF00FFFF" />
158
+ <rgbColor rgb="FF800000" />
159
+ <rgbColor rgb="FF008000" />
160
+ <rgbColor rgb="FF090948" />
161
+ <rgbColor rgb="FF808000" />
162
+ <rgbColor rgb="FF800080" />
163
+ <rgbColor rgb="FF008080" />
164
+ <rgbColor rgb="FFC0C0C0" />
165
+ <rgbColor rgb="FF808080" />
166
+ <rgbColor rgb="FF9999FF" />
167
+ <rgbColor rgb="FF993366" />
168
+ <rgbColor rgb="FFFFFFCC" />
169
+ <rgbColor rgb="FFDCE6F2" />
170
+ <rgbColor rgb="FF660066" />
171
+ <rgbColor rgb="FFFF8080" />
172
+ <rgbColor rgb="FF0066CC" />
173
+ <rgbColor rgb="FFCCCCFF" />
174
+ <rgbColor rgb="FF000080" />
175
+ <rgbColor rgb="FFFF00FF" />
176
+ <rgbColor rgb="FFFFFF00" />
177
+ <rgbColor rgb="FF00FFFF" />
178
+ <rgbColor rgb="FF800080" />
179
+ <rgbColor rgb="FF800000" />
180
+ <rgbColor rgb="FF008080" />
181
+ <rgbColor rgb="FF0000FF" />
182
+ <rgbColor rgb="FF00CCFF" />
183
+ <rgbColor rgb="FFCCFFFF" />
184
+ <rgbColor rgb="FFCCFFCC" />
185
+ <rgbColor rgb="FFFFFF99" />
186
+ <rgbColor rgb="FF99CCFF" />
187
+ <rgbColor rgb="FFFF99CC" />
188
+ <rgbColor rgb="FFCC99FF" />
189
+ <rgbColor rgb="FFFFCC99" />
190
+ <rgbColor rgb="FF3366FF" />
191
+ <rgbColor rgb="FF33CCCC" />
192
+ <rgbColor rgb="FF99CC00" />
193
+ <rgbColor rgb="FFFFCC00" />
194
+ <rgbColor rgb="FFFF9900" />
195
+ <rgbColor rgb="FFFF6600" />
196
+ <rgbColor rgb="FF666699" />
197
+ <rgbColor rgb="FF969696" />
198
+ <rgbColor rgb="FF003366" />
199
+ <rgbColor rgb="FF339966" />
200
+ <rgbColor rgb="FF003300" />
201
+ <rgbColor rgb="FF333300" />
202
+ <rgbColor rgb="FF993300" />
203
+ <rgbColor rgb="FF993366" />
204
+ <rgbColor rgb="FF333399" />
205
+ <rgbColor rgb="FF333333" />
206
+ </indexedColors>
207
+ </colors>
208
+ </styleSheet>
@@ -0,0 +1,18 @@
1
+ require './spec/spec_helper'
2
+
3
+ describe 'shared strings' do
4
+
5
+ it 'parses rich text strings correctly' do
6
+ shared_strings_xml_file = File.open('spec/fixtures/sst.xml')
7
+ doc = Nokogiri::XML(shared_strings_xml_file)
8
+ dictionary = Creek::SharedStrings.parse_shared_string_from_document(doc)
9
+
10
+ dictionary.keys.size.should == 5
11
+ dictionary[0].should == 'Cell A1'
12
+ dictionary[1].should == 'Cell B1'
13
+ dictionary[2].should == 'My Cell'
14
+ dictionary[3].should == 'Cell A2'
15
+ dictionary[4].should == 'Cell B2'
16
+ end
17
+
18
+ end
@@ -0,0 +1,3 @@
1
+ require 'creek'
2
+ require 'pry'
3
+
@@ -0,0 +1,16 @@
1
+ require './spec/spec_helper'
2
+
3
+ describe Creek::Styles::Converter do
4
+
5
+ describe :call do
6
+ def convert(value, type, style)
7
+ Creek::Styles::Converter.call(value, type, style)
8
+ end
9
+
10
+ describe :date_time do
11
+ it "works" do
12
+ convert('41275', 'n', :date_time).should == Date.new(2013,01,01)
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,15 @@
1
+ require './spec/spec_helper'
2
+
3
+ describe Creek::Styles::StyleTypes do
4
+
5
+ describe :call do
6
+ it "return array of styletypes with mapping to ruby types" do
7
+ xml_file = File.open('spec/fixtures/styles/first.xml')
8
+ doc = Nokogiri::XML(xml_file)
9
+ res = Creek::Styles::StyleTypes.new(doc).call
10
+ res.size.should == 8
11
+ res[3].should == :date_time
12
+ res.should == [:unsupported, :unsupported, :unsupported, :date_time, :unsupported, :unsupported, :unsupported, :unsupported]
13
+ end
14
+ end
15
+ end
data/spec/test_spec.rb ADDED
@@ -0,0 +1,99 @@
1
+ require './spec/spec_helper'
2
+
3
+ describe 'Creek trying to parsing an invalid file.' do
4
+ it 'Fail to open a legacy xls file.' do
5
+ lambda { Creek::Book.new 'spec/fixtures/invalid.xls' }.should raise_error 'Not a valid file format.'
6
+ end
7
+
8
+ it 'Ignore file extensions on request.' do
9
+ path = 'spec/fixtures/sample-as-zip.zip'
10
+ lambda { Creek::Book.new path, :check_file_extension => false }.should_not raise_error
11
+ end
12
+
13
+ it 'Check file extension when requested.' do
14
+ open_book = lambda { Creek::Book.new 'spec/fixtures/invalid.xls', :check_file_extension => true }
15
+ open_book.should raise_error 'Not a valid file format.'
16
+ end
17
+
18
+ it 'Check file extension of original_filename if passed.' do
19
+ path = 'spec/fixtures/temp_string_io_file_path_with_no_extension'
20
+ lambda { Creek::Book.new path, :original_filename => 'invalid.xls' }.should raise_error 'Not a valid file format.'
21
+ lambda { Creek::Book.new path, :original_filename => 'valid.xlsx' }.should_not raise_error
22
+ end
23
+
24
+ end
25
+
26
+ describe 'Creek parsing a sample XLSX file' do
27
+ before(:all) do
28
+ @creek = Creek::Book.new 'spec/fixtures/sample.xlsx'
29
+ @expected_rows = [{'A1'=>'Content 1', 'B1'=>nil, 'C1'=>'Content 2', 'D1'=>nil, 'E1'=>'Content 3'},
30
+ {'A2'=>nil, 'B2'=>'Content 4', 'C2'=>nil, 'D2'=>'Content 5', 'E2'=>nil, 'F2'=>'Content 6'},
31
+ {},
32
+ {'A4'=>'Content 7', 'B4'=>'Content 8', 'C4'=>'Content 9', 'D4'=>'Content 10', 'E4'=>'Content 11', 'F4'=>'Content 12'},
33
+ {'A5'=>nil, 'B5'=>nil, 'C5'=>nil, 'D5'=>nil, 'E5'=>nil, 'F5'=>nil, 'G5'=>nil, 'H5'=>nil, 'I5'=>nil, 'J5'=>nil, 'K5'=>nil, 'L5'=>nil, 'M5'=>nil, 'N5'=>nil, 'O5'=>nil, 'P5'=>nil, 'Q5'=>nil, 'R5'=>nil, 'S5'=>nil, 'T5'=>nil, 'U5'=>nil, 'V5'=>nil, 'W5'=>nil, 'X5'=>nil, 'Y5'=>nil, 'Z5'=>'Z Content', 'AA5'=>nil, 'AB5'=>nil, 'AC5'=>nil, 'AD5'=>nil, 'AE5'=>nil, 'AF5'=>nil, 'AG5'=>nil, 'AH5'=>nil, 'AI5'=>nil, 'AJ5'=>nil, 'AK5'=>nil, 'AL5'=>nil, 'AM5'=>nil, 'AN5'=>nil, 'AO5'=>nil, 'AP5'=>nil, 'AQ5'=>nil, 'AR5'=>nil, 'AS5'=>nil, 'AT5'=>nil, 'AU5'=>nil, 'AV5'=>nil, 'AW5'=>nil, 'AX5'=>nil, 'AY5'=>nil, 'AZ5'=>'Content 13'},
34
+ {'A6'=>'1', 'B6'=>'2', 'C6'=>'3'}, {'A7'=>'Content 15', 'B7'=>'Content 16', 'C7'=>'Content 18', 'D7'=>'Content 19'},
35
+ {'A8'=>nil, 'B8'=>'Content 20', 'C8'=>nil, 'D8'=>nil, 'E8'=>nil, 'F8'=>'Content 21'}]
36
+ end
37
+
38
+ after(:all) do
39
+ @creek.close
40
+ end
41
+
42
+ it 'open an XLSX file successfully.' do
43
+ @creek.should_not be_nil
44
+ end
45
+
46
+ it 'find sheets successfully.' do
47
+ @creek.sheets.count.should == 1
48
+ sheet = @creek.sheets.first
49
+ sheet.state.should eql nil
50
+ sheet.name.should eql 'Sheet1'
51
+ sheet.rid.should eql 'rId1'
52
+ end
53
+
54
+ it 'Parse rows with empty cells successfully.' do
55
+ rows = Array.new
56
+ row_count = 0
57
+ @creek.sheets[0].rows.each do |row|
58
+ rows << row
59
+ row_count += 1
60
+ end
61
+
62
+ rows[0].should == @expected_rows[0]
63
+ rows[1].should == @expected_rows[1]
64
+ rows[2].should == @expected_rows[2]
65
+ rows[3].should == @expected_rows[3]
66
+ rows[4].should == @expected_rows[4]
67
+ rows[5].should == @expected_rows[5]
68
+ rows[6].should == @expected_rows[6]
69
+ rows[7].should == @expected_rows[7]
70
+ row_count.should == 8
71
+ end
72
+
73
+ it 'Parse rows with empty cells and meta data successfully.' do
74
+ rows = Array.new
75
+ row_count = 0
76
+ @creek.sheets[0].rows_with_meta_data.each do |row|
77
+ rows << row
78
+ row_count += 1
79
+ end
80
+ rows.map{|r| r['cells']}.should == @expected_rows
81
+ end
82
+
83
+ describe 'row_array_generator' do
84
+ # @expected_rows = [{'A1'=>'Content 1', 'B1'=>nil, 'C1'=>'Content 2', 'D1'=>nil, 'E1'=>'Content 3'},
85
+ # {'A2'=>nil, 'B2'=>'Content 4', 'C2'=>nil, 'D2'=>'Content 5', 'E2'=>nil, 'F2'=>'Content 6'},
86
+ # {},
87
+ # {'A4'=>'Content 7', 'B4'=>'Content 8', 'C4'=>'Content 9', 'D4'=>'Content 10', 'E4'=>'Content 11', 'F4'=>'Content 12'},
88
+ # {'A5'=>nil, 'B5'=>nil, 'C5'=>nil, 'D5'=>nil, 'E5'=>nil, 'F5'=>nil, 'G5'=>nil, 'H5'=>nil, 'I5'=>nil, 'J5'=>nil, 'K5'=>nil, 'L5'=>nil, 'M5'=>nil, 'N5'=>nil, 'O5'=>nil, 'P5'=>nil, 'Q5'=>nil, 'R5'=>nil, 'S5'=>nil, 'T5'=>nil, 'U5'=>nil, 'V5'=>nil, 'W5'=>nil, 'X5'=>nil, 'Y5'=>nil, 'Z5'=>'Z Content', 'AA5'=>nil, 'AB5'=>nil, 'AC5'=>nil, 'AD5'=>nil, 'AE5'=>nil, 'AF5'=>nil, 'AG5'=>nil, 'AH5'=>nil, 'AI5'=>nil, 'AJ5'=>nil, 'AK5'=>nil, 'AL5'=>nil, 'AM5'=>nil, 'AN5'=>nil, 'AO5'=>nil, 'AP5'=>nil, 'AQ5'=>nil, 'AR5'=>nil, 'AS5'=>nil, 'AT5'=>nil, 'AU5'=>nil, 'AV5'=>nil, 'AW5'=>nil, 'AX5'=>nil, 'AY5'=>nil, 'AZ5'=>'Content 13'},
89
+ # {'A6'=>'1', 'B6'=>'2', 'C6'=>'3'}, {'A7'=>'Content 15', 'B7'=>'Content 16', 'C7'=>'Content 18', 'D7'=>'Content 19'},
90
+ # {'A8'=>nil, 'B8'=>'Content 20', 'C8'=>nil, 'D8'=>nil, 'E8'=>nil, 'F8'=>'Content 21'}]
91
+ it "returns array" do
92
+ rows = Array.new
93
+ @creek.sheets[0].rows_array.each do |row|
94
+ rows << row
95
+ end
96
+ rows.last.should == [nil, 'Content 20', nil, nil, nil, 'Content 21']
97
+ end
98
+ end
99
+ end