wrap_excel 0.0.7 → 0.0.8
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.
- data/.gitignore +1 -0
 - data/lib/wrap_excel/range.rb +2 -8
 - data/lib/wrap_excel/sheet.rb +19 -4
 - data/lib/wrap_excel/version.rb +1 -1
 - data/spec/cell_spec.rb +2 -2
 - data/spec/data/merge_cells.xls +0 -0
 - data/spec/range_spec.rb +41 -0
 - data/spec/sheet_spec.rb +26 -0
 - metadata +17 -17
 
    
        data/.gitignore
    CHANGED
    
    
    
        data/lib/wrap_excel/range.rb
    CHANGED
    
    | 
         @@ -14,14 +14,8 @@ module WrapExcel 
     | 
|
| 
       14 
14 
     | 
    
         
             
                end
         
     | 
| 
       15 
15 
     | 
    
         | 
| 
       16 
16 
     | 
    
         
             
                def values(range = nil)
         
     | 
| 
       17 
     | 
    
         
            -
                   
     | 
| 
       18 
     | 
    
         
            -
             
     | 
| 
       19 
     | 
    
         
            -
                    max = range.max + 1
         
     | 
| 
       20 
     | 
    
         
            -
                    result = @range.Range(@range.Cells.Item(min), @range.Cells(max)).value
         
     | 
| 
       21 
     | 
    
         
            -
                    result.is_a?(Array) ? result[0] : [result]
         
     | 
| 
       22 
     | 
    
         
            -
                  else
         
     | 
| 
       23 
     | 
    
         
            -
                    @range.Cells.value.flatten
         
     | 
| 
       24 
     | 
    
         
            -
                  end
         
     | 
| 
      
 17 
     | 
    
         
            +
                  result = self.map(&:value).flatten
         
     | 
| 
      
 18 
     | 
    
         
            +
                  range ? result.each_with_index.select{ |row_or_column, i| range.include?(i) }.map{ |i| i[0] } : result
         
     | 
| 
       25 
19 
     | 
    
         
             
                end
         
     | 
| 
       26 
20 
     | 
    
         | 
| 
       27 
21 
     | 
    
         
             
                def [] index
         
     | 
    
        data/lib/wrap_excel/sheet.rb
    CHANGED
    
    | 
         @@ -8,12 +8,12 @@ module WrapExcel 
     | 
|
| 
       8 
8 
     | 
    
         
             
                  @sheet = win32_worksheet
         
     | 
| 
       9 
9 
     | 
    
         
             
                  if @sheet.ProtectContents
         
     | 
| 
       10 
10 
     | 
    
         
             
                    @sheet.Unprotect
         
     | 
| 
       11 
     | 
    
         
            -
                    @end_row =  
     | 
| 
       12 
     | 
    
         
            -
                    @end_column =  
     | 
| 
      
 11 
     | 
    
         
            +
                    @end_row = last_row
         
     | 
| 
      
 12 
     | 
    
         
            +
                    @end_column = last_column
         
     | 
| 
       13 
13 
     | 
    
         
             
                    @sheet.Protect
         
     | 
| 
       14 
14 
     | 
    
         
             
                  else
         
     | 
| 
       15 
     | 
    
         
            -
                    @end_row =  
     | 
| 
       16 
     | 
    
         
            -
                    @end_column =  
     | 
| 
      
 15 
     | 
    
         
            +
                    @end_row = last_row
         
     | 
| 
      
 16 
     | 
    
         
            +
                    @end_column = last_column
         
     | 
| 
       17 
17 
     | 
    
         
             
                  end
         
     | 
| 
       18 
18 
     | 
    
         
             
                end
         
     | 
| 
       19 
19 
     | 
    
         | 
| 
         @@ -84,5 +84,20 @@ module WrapExcel 
     | 
|
| 
       84 
84 
     | 
    
         
             
                def method_missing(id, *args)
         
     | 
| 
       85 
