rubyexcel 0.1.3 → 0.1.4
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/README.md +15 -4
- data/lib/rubyexcel/sheet.rb +6 -14
- metadata +3 -3
data/lib/README.md
CHANGED
@@ -130,9 +130,6 @@ s.column( 'A' ) #=> Column
|
|
130
130
|
s.column( 1 ) #=> Column
|
131
131
|
```
|
132
132
|
|
133
|
-
Some Examples
|
134
|
-
========
|
135
|
-
|
136
133
|
Common Operations
|
137
134
|
--------
|
138
135
|
|
@@ -153,12 +150,25 @@ s.rows(2) { |row| row << x; x+=1 }
|
|
153
150
|
#Filter to specific part numbers
|
154
151
|
s.filter!( 'Part', &/Type[1-3]/ )
|
155
152
|
|
153
|
+
#Sort by Part Number
|
154
|
+
s.sort_by!( 'Part' )
|
155
|
+
|
156
156
|
#Add the Number to the Cost in each row.
|
157
157
|
s.rows(2) { |row| row.cell_h('Cost').value += row.cell_h('Number').value }
|
158
158
|
|
159
159
|
#Split the data into multiple sheets by part number
|
160
160
|
wb = s.split( 'Part' )
|
161
161
|
|
162
|
+
#Open a sheet in an Excel Workbook
|
163
|
+
#Output a sheet as a TSV file
|
164
|
+
File.write( 'Output.txt', wb.sheets(1).to_s )
|
165
|
+
|
166
|
+
#Output a sheet as an HTML page
|
167
|
+
File.write( 'Output.htm', wb.sheets(2).to_html )
|
168
|
+
|
169
|
+
#Open a sheet in an Excel Workbook
|
170
|
+
wb.sheets( 'Type3' ).to_excel
|
171
|
+
|
162
172
|
```
|
163
173
|
|
164
174
|
Workbook
|
@@ -292,8 +302,9 @@ type_1_and_3, other = s.partition( 'Part', &/Type[13]/ )
|
|
292
302
|
s.reverse_rows!
|
293
303
|
s.reverse_columns!
|
294
304
|
|
295
|
-
#Sort the rows by
|
305
|
+
#Sort the rows by header(s) (ignores header rows)
|
296
306
|
s.sort_by!( 'Part' )
|
307
|
+
s.sort_by!( 'Qty', 'Part' )
|
297
308
|
|
298
309
|
#Split a Sheet into a Workbook of Sheets by a column (selected by header)
|
299
310
|
wb = s.split( 'Part' )
|
data/lib/rubyexcel/sheet.rb
CHANGED
@@ -36,7 +36,7 @@ module RubyExcel
|
|
36
36
|
def initialize( name, workbook )
|
37
37
|
@workbook = workbook
|
38
38
|
@name = name
|
39
|
-
@header_rows =
|
39
|
+
@header_rows = 1
|
40
40
|
@data = Data.new( self, [[]] )
|
41
41
|
end
|
42
42
|
|
@@ -458,23 +458,15 @@ module RubyExcel
|
|
458
458
|
alias each rows
|
459
459
|
|
460
460
|
#
|
461
|
-
# Sort the data
|
461
|
+
# Sort the data by a column, selected by header(s)
|
462
462
|
#
|
463
|
-
|
464
|
-
def sort!( &block )
|
465
|
-
data.sort!( &block ); self
|
466
|
-
end
|
467
|
-
|
468
|
-
#
|
469
|
-
# Sort the data by a column, selected by header
|
470
|
-
#
|
471
|
-
# @param [String] header the header to sort the Sheet by
|
463
|
+
# @param [String, Array<String>] headers the header(s) to sort the Sheet by
|
472
464
|
#
|
473
465
|
|
474
|
-
def sort_by!(
|
466
|
+
def sort_by!( *headers )
|
475
467
|
raise ArgumentError, 'Sheet#sort_by! does not support blocks.' if block_given?
|
476
|
-
|
477
|
-
sort_method = lambda { |array| array[idx] }
|
468
|
+
idx_array = headers.flatten.map { |header| data.index_by_header( header ) - 1 }
|
469
|
+
sort_method = lambda { |array| idx_array.map { |idx| array[idx] } }
|
478
470
|
data.sort_by!( &sort_method )
|
479
471
|
self
|
480
472
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rubyexcel
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.4
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,10 +9,10 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-05-
|
12
|
+
date: 2013-05-09 00:00:00.000000000 Z
|
13
13
|
dependencies: []
|
14
14
|
description: A tabular data structure in Ruby, with header-based helper methods and
|
15
|
-
some of Excel's API style.
|
15
|
+
some of Excel's API style. Designed for Windows + Excel.
|
16
16
|
email: VirtuosoJoel@gmail.com
|
17
17
|
executables: []
|
18
18
|
extensions: []
|