to_xls-rails 1.0.0 → 1.1.0
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/CHANGELOG +5 -1
- data/Gemfile +4 -0
- data/README.rdoc +3 -0
- data/VERSION +1 -1
- data/lib/to_xls-rails.rb +17 -10
- data/to_xls-rails.gemspec +2 -2
- metadata +4 -3
data/CHANGELOG
CHANGED
data/Gemfile
ADDED
data/README.rdoc
CHANGED
@@ -19,6 +19,9 @@ This simple plugin gives you the ability to call to_xls to a collection of activ
|
|
19
19
|
@posts.to_xls(:except => [:id])
|
20
20
|
@posts.to_xls(:header => false)
|
21
21
|
|
22
|
+
# Translation of a column-value
|
23
|
+
@posts.to_xls{|column, value| column==:salutation ? t(value) : value}
|
24
|
+
|
22
25
|
|
23
26
|
== Example
|
24
27
|
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.
|
1
|
+
1.1.0
|
data/lib/to_xls-rails.rb
CHANGED
@@ -2,30 +2,37 @@ require 'spreadsheet'
|
|
2
2
|
|
3
3
|
class Array
|
4
4
|
|
5
|
-
def to_xls(
|
5
|
+
def to_xls(options = {}, &block)
|
6
6
|
return '' if self.empty?
|
7
7
|
|
8
|
+
options.reverse_merge!(:header => true)
|
9
|
+
|
8
10
|
xls_report = StringIO.new
|
9
11
|
book = Spreadsheet::Workbook.new
|
10
12
|
sheet = book.create_worksheet
|
11
|
-
|
13
|
+
|
12
14
|
if options[:only]
|
13
15
|
columns = Array(options[:only]).map(&:to_sym)
|
14
16
|
else
|
15
17
|
columns = self.first.class.column_names.map(&:to_sym) - Array(options[:except]).map(&:to_sym)
|
16
18
|
end
|
17
|
-
|
19
|
+
|
18
20
|
return '' if columns.empty?
|
19
|
-
|
20
|
-
sheet.row(0).concat(columns.map(&:to_s).map(&:humanize))
|
21
|
-
|
21
|
+
|
22
|
+
sheet.row(0).concat(columns.map(&:to_s).map(&:humanize)) if options[:header]
|
23
|
+
|
22
24
|
self.each_with_index do |obj, index|
|
23
|
-
|
25
|
+
index = options[:header] ? (index + 1) : index
|
26
|
+
if block
|
27
|
+
sheet.row(index).replace(columns.map { |column| block.call(column, obj.send(column)) })
|
28
|
+
else
|
29
|
+
sheet.row(index).replace(columns.map { |column| obj.send(column) })
|
30
|
+
end
|
24
31
|
end
|
25
|
-
|
32
|
+
|
26
33
|
book.write(xls_report)
|
27
|
-
|
34
|
+
|
28
35
|
xls_report.string
|
29
36
|
end
|
30
|
-
|
37
|
+
|
31
38
|
end
|
data/to_xls-rails.gemspec
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
|
3
|
-
version = File.read(File.expand_path("../VERSION",__FILE__)).strip
|
3
|
+
version = File.read(File.expand_path("../VERSION", __FILE__)).strip
|
4
4
|
|
5
5
|
Gem::Specification.new do |s|
|
6
6
|
s.name = 'to_xls-rails'
|
@@ -14,7 +14,7 @@ Gem::Specification.new do |s|
|
|
14
14
|
s.files = Dir["{lib,test}/**/*", "[a-zA-Z]*", "init.rb"] - ["Gemfile.lock"]
|
15
15
|
s.require_path = "lib"
|
16
16
|
|
17
|
-
s.
|
17
|
+
s.add_dependency('spreadsheet', '~>0.6.5')
|
18
18
|
|
19
19
|
s.platform = Gem::Platform::RUBY
|
20
20
|
s.required_rubygems_version = ">= 1.3.4"
|
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: to_xls-rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 1.
|
5
|
+
version: 1.1.0
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- LiangWenKe
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2011-
|
13
|
+
date: 2011-07-27 00:00:00 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: spreadsheet
|
@@ -21,7 +21,7 @@ dependencies:
|
|
21
21
|
- - ~>
|
22
22
|
- !ruby/object:Gem::Version
|
23
23
|
version: 0.6.5
|
24
|
-
type: :
|
24
|
+
type: :runtime
|
25
25
|
version_requirements: *id001
|
26
26
|
description: This simple plugin gives you the ability to call to_xls to a collection of activerecords. The builder options are the same as to_json / to_xml, except for the :include.
|
27
27
|
email: liangwenke.com@gmail.com
|
@@ -34,6 +34,7 @@ extra_rdoc_files: []
|
|
34
34
|
files:
|
35
35
|
- lib/to_xls-rails.rb
|
36
36
|
- CHANGELOG
|
37
|
+
- Gemfile
|
37
38
|
- init.rb
|
38
39
|
- MIT-LICENSE
|
39
40
|
- Rakefile
|