85 
     | 
    
         
             
                  @sheet.send(id, *args)
         
     | 
| 
       86 
86 
     | 
    
         
             
                end
         
     | 
| 
      
 87 
     | 
    
         
            +
             
     | 
| 
      
 88 
     | 
    
         
            +
                private
         
     | 
| 
      
 89 
     | 
    
         
            +
                def last_row
         
     | 
| 
      
 90 
     | 
    
         
            +
                  special_last_row = @sheet.UsedRange.SpecialCells(WrapExcel::XlLastCell).Row
         
     | 
| 
      
 91 
     | 
    
         
            +
                  used_last_row = @sheet.UsedRange.Rows.Count
         
     | 
| 
      
 92 
     | 
    
         
            +
             
     | 
| 
      
 93 
     | 
    
         
            +
                  special_last_row >= used_last_row ? special_last_row : used_last_row
         
     | 
| 
      
 94 
     | 
    
         
            +
                end
         
     | 
| 
      
 95 
     | 
    
         
            +
             
     | 
| 
      
 96 
     | 
    
         
            +
                def last_column
         
     | 
| 
      
 97 
     | 
    
         
            +
                  special_last_column = @sheet.UsedRange.SpecialCells(WrapExcel::XlLastCell).Column
         
     | 
| 
      
 98 
     | 
    
         
            +
                  used_last_column = @sheet.UsedRange.Columns.Count
         
     | 
| 
      
 99 
     | 
    
         
            +
             
     | 
| 
      
 100 
     | 
    
         
            +
                  special_last_column >= used_last_column ? special_last_column : used_last_column
         
     | 
| 
      
 101 
     | 
    
         
            +
                end
         
     | 
| 
       87 
102 
     | 
    
         
             
              end
         
     | 
| 
       88 
103 
     | 
    
         
             
            end
         
     | 
    
        data/lib/wrap_excel/version.rb
    CHANGED
    
    
    
        data/spec/cell_spec.rb
    CHANGED
    
    | 
         @@ -53,8 +53,8 @@ describe WrapExcel::Cell do 
     | 
|
| 
       53 
53 
     | 
    
         
             
                end
         
     | 
| 
       54 
54 
     | 
    
         | 
| 
       55 
55 
     | 
    
         
             
                it "merged cell get same value" do
         
     | 
| 
       56 
     | 
    
         
            -
                  @sheet[0, 0].value.should  
     | 
| 
       57 
     | 
    
         
            -
                  @sheet[ 
     | 
| 
      
 56 
     | 
    
         
            +
                  @sheet[0, 0].value.should be_nil
         
     | 
| 
      
 57 
     | 
    
         
            +
                  @sheet[1, 0].value.should eq 'first merged'
         
     | 
| 
       58 
58 
     | 
    
         
             
                end
         
     | 
| 
       59 
59 
     | 
    
         | 
| 
       60 
60 
     | 
    
         
             
                it "set merged cell" do
         
     | 
    
        data/spec/data/merge_cells.xls
    CHANGED
    
    | 
         Binary file 
     | 
    
        data/spec/range_spec.rb
    CHANGED
    
    | 
         @@ -46,6 +46,47 @@ describe WrapExcel::Range do 
     | 
|
| 
       46 
46 
     | 
    
         
             
                  end
         
     | 
| 
       47 
47 
     | 
    
         
             
                  it { @range.values.should eq ['simple', 'foo', 'matz'] }
         
     | 
| 
       48 
48 
     | 
    
         
             
                end
         
     | 
| 
      
 49 
     | 
    
         
            +
             
     | 
| 
      
 50 
     | 
    
         
            +
                context "read 'merge_cells.xls'" do
         
     | 
| 
      
 51 
     | 
    
         
            +
                  before do
         
     | 
| 
      
 52 
     | 
    
         
            +
                    @merge_cells_book = WrapExcel::Book.open("#{@dir}/merge_cells.xls")
         
     | 
| 
      
 53 
     | 
    
         
            +
                    @merge_cells_sheet = @merge_cells_book[0]
         
     | 
| 
      
 54 
     | 
    
         
            +
                  end
         
     | 
| 
      
 55 
     | 
    
         
            +
             
     | 
| 
      
 56 
     | 
    
         
            +
                  after do
         
     | 
| 
      
 57 
     | 
    
         
            +
                    @merge_cells_book.close
         
     | 
| 
      
 58 
     | 
    
         
            +
                  end
         
     | 
| 
      
 59 
     | 
    
         
            +
             
     | 
| 
      
 60 
     | 
    
         
            +
                  context "only merged_cell" do
         
     | 
| 
      
 61 
     | 
    
         
            +
                    before do
         
     | 
| 
      
 62 
     | 
    
         
            +
                      @only_merged_range = @merge_cells_sheet.row_range(3)
         
     | 
| 
      
 63 
     | 
    
         
            +
                    end
         
     | 
| 
      
 64 
     | 
    
         
            +
             
     | 
| 
      
 65 
     | 
    
         
            +
                    context "without argument" do
         
     | 
| 
      
 66 
     | 
    
         
            +
                      it { @only_merged_range.values.should eq ['merged', 'merged', 'merged', 'merged'] }
         
     | 
| 
      
 67 
     | 
    
         
            +
                    end
         
     | 
| 
      
 68 
     | 
    
         
            +
             
     | 
| 
      
 69 
     | 
    
         
            +
                    context "with (1..2)" do
         
     | 
| 
      
 70 
     | 
    
         
            +
                      it { @only_merged_range.values(1..2).should eq ['merged', 'merged'] }
         
     | 
| 
      
 71 
     | 
    
         
            +
                    end
         
     | 
| 
      
 72 
     | 
    
         
            +
             
     | 
| 
      
 73 
     | 
    
         
            +
                  end
         
     | 
| 
      
 74 
     | 
    
         
            +
             
     | 
| 
      
 75 
     | 
    
         
            +
                  context "mix merged cell and no merge cell" do
         
     | 
| 
      
 76 
     | 
    
         
            +
                    before do
         
     | 
| 
      
 77 
     | 
    
         
            +
                      @mix_merged_no_merged_range = @merge_cells_sheet.row_range(1)
         
     | 
| 
      
 78 
     | 
    
         
            +
                    end
         
     | 
| 
      
 79 
     | 
    
         
            +
             
     | 
| 
      
 80 
     | 
    
         
            +
                    context "without argument" do
         
     | 
| 
      
 81 
     | 
    
         
            +
                      it { @mix_merged_no_merged_range.values.should eq ['first merged', 'first merged', 'first merged', nil] }
         
     | 
| 
      
 82 
     | 
    
         
            +
                    end
         
     | 
| 
      
 83 
     | 
    
         
            +
             
     | 
| 
      
 84 
     | 
    
         
            +
                    context "with (2..3)" do
         
     | 
| 
      
 85 
     | 
    
         
            +
                      it { @mix_merged_no_merged_range.values(2..3).should eq ['first merged', nil] }
         
     | 
| 
      
 86 
     | 
    
         
            +
                    end
         
     | 
| 
      
 87 
     | 
    
         
            +
             
     | 
| 
      
 88 
     | 
    
         
            +
                  end
         
     | 
| 
      
 89 
     | 
    
         
            +
                end
         
     | 
| 
       49 
90 
     | 
    
         
             
              end
         
     | 
| 
       50 
91 
     | 
    
         | 
| 
       51 
92 
     | 
    
         
             
              describe "#[]" do
         
     | 
    
        data/spec/sheet_spec.rb
    CHANGED
    
    | 
         @@ -235,6 +235,32 @@ describe WrapExcel::Sheet do 
     | 
|
| 
       235 
235 
     | 
    
         
             
                      end
         
     | 
| 
       236 
236 
     | 
    
         
             
                    end
         
     | 
| 
       237 
237 
     | 
    
         
             
                  end
         
     | 
| 
      
 238 
     | 
    
         
            +
             
     | 
| 
      
 239 
     | 
    
         
            +
                  context "read sheet which last cell is merged" do
         
     | 
| 
      
 240 
     | 
    
         
            +
                    before do
         
     | 
| 
      
 241 
     | 
    
         
            +
                      @book_merge_cells = WrapExcel::Book.open(@dir + '/merge_cells.xls')
         
     | 
| 
      
 242 
     | 
    
         
            +
                      @sheet_merge_cell = @book_merge_cells[0]
         
     | 
| 
      
 243 
     | 
    
         
            +
                    end
         
     | 
| 
      
 244 
     | 
    
         
            +
             
     | 
| 
      
 245 
     | 
    
         
            +
                    after do
         
     | 
| 
      
 246 
     | 
    
         
            +
                      @book_merge_cells.close
         
     | 
| 
      
 247 
     | 
    
         
            +
                    end
         
     | 
| 
      
 248 
     | 
    
         
            +
             
     | 
| 
      
 249 
     | 
    
         
            +
                    it "should get from ['A1'] to ['C2']" do
         
     | 
| 
      
 250 
     | 
    
         
            +
                      columns_values = []
         
     | 
| 
      
 251 
     | 
    
         
            +
                      @sheet_merge_cell.each_column do |columns|
         
     | 
| 
      
 252 
     | 
    
         
            +
                        columns_values << columns.values
         
     | 
| 
      
 253 
     | 
    
         
            +
                      end
         
     | 
| 
      
 254 
     | 
    
         
            +
                      columns_values.should eq [
         
     | 
| 
      
 255 
     | 
    
         
            +
                                            [nil, 'first merged', nil, 'merged'],
         
     | 
| 
      
 256 
     | 
    
         
            +
                                            [nil, 'first merged', 'first', 'merged'],
         
     | 
| 
      
 257 
     | 
    
         
            +
                                            [nil, 'first merged', 'second', 'merged'],
         
     | 
| 
      
 258 
     | 
    
         
            +
                                            [nil, nil, 'third', 'merged']
         
     | 
| 
      
 259 
     | 
    
         
            +
                                       ]
         
     | 
| 
      
 260 
     | 
    
         
            +
                    end
         
     | 
| 
      
 261 
     | 
    
         
            +
             
     | 
| 
      
 262 
     | 
    
         
            +
                  end
         
     | 
| 
      
 263 
     | 
    
         
            +
             
     | 
| 
       238 
264 
     | 
    
         
             
                end
         
     | 
| 
       239 
265 
     | 
    
         | 
| 
       240 
266 
     | 
    
         
             
                describe "#each_column_with_index" do
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: wrap_excel
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 0.0. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 0.0.8
         
     | 
| 
       5 
5 
     | 
    
         
             
              prerelease: 
         
     | 
| 
       6 
6 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       7 
7 
     | 
    
         
             
            authors:
         
     | 
| 
         @@ -9,11 +9,11 @@ authors: 
     | 
|
| 
       9 
9 
     | 
    
         
             
            autorequire: 
         
     | 
| 
       10 
10 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       11 
11 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       12 
     | 
    
         
            -
            date: 2012- 
     | 
| 
      
 12 
     | 
    
         
            +
            date: 2012-04-08 00:00:00.000000000 Z
         
     | 
| 
       13 
13 
     | 
    
         
             
            dependencies:
         
     | 
| 
       14 
14 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       15 
15 
     | 
    
         
             
              name: rake
         
     | 
| 
       16 
     | 
    
         
            -
              requirement: & 
     | 
| 
      
 16 
     | 
    
         
            +
              requirement: &21104316 !ruby/object:Gem::Requirement
         
     | 
| 
       17 
17 
     | 
    
         
             
                none: false
         
     | 
| 
       18 
18 
     | 
    
         
             
                requirements:
         
     | 
| 
       19 
19 
     | 
    
         
             
                - - ! '>='
         
     | 
| 
         @@ -21,10 +21,10 @@ dependencies: 
     | 
|
| 
       21 
21 
     | 
    
         
             
                    version: 0.9.2
         
     | 
| 
       22 
22 
     | 
    
         
             
              type: :development
         
     | 
| 
       23 
23 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       24 
     | 
    
         
            -
              version_requirements: * 
     | 
| 
      
 24 
     | 
    
         
            +
              version_requirements: *21104316
         
     | 
| 
       25 
25 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       26 
26 
     | 
    
         
             
              name: rspec
         
     | 
| 
       27 
     | 
    
         
            -
              requirement: & 
     | 
| 
      
 27 
     | 
    
         
            +
              requirement: &21103752 !ruby/object:Gem::Requirement
         
     | 
| 
       28 
28 
     | 
    
         
             
                none: false
         
     | 
| 
       29 
29 
     | 
    
         
             
                requirements:
         
     | 
| 
       30 
30 
     | 
    
         
             
                - - ! '>='
         
     | 
| 
         @@ -32,10 +32,10 @@ dependencies: 
     | 
|
| 
       32 
32 
     | 
    
         
             
                    version: 2.6.0
         
     | 
| 
       33 
33 
     | 
    
         
             
              type: :development
         
     | 
| 
       34 
34 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       35 
     | 
    
         
            -
              version_requirements: * 
     | 
| 
      
 35 
     | 
    
         
            +
              version_requirements: *21103752
         
     | 
| 
       36 
36 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       37 
37 
     | 
    
         
             
              name: rb-fchange
         
     | 
| 
       38 
     | 
    
         
            -
              requirement: & 
     | 
| 
      
 38 
     | 
    
         
            +
              requirement: &21103380 !ruby/object:Gem::Requirement
         
     | 
| 
       39 
39 
     | 
    
         
             
                none: false
         
     | 
| 
       40 
40 
     | 
    
         
             
                requirements:
         
     | 
| 
       41 
41 
     | 
    
         
             
                - - ! '>='
         
     | 
| 
         @@ -43,10 +43,10 @@ dependencies: 
     | 
|
| 
       43 
43 
     | 
    
         
             
                    version: '0'
         
     | 
| 
       44 
44 
     | 
    
         
             
              type: :development
         
     | 
| 
       45 
45 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       46 
     | 
    
         
            -
              version_requirements: * 
     | 
| 
      
 46 
     | 
    
         
            +
              version_requirements: *21103380
         
     | 
| 
       47 
47 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       48 
48 
     | 
    
         
             
              name: rb-notifu
         
     | 
| 
       49 
     | 
    
         
            -
              requirement: & 
     | 
| 
      
 49 
     | 
    
         
            +
              requirement: &21102828 !ruby/object:Gem::Requirement
         
     | 
| 
       50 
50 
     | 
    
         
             
                none: false
         
     | 
| 
       51 
51 
     | 
    
         
             
                requirements:
         
     | 
| 
       52 
52 
     | 
    
         
             
                - - ! '>='
         
     | 
| 
         @@ -54,10 +54,10 @@ dependencies: 
     | 
|
| 
       54 
54 
     | 
    
         
             
                    version: '0'
         
     | 
| 
       55 
55 
     | 
    
         
             
              type: :development
         
     | 
| 
       56 
56 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       57 
     | 
    
         
            -
              version_requirements: * 
     | 
| 
      
 57 
     | 
    
         
            +
              version_requirements: *21102828
         
     | 
| 
       58 
58 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       59 
59 
     | 
    
         
             
              name: win32console
         
     | 
| 
       60 
     | 
    
         
            -
              requirement: & 
     | 
| 
      
 60 
     | 
    
         
            +
              requirement: &21102420 !ruby/object:Gem::Requirement
         
     | 
| 
       61 
61 
     | 
    
         
             
                none: false
         
     | 
| 
       62 
62 
     | 
    
         
             
                requirements:
         
     | 
| 
       63 
63 
     | 
    
         
             
                - - ! '>='
         
     | 
| 
         @@ -65,10 +65,10 @@ dependencies: 
     | 
|
| 
       65 
65 
     | 
    
         
             
                    version: '0'
         
     | 
| 
       66 
66 
     | 
    
         
             
              type: :development
         
     | 
| 
       67 
67 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       68 
     | 
    
         
            -
              version_requirements: * 
     | 
| 
      
 68 
     | 
    
         
            +
              version_requirements: *21102420
         
     | 
| 
       69 
69 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       70 
70 
     | 
    
         
             
              name: guard-rspec
         
     | 
| 
       71 
     | 
    
         
            -
              requirement: & 
     | 
| 
      
 71 
     | 
    
         
            +
              requirement: &21102036 !ruby/object:Gem::Requirement
         
     | 
| 
       72 
72 
     | 
    
         
             
                none: false
         
     | 
| 
       73 
73 
     | 
    
         
             
                requirements:
         
     | 
| 
       74 
74 
     | 
    
         
             
                - - ! '>='
         
     | 
| 
         @@ -76,7 +76,7 @@ dependencies: 
     | 
|
| 
       76 
76 
     | 
    
         
             
                    version: '0'
         
     | 
| 
       77 
77 
     | 
    
         
             
              type: :development
         
     | 
| 
       78 
78 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       79 
     | 
    
         
            -
              version_requirements: * 
     | 
| 
      
 79 
     | 
    
         
            +
              version_requirements: *21102036
         
     | 
| 
       80 
80 
     | 
    
         
             
            description: WrapExcel is to wrap the win32ole, and easy to use Excel operations with
         
     | 
| 
       81 
81 
     | 
    
         
             
              ruby. Detailed description please see the README.
         
     | 
| 
       82 
82 
     | 
    
         
             
            email:
         
     | 
| 
         @@ -132,7 +132,7 @@ required_ruby_version: !ruby/object:Gem::Requirement 
     | 
|
| 
       132 
132 
     | 
    
         
             
                  version: '0'
         
     | 
| 
       133 
133 
     | 
    
         
             
                  segments:
         
     | 
| 
       134 
134 
     | 
    
         
             
                  - 0
         
     | 
| 
       135 
     | 
    
         
            -
                  hash:  
     | 
| 
      
 135 
     | 
    
         
            +
                  hash: 767876733
         
     | 
| 
       136 
136 
     | 
    
         
             
            required_rubygems_version: !ruby/object:Gem::Requirement
         
     | 
| 
       137 
137 
     | 
    
         
             
              none: false
         
     | 
| 
       138 
138 
     | 
    
         
             
              requirements:
         
     | 
| 
         @@ -141,10 +141,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement 
     | 
|
| 
       141 
141 
     | 
    
         
             
                  version: '0'
         
     | 
| 
       142 
142 
     | 
    
         
             
                  segments:
         
     | 
| 
       143 
143 
     | 
    
         
             
                  - 0
         
     | 
| 
       144 
     | 
    
         
            -
                  hash:  
     | 
| 
      
 144 
     | 
    
         
            +
                  hash: 767876733
         
     | 
| 
       145 
145 
     | 
    
         
             
            requirements: []
         
     | 
| 
       146 
146 
     | 
    
         
             
            rubyforge_project: wrap_excel
         
     | 
| 
       147 
     | 
    
         
            -
            rubygems_version: 1.8. 
     | 
| 
      
 147 
     | 
    
         
            +
            rubygems_version: 1.8.16
         
     | 
| 
       148 
148 
     | 
    
         
             
            signing_key: 
         
     | 
| 
       149 
149 
     | 
    
         
             
            specification_version: 3
         
     | 
| 
       150 
150 
     | 
    
         
             
            summary: WrapExcel is a wrapper library that specializes in the operation of Excel
         
     |