acts_as_xlsx 1.0.1 → 1.0.2
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/README.md +29 -5
- data/acts_as_xlsx.gemspec +2 -6
- data/doc/Axlsx.html +1 -1
- data/doc/Axlsx/Ar.html +4 -4
- data/doc/Axlsx/Ar/ClassMethods.html +4 -4
- data/doc/Axlsx/Ar/SingletonMethods.html +19 -5
- data/doc/_index.html +1 -1
- data/doc/file.LICENSE.html +1 -1
- data/doc/file.README.html +29 -6
- data/doc/index.html +29 -6
- data/doc/top-level-namespace.html +1 -1
- data/lib/acts_as_xlsx.rb +9 -1
- data/test/acts_as_xlsx.sqlite3.db +0 -0
- data/test/tc_acts_as_xlsx.rb +7 -0
- metadata +8 -37
- data/doc/Axlsx/Ar/InstanceMethods.html +0 -188
data/README.md
CHANGED
@@ -7,9 +7,9 @@ Acts as xlsx: Office Open XML Spreadsheet Generation plugin for active record
|
|
7
7
|
**Author**: Randy Morgan
|
8
8
|
**Copyright**: 2011
|
9
9
|
**License**: MIT License
|
10
|
-
**Latest Version**: 1.0.
|
10
|
+
**Latest Version**: 1.0.2
|
11
11
|
**Ruby Version**: 1.8.7 - 1.9.3
|
12
|
-
**Release Date**: December
|
12
|
+
**Release Date**: December 3rd 2011
|
13
13
|
|
14
14
|
Synopsis
|
15
15
|
--------
|
@@ -45,7 +45,11 @@ Usage
|
|
45
45
|
|
46
46
|
###Examples
|
47
47
|
|
48
|
-
A trivial rails example
|
48
|
+
A trivial rails example. In a production environment you will want to you stuff like x_sendfile and Tempfile
|
49
|
+
http://www.therailsway.com/2009/2/22/file-downloads-done-right
|
50
|
+
|
51
|
+
for nginx
|
52
|
+
http://andrewtimberlake.com/blog/how-to-protect-downloads-but-still-have-nginx-serve-the-files
|
49
53
|
|
50
54
|
#Add the gem to your Gemfile and bundle install
|
51
55
|
gem 'acts_as_xlsx'
|
@@ -65,10 +69,27 @@ A trivial rails example
|
|
65
69
|
end
|
66
70
|
end
|
67
71
|
|
68
|
-
|
69
|
-
|
72
|
+
# dont forget to add posts/xslx to your routes!
|
73
|
+
|
74
|
+
In addition to dumping the entire table, it is also possible to specify the columns and method chains to execute in genrating your report.
|
75
|
+
# GET posts/xslx
|
76
|
+
def xlsx
|
77
|
+
p = Post.to_xlsx :columns => [:name, :title, :ranking, :'comments.last.content', :'comments.last.author.name']
|
78
|
+
p.serialize('public/downloads/posts.xlsx')
|
79
|
+
send_file 'public/downloads/posts.xlsx', :type=>"application/xlsx"
|
80
|
+
end
|
81
|
+
|
82
|
+
If your application uses i18n, you can specify the prefix for column labels as well
|
70
83
|
|
84
|
+
# GET posts/xslx
|
85
|
+
def xlsx
|
86
|
+
p = Post.to_xlsx :i18n => 'activerecord.attributes'
|
87
|
+
p.serialize('public/downloads/posts.xlsx')
|
88
|
+
send_file 'public/downloads/posts.xlsx', :type=>"application/xlsx"
|
89
|
+
end
|
90
|
+
|
71
91
|
For examples on how to use axlsx for custom styles, charts, images and more see:
|
92
|
+
|
72
93
|
[http://rubygems.org/gems/axlsx] (https://rubygems.org/gems/axlsx)
|
73
94
|
|
74
95
|
###Documentation
|
@@ -85,6 +106,9 @@ This gem has 100% coverage using Test::Unit
|
|
85
106
|
|
86
107
|
Changelog
|
87
108
|
---------
|
109
|
+
- **December.3.11**: 1.0.2 release
|
110
|
+
Added support for chained method columns like :'model.association.attribute'
|
111
|
+
|
88
112
|
- **October.30.11**: 1.0.1 release
|
89
113
|
- Patch for inclusion error
|
90
114
|
|
data/acts_as_xlsx.gemspec
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
require 'rake'
|
2
|
-
acts_as_xlsx_version = "1.0.
|
2
|
+
acts_as_xlsx_version = "1.0.2"
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = 'acts_as_xlsx'
|
5
5
|
s.version = acts_as_xlsx_version
|
@@ -26,11 +26,7 @@ Gem::Specification.new do |s|
|
|
26
26
|
s.add_runtime_dependency 'axlsx', '>= 1.0.10'
|
27
27
|
s.add_runtime_dependency 'activerecord', '>= 2.3.9'
|
28
28
|
s.add_runtime_dependency 'i18n', '>=0.6.0'
|
29
|
-
|
30
|
-
# required for yard documentation generation
|
31
|
-
s.add_runtime_dependency 'yard'
|
32
|
-
s.add_runtime_dependency 'rdiscount'
|
33
|
-
|
29
|
+
|
34
30
|
# required for running tests
|
35
31
|
s.add_development_dependency 'sqlite3'
|
36
32
|
s.add_development_dependency 'rake', '>= 0.9.2'
|
data/doc/Axlsx.html
CHANGED
@@ -116,7 +116,7 @@ Adding to the Axlsx module
|
|
116
116
|
</div>
|
117
117
|
|
118
118
|
<div id="footer">
|
119
|
-
Generated on
|
119
|
+
Generated on Sat Dec 3 11:39:31 2011 by
|
120
120
|
<a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
121
121
|
0.7.3 (ruby-1.8.7).
|
122
122
|
</div>
|
data/doc/Axlsx/Ar.html
CHANGED
@@ -172,12 +172,12 @@ support to both AR classes and instances
|
|
172
172
|
<pre class="lines">
|
173
173
|
|
174
174
|
|
175
|
-
14
|
176
175
|
15
|
177
|
-
16
|
176
|
+
16
|
177
|
+
17</pre>
|
178
178
|
</td>
|
179
179
|
<td>
|
180
|
-
<pre class="code"><span class="info file"># File 'lib/acts_as_xlsx.rb', line
|
180
|
+
<pre class="code"><span class="info file"># File 'lib/acts_as_xlsx.rb', line 15</span>
|
181
181
|
|
182
182
|
<span class='def def kw'>def</span> <span class='self self kw'>self</span><span class='dot token'>.</span><span class='included identifier id'>included</span><span class='lparen token'>(</span><span class='base identifier id'>base</span><span class='rparen token'>)</span> <span class='comment val'># :nodoc:</span>
|
183
183
|
<span class='base identifier id'>base</span><span class='dot token'>.</span><span class='send identifier id'>send</span> <span class='symbol val'>:extend</span><span class='comma token'>,</span> <span class='ClassMethods constant id'>ClassMethods</span>
|
@@ -193,7 +193,7 @@ support to both AR classes and instances
|
|
193
193
|
</div>
|
194
194
|
|
195
195
|
<div id="footer">
|
196
|
-
Generated on
|
196
|
+
Generated on Sat Dec 3 11:39:31 2011 by
|
197
197
|
<a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
198
198
|
0.7.3 (ruby-1.8.7).
|
199
199
|
</div>
|
@@ -231,15 +231,15 @@ will be used to determine the labels for columns.
|
|
231
231
|
<pre class="lines">
|
232
232
|
|
233
233
|
|
234
|
-
27
|
235
234
|
28
|
236
235
|
29
|
237
236
|
30
|
238
237
|
31
|
239
|
-
32
|
238
|
+
32
|
239
|
+
33</pre>
|
240
240
|
</td>
|
241
241
|
<td>
|
242
|
-
<pre class="code"><span class="info file"># File 'lib/acts_as_xlsx.rb', line
|
242
|
+
<pre class="code"><span class="info file"># File 'lib/acts_as_xlsx.rb', line 28</span>
|
243
243
|
|
244
244
|
<span class='def def kw'>def</span> <span class='acts_as_xlsx identifier id'>acts_as_xlsx</span><span class='lparen token'>(</span><span class='options identifier id'>options</span><span class='assign token'>=</span><span class='lbrace token'>{</span><span class='rbrace token'>}</span><span class='rparen token'>)</span>
|
245
245
|
<span class='cattr_accessor identifier id'>cattr_accessor</span> <span class='symbol val'>:xlsx_i18n</span><span class='comma token'>,</span> <span class='symbol val'>:xlsx_columns</span>
|
@@ -258,7 +258,7 @@ will be used to determine the labels for columns.
|
|
258
258
|
</div>
|
259
259
|
|
260
260
|
<div id="footer">
|
261
|
-
Generated on
|
261
|
+
Generated on Sat Dec 3 11:39:31 2011 by
|
262
262
|
<a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
263
263
|
0.7.3 (ruby-1.8.7).
|
264
264
|
</div>
|
@@ -266,7 +266,6 @@ The path to i18n attributes. (usually activerecord.attributes)
|
|
266
266
|
<pre class="lines">
|
267
267
|
|
268
268
|
|
269
|
-
46
|
270
269
|
47
|
271
270
|
48
|
272
271
|
49
|
@@ -299,10 +298,18 @@ The path to i18n attributes. (usually activerecord.attributes)
|
|
299
298
|
76
|
300
299
|
77
|
301
300
|
78
|
302
|
-
79
|
301
|
+
79
|
302
|
+
80
|
303
|
+
81
|
304
|
+
82
|
305
|
+
83
|
306
|
+
84
|
307
|
+
85
|
308
|
+
86
|
309
|
+
87</pre>
|
303
310
|
</td>
|
304
311
|
<td>
|
305
|
-
<pre class="code"><span class="info file"># File 'lib/acts_as_xlsx.rb', line
|
312
|
+
<pre class="code"><span class="info file"># File 'lib/acts_as_xlsx.rb', line 47</span>
|
306
313
|
|
307
314
|
<span class='def def kw'>def</span> <span class='to_xlsx identifier id'>to_xlsx</span><span class='lparen token'>(</span><span class='options identifier id'>options</span> <span class='assign token'>=</span> <span class='lbrace token'>{</span><span class='rbrace token'>}</span><span class='rparen token'>)</span>
|
308
315
|
|
@@ -333,7 +340,14 @@ The path to i18n attributes. (usually activerecord.attributes)
|
|
333
340
|
<span class='sheet identifier id'>sheet</span><span class='dot token'>.</span><span class='add_row identifier id'>add_row</span> <span class='col_labels identifier id'>col_labels</span><span class='comma token'>,</span> <span class='symbol val'>:style=</span><span class='gt op'>></span><span class='header_style identifier id'>header_style</span>
|
334
341
|
|
335
342
|
<span class='data identifier id'>data</span><span class='dot token'>.</span><span class='each identifier id'>each</span> <span class='do do kw'>do</span> <span class='bitor op'>|</span><span class='r identifier id'>r</span><span class='bitor op'>|</span>
|
336
|
-
<span class='
|
343
|
+
<span class='row_data identifier id'>row_data</span> <span class='assign token'>=</span> <span class='columns identifier id'>columns</span><span class='dot token'>.</span><span class='map identifier id'>map</span> <span class='do do kw'>do</span> <span class='bitor op'>|</span><span class='c identifier id'>c</span><span class='bitor op'>|</span>
|
344
|
+
<span class='if if kw'>if</span> <span class='c identifier id'>c</span><span class='dot token'>.</span><span class='to_s identifier id'>to_s</span> <span class='match op'>=~</span> <span class='regexp val'>/\./</span>
|
345
|
+
<span class='v identifier id'>v</span> <span class='assign token'>=</span> <span class='r identifier id'>r</span><span class='semicolon token'>;</span> <span class='c identifier id'>c</span><span class='dot token'>.</span><span class='to_s identifier id'>to_s</span><span class='dot token'>.</span><span class='split identifier id'>split</span><span class='lparen token'>(</span><span class='string val'>'.'</span><span class='rparen token'>)</span><span class='dot token'>.</span><span class='each identifier id'>each</span> <span class='lbrace token'>{</span> <span class='bitor op'>|</span><span class='method identifier id'>method</span><span class='bitor op'>|</span> <span class='v identifier id'>v</span> <span class='assign token'>=</span> <span class='v identifier id'>v</span><span class='dot token'>.</span><span class='send identifier id'>send</span><span class='lparen token'>(</span><span class='method identifier id'>method</span><span class='rparen token'>)</span> <span class='rbrace token'>}</span><span class='semicolon token'>;</span> <span class='v identifier id'>v</span>
|
346
|
+
<span class='else else kw'>else</span>
|
347
|
+
<span class='r identifier id'>r</span><span class='dot token'>.</span><span class='send identifier id'>send</span><span class='lparen token'>(</span><span class='c identifier id'>c</span><span class='rparen token'>)</span>
|
348
|
+
<span class='end end kw'>end</span>
|
349
|
+
<span class='end end kw'>end</span>
|
350
|
+
<span class='sheet identifier id'>sheet</span><span class='dot token'>.</span><span class='add_row identifier id'>add_row</span> <span class='row_data identifier id'>row_data</span><span class='comma token'>,</span> <span class='symbol val'>:style=</span><span class='gt op'>></span><span class='row_style identifier id'>row_style</span><span class='comma token'>,</span> <span class='symbol val'>:types=</span><span class='gt op'>></span><span class='types identifier id'>types</span>
|
337
351
|
<span class='end end kw'>end</span>
|
338
352
|
<span class='end end kw'>end</span>
|
339
353
|
<span class='p identifier id'>p</span>
|
@@ -349,7 +363,7 @@ The path to i18n attributes. (usually activerecord.attributes)
|
|
349
363
|
</div>
|
350
364
|
|
351
365
|
<div id="footer">
|
352
|
-
Generated on
|
366
|
+
Generated on Sat Dec 3 11:39:32 2011 by
|
353
367
|
<a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
354
368
|
0.7.3 (ruby-1.8.7).
|
355
369
|
</div>
|
data/doc/_index.html
CHANGED
@@ -137,7 +137,7 @@
|
|
137
137
|
</div>
|
138
138
|
|
139
139
|
<div id="footer">
|
140
|
-
Generated on
|
140
|
+
Generated on Sat Dec 3 11:39:31 2011 by
|
141
141
|
<a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
142
142
|
0.7.3 (ruby-1.8.7).
|
143
143
|
</div>
|
data/doc/file.LICENSE.html
CHANGED
@@ -82,7 +82,7 @@ USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
82
82
|
</div></div>
|
83
83
|
|
84
84
|
<div id="footer">
|
85
|
-
Generated on
|
85
|
+
Generated on Sat Dec 3 11:39:31 2011 by
|
86
86
|
<a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
87
87
|
0.7.3 (ruby-1.8.7).
|
88
88
|
</div>
|
data/doc/file.README.html
CHANGED
@@ -63,9 +63,9 @@
|
|
63
63
|
<strong>Author</strong>: Randy Morgan <br/>
|
64
64
|
<strong>Copyright</strong>: 2011 <br/>
|
65
65
|
<strong>License</strong>: MIT License <br/>
|
66
|
-
<strong>Latest Version</strong>: 1.0.
|
66
|
+
<strong>Latest Version</strong>: 1.0.2 <br/>
|
67
67
|
<strong>Ruby Version</strong>: 1.8.7 - 1.9.3<br/>
|
68
|
-
<strong>Release Date</strong>: December
|
68
|
+
<strong>Release Date</strong>: December 3rd 2011</p>
|
69
69
|
|
70
70
|
<h2>Synopsis</h2>
|
71
71
|
|
@@ -98,7 +98,11 @@
|
|
98
98
|
|
99
99
|
<h3>Examples</h3>
|
100
100
|
|
101
|
-
<p>A trivial rails example
|
101
|
+
<p>A trivial rails example. In a production environment you will want to you stuff like x_sendfile and Tempfile<br/>
|
102
|
+
<a href="http://www.therailsway.com/2009/2/22/file-downloads-done-right">http://www.therailsway.com/2009/2/22/file-downloads-done-right</a></p>
|
103
|
+
|
104
|
+
<p>for nginx<br/>
|
105
|
+
<a href="http://andrewtimberlake.com/blog/how-to-protect-downloads-but-still-have-nginx-serve-the-files">http://andrewtimberlake.com/blog/how-to-protect-downloads-but-still-have-nginx-serve-the-files</a></p>
|
102
106
|
|
103
107
|
<pre class="code"> <span class='comment val'>#Add the gem to your Gemfile and bundle install</span>
|
104
108
|
<span class='gem identifier id'>gem</span> <span class='string val'>'acts_as_xlsx'</span>
|
@@ -117,11 +121,28 @@
|
|
117
121
|
<span class='send_file identifier id'>send_file</span> <span class='string val'>'public/downloads/posts.xlsx'</span><span class='comma token'>,</span> <span class='symbol val'>:type=</span><span class='gt op'>></span><span class='string val'>"application/xlsx"</span>
|
118
122
|
<span class='end end kw'>end</span>
|
119
123
|
<span class='end end kw'>end</span>
|
124
|
+
|
125
|
+
<span class='comment val'># dont forget to add posts/xslx to your routes!</span>
|
120
126
|
</pre>
|
121
127
|
|
122
|
-
<p>
|
128
|
+
<p>In addition to dumping the entire table, it is also possible to specify the columns and method chains to execute in genrating your report.</p>
|
123
129
|
|
124
|
-
<pre class="code"
|
130
|
+
<pre class="code"> <span class='comment val'># GET posts/xslx</span>
|
131
|
+
<span class='def def kw'>def</span> <span class='xlsx identifier id'>xlsx</span>
|
132
|
+
<span class='p identifier id'>p</span> <span class='assign token'>=</span> <span class='Post constant id'>Post</span><span class='dot token'>.</span><span class='to_xlsx identifier id'>to_xlsx</span> <span class='symbol val'>:columns</span> <span class='assign token'>=</span><span class='gt op'>></span> <span class='lbrack token'>[</span><span class='symbol val'>:name</span><span class='comma token'>,</span> <span class='symbol val'>:title</span><span class='comma token'>,</span> <span class='symbol val'>:ranking</span><span class='comma token'>,</span> <span class='symbol val'>:'comments.last.content'</span><span class='comma token'>,</span> <span class='symbol val'>:'comments.last.author.name'</span><span class='rbrack token'>]</span>
|
133
|
+
<span class='p identifier id'>p</span><span class='dot token'>.</span><span class='serialize identifier id'>serialize</span><span class='lparen token'>(</span><span class='string val'>'public/downloads/posts.xlsx'</span><span class='rparen token'>)</span>
|
134
|
+
<span class='send_file identifier id'>send_file</span> <span class='string val'>'public/downloads/posts.xlsx'</span><span class='comma token'>,</span> <span class='symbol val'>:type=</span><span class='gt op'>></span><span class='string val'>"application/xlsx"</span>
|
135
|
+
<span class='end end kw'>end</span>
|
136
|
+
</pre>
|
137
|
+
|
138
|
+
<p>If your application uses i18n, you can specify the prefix for column labels as well</p>
|
139
|
+
|
140
|
+
<pre class="code"> <span class='comment val'># GET posts/xslx</span>
|
141
|
+
<span class='def def kw'>def</span> <span class='xlsx identifier id'>xlsx</span>
|
142
|
+
<span class='p identifier id'>p</span> <span class='assign token'>=</span> <span class='Post constant id'>Post</span><span class='dot token'>.</span><span class='to_xlsx identifier id'>to_xlsx</span> <span class='symbol val'>:i18n</span> <span class='assign token'>=</span><span class='gt op'>></span> <span class='string val'>'activerecord.attributes'</span>
|
143
|
+
<span class='p identifier id'>p</span><span class='dot token'>.</span><span class='serialize identifier id'>serialize</span><span class='lparen token'>(</span><span class='string val'>'public/downloads/posts.xlsx'</span><span class='rparen token'>)</span>
|
144
|
+
<span class='send_file identifier id'>send_file</span> <span class='string val'>'public/downloads/posts.xlsx'</span><span class='comma token'>,</span> <span class='symbol val'>:type=</span><span class='gt op'>></span><span class='string val'>"application/xlsx"</span>
|
145
|
+
<span class='end end kw'>end</span>
|
125
146
|
</pre>
|
126
147
|
|
127
148
|
<p>For examples on how to use axlsx for custom styles, charts, images and more see:</p>
|
@@ -144,6 +165,8 @@
|
|
144
165
|
<h2>Changelog</h2>
|
145
166
|
|
146
167
|
<ul>
|
168
|
+
<li><p><strong>December.3.11</strong>: 1.0.2 release
|
169
|
+
Added support for chained method columns like :'model.association.attribute'</p></li>
|
147
170
|
<li><p><strong>October.30.11</strong>: 1.0.1 release</p>
|
148
171
|
|
149
172
|
<ul>
|
@@ -174,7 +197,7 @@ licensed under the MIT license. Please see the <a href="file.LICENSE.html" title
|
|
174
197
|
</div></div>
|
175
198
|
|
176
199
|
<div id="footer">
|
177
|
-
Generated on
|
200
|
+
Generated on Sat Dec 3 11:39:31 2011 by
|
178
201
|
<a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
179
202
|
0.7.3 (ruby-1.8.7).
|
180
203
|
</div>
|
data/doc/index.html
CHANGED
@@ -63,9 +63,9 @@
|
|
63
63
|
<strong>Author</strong>: Randy Morgan <br/>
|
64
64
|
<strong>Copyright</strong>: 2011 <br/>
|
65
65
|
<strong>License</strong>: MIT License <br/>
|
66
|
-
<strong>Latest Version</strong>: 1.0.
|
66
|
+
<strong>Latest Version</strong>: 1.0.2 <br/>
|
67
67
|
<strong>Ruby Version</strong>: 1.8.7 - 1.9.3<br/>
|
68
|
-
<strong>Release Date</strong>: December
|
68
|
+
<strong>Release Date</strong>: December 3rd 2011</p>
|
69
69
|
|
70
70
|
<h2>Synopsis</h2>
|
71
71
|
|
@@ -98,7 +98,11 @@
|
|
98
98
|
|
99
99
|
<h3>Examples</h3>
|
100
100
|
|
101
|
-
<p>A trivial rails example
|
101
|
+
<p>A trivial rails example. In a production environment you will want to you stuff like x_sendfile and Tempfile<br/>
|
102
|
+
<a href="http://www.therailsway.com/2009/2/22/file-downloads-done-right">http://www.therailsway.com/2009/2/22/file-downloads-done-right</a></p>
|
103
|
+
|
104
|
+
<p>for nginx<br/>
|
105
|
+
<a href="http://andrewtimberlake.com/blog/how-to-protect-downloads-but-still-have-nginx-serve-the-files">http://andrewtimberlake.com/blog/how-to-protect-downloads-but-still-have-nginx-serve-the-files</a></p>
|
102
106
|
|
103
107
|
<pre class="code"> <span class='comment val'>#Add the gem to your Gemfile and bundle install</span>
|
104
108
|
<span class='gem identifier id'>gem</span> <span class='string val'>'acts_as_xlsx'</span>
|
@@ -117,11 +121,28 @@
|
|
117
121
|
<span class='send_file identifier id'>send_file</span> <span class='string val'>'public/downloads/posts.xlsx'</span><span class='comma token'>,</span> <span class='symbol val'>:type=</span><span class='gt op'>></span><span class='string val'>"application/xlsx"</span>
|
118
122
|
<span class='end end kw'>end</span>
|
119
123
|
<span class='end end kw'>end</span>
|
124
|
+
|
125
|
+
<span class='comment val'># dont forget to add posts/xslx to your routes!</span>
|
120
126
|
</pre>
|
121
127
|
|
122
|
-
<p>
|
128
|
+
<p>In addition to dumping the entire table, it is also possible to specify the columns and method chains to execute in genrating your report.</p>
|
123
129
|
|
124
|
-
<pre class="code"
|
130
|
+
<pre class="code"> <span class='comment val'># GET posts/xslx</span>
|
131
|
+
<span class='def def kw'>def</span> <span class='xlsx identifier id'>xlsx</span>
|
132
|
+
<span class='p identifier id'>p</span> <span class='assign token'>=</span> <span class='Post constant id'>Post</span><span class='dot token'>.</span><span class='to_xlsx identifier id'>to_xlsx</span> <span class='symbol val'>:columns</span> <span class='assign token'>=</span><span class='gt op'>></span> <span class='lbrack token'>[</span><span class='symbol val'>:name</span><span class='comma token'>,</span> <span class='symbol val'>:title</span><span class='comma token'>,</span> <span class='symbol val'>:ranking</span><span class='comma token'>,</span> <span class='symbol val'>:'comments.last.content'</span><span class='comma token'>,</span> <span class='symbol val'>:'comments.last.author.name'</span><span class='rbrack token'>]</span>
|
133
|
+
<span class='p identifier id'>p</span><span class='dot token'>.</span><span class='serialize identifier id'>serialize</span><span class='lparen token'>(</span><span class='string val'>'public/downloads/posts.xlsx'</span><span class='rparen token'>)</span>
|
134
|
+
<span class='send_file identifier id'>send_file</span> <span class='string val'>'public/downloads/posts.xlsx'</span><span class='comma token'>,</span> <span class='symbol val'>:type=</span><span class='gt op'>></span><span class='string val'>"application/xlsx"</span>
|
135
|
+
<span class='end end kw'>end</span>
|
136
|
+
</pre>
|
137
|
+
|
138
|
+
<p>If your application uses i18n, you can specify the prefix for column labels as well</p>
|
139
|
+
|
140
|
+
<pre class="code"> <span class='comment val'># GET posts/xslx</span>
|
141
|
+
<span class='def def kw'>def</span> <span class='xlsx identifier id'>xlsx</span>
|
142
|
+
<span class='p identifier id'>p</span> <span class='assign token'>=</span> <span class='Post constant id'>Post</span><span class='dot token'>.</span><span class='to_xlsx identifier id'>to_xlsx</span> <span class='symbol val'>:i18n</span> <span class='assign token'>=</span><span class='gt op'>></span> <span class='string val'>'activerecord.attributes'</span>
|
143
|
+
<span class='p identifier id'>p</span><span class='dot token'>.</span><span class='serialize identifier id'>serialize</span><span class='lparen token'>(</span><span class='string val'>'public/downloads/posts.xlsx'</span><span class='rparen token'>)</span>
|
144
|
+
<span class='send_file identifier id'>send_file</span> <span class='string val'>'public/downloads/posts.xlsx'</span><span class='comma token'>,</span> <span class='symbol val'>:type=</span><span class='gt op'>></span><span class='string val'>"application/xlsx"</span>
|
145
|
+
<span class='end end kw'>end</span>
|
125
146
|
</pre>
|
126
147
|
|
127
148
|
<p>For examples on how to use axlsx for custom styles, charts, images and more see:</p>
|
@@ -144,6 +165,8 @@
|
|
144
165
|
<h2>Changelog</h2>
|
145
166
|
|
146
167
|
<ul>
|
168
|
+
<li><p><strong>December.3.11</strong>: 1.0.2 release
|
169
|
+
Added support for chained method columns like :'model.association.attribute'</p></li>
|
147
170
|
<li><p><strong>October.30.11</strong>: 1.0.1 release</p>
|
148
171
|
|
149
172
|
<ul>
|
@@ -174,7 +197,7 @@ licensed under the MIT license. Please see the <a href="file.LICENSE.html" title
|
|
174
197
|
</div></div>
|
175
198
|
|
176
199
|
<div id="footer">
|
177
|
-
Generated on
|
200
|
+
Generated on Sat Dec 3 11:39:31 2011 by
|
178
201
|
<a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
179
202
|
0.7.3 (ruby-1.8.7).
|
180
203
|
</div>
|
data/lib/acts_as_xlsx.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
1
2
|
# Axlsx is a gem or generating excel spreadsheets with charts, images and many other features.
|
2
3
|
#
|
3
4
|
# acts_as_xlsx provides integration into active_record for Axlsx.
|
@@ -72,7 +73,14 @@ module Axlsx
|
|
72
73
|
sheet.add_row col_labels, :style=>header_style
|
73
74
|
|
74
75
|
data.each do |r|
|
75
|
-
|
76
|
+
row_data = columns.map do |c|
|
77
|
+
if c.to_s =~ /\./
|
78
|
+
v = r; c.to_s.split('.').each { |method| v = v.send(method) }; v
|
79
|
+
else
|
80
|
+
r.send(c)
|
81
|
+
end
|
82
|
+
end
|
83
|
+
sheet.add_row row_data, :style=>row_style, :types=>types
|
76
84
|
end
|
77
85
|
end
|
78
86
|
p
|
Binary file
|
data/test/tc_acts_as_xlsx.rb
CHANGED
@@ -44,6 +44,13 @@ class TestToXlsx < Test::Unit::TestCase
|
|
44
44
|
assert_equal("Name", sheet.rows.first.cells.first.value)
|
45
45
|
assert_equal(Post.last.ranking, sheet.rows.last.cells.last.value)
|
46
46
|
end
|
47
|
+
|
48
|
+
def test_chained_method
|
49
|
+
p = Post.to_xlsx :columns=>[:name, :votes, :content, :ranking, :'comments.last.content', :'comments.first.author.name']
|
50
|
+
sheet = p.workbook.worksheets.first
|
51
|
+
assert_equal("Name", sheet.rows.first.cells.first.value)
|
52
|
+
assert_equal(Post.last.comments.last.author.name, sheet.rows.last.cells.last.value)
|
53
|
+
end
|
47
54
|
end
|
48
55
|
|
49
56
|
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: acts_as_xlsx
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 19
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 1
|
8
8
|
- 0
|
9
|
-
-
|
10
|
-
version: 1.0.
|
9
|
+
- 2
|
10
|
+
version: 1.0.2
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Randy Morgan
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-12-
|
18
|
+
date: 2011-12-03 00:00:00 Z
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
21
21
|
name: axlsx
|
@@ -65,38 +65,10 @@ dependencies:
|
|
65
65
|
version: 0.6.0
|
66
66
|
type: :runtime
|
67
67
|
version_requirements: *id003
|
68
|
-
- !ruby/object:Gem::Dependency
|
69
|
-
name: yard
|
70
|
-
prerelease: false
|
71
|
-
requirement: &id004 !ruby/object:Gem::Requirement
|
72
|
-
none: false
|
73
|
-
requirements:
|
74
|
-
- - ">="
|
75
|
-
- !ruby/object:Gem::Version
|
76
|
-
hash: 3
|
77
|
-
segments:
|
78
|
-
- 0
|
79
|
-
version: "0"
|
80
|
-
type: :runtime
|
81
|
-
version_requirements: *id004
|
82
|
-
- !ruby/object:Gem::Dependency
|
83
|
-
name: rdiscount
|
84
|
-
prerelease: false
|
85
|
-
requirement: &id005 !ruby/object:Gem::Requirement
|
86
|
-
none: false
|
87
|
-
requirements:
|
88
|
-
- - ">="
|
89
|
-
- !ruby/object:Gem::Version
|
90
|
-
hash: 3
|
91
|
-
segments:
|
92
|
-
- 0
|
93
|
-
version: "0"
|
94
|
-
type: :runtime
|
95
|
-
version_requirements: *id005
|
96
68
|
- !ruby/object:Gem::Dependency
|
97
69
|
name: sqlite3
|
98
70
|
prerelease: false
|
99
|
-
requirement: &
|
71
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
100
72
|
none: false
|
101
73
|
requirements:
|
102
74
|
- - ">="
|
@@ -106,11 +78,11 @@ dependencies:
|
|
106
78
|
- 0
|
107
79
|
version: "0"
|
108
80
|
type: :development
|
109
|
-
version_requirements: *
|
81
|
+
version_requirements: *id004
|
110
82
|
- !ruby/object:Gem::Dependency
|
111
83
|
name: rake
|
112
84
|
prerelease: false
|
113
|
-
requirement: &
|
85
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
114
86
|
none: false
|
115
87
|
requirements:
|
116
88
|
- - ">="
|
@@ -122,7 +94,7 @@ dependencies:
|
|
122
94
|
- 2
|
123
95
|
version: 0.9.2
|
124
96
|
type: :development
|
125
|
-
version_requirements: *
|
97
|
+
version_requirements: *id005
|
126
98
|
description: " acts_as_xlsx lets you turn any ActiveRecord::Base inheriting class into an excel spreadsheet.\n"
|
127
99
|
email: digital.ipseity@gmail.com
|
128
100
|
executables: []
|
@@ -142,7 +114,6 @@ files:
|
|
142
114
|
- lib/acts_as_xlsx.rb
|
143
115
|
- doc/_index.html
|
144
116
|
- doc/Axlsx/Ar/ClassMethods.html
|
145
|
-
- doc/Axlsx/Ar/InstanceMethods.html
|
146
117
|
- doc/Axlsx/Ar/SingletonMethods.html
|
147
118
|
- doc/Axlsx/Ar.html
|
148
119
|
- doc/Axlsx.html
|
@@ -1,188 +0,0 @@
|
|
1
|
-
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
2
|
-
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
3
|
-
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
4
|
-
<head>
|
5
|
-
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
6
|
-
<title>
|
7
|
-
Module: Axlsx::Ar::InstanceMethods
|
8
|
-
|
9
|
-
— Acts As Xlsx (Axlsx)
|
10
|
-
|
11
|
-
</title>
|
12
|
-
|
13
|
-
<link rel="stylesheet" href="../../css/style.css" type="text/css" media="screen" charset="utf-8" />
|
14
|
-
|
15
|
-
<link rel="stylesheet" href="../../css/common.css" type="text/css" media="screen" charset="utf-8" />
|
16
|
-
|
17
|
-
<script type="text/javascript" charset="utf-8">
|
18
|
-
relpath = '../..';
|
19
|
-
if (relpath != '') relpath += '/';
|
20
|
-
</script>
|
21
|
-
|
22
|
-
<script type="text/javascript" charset="utf-8" src="../../js/jquery.js"></script>
|
23
|
-
|
24
|
-
<script type="text/javascript" charset="utf-8" src="../../js/app.js"></script>
|
25
|
-
|
26
|
-
|
27
|
-
</head>
|
28
|
-
<body>
|
29
|
-
<script type="text/javascript" charset="utf-8">
|
30
|
-
if (window.top.frames.main) document.body.className = 'frames';
|
31
|
-
</script>
|
32
|
-
|
33
|
-
<div id="header">
|
34
|
-
<div id="menu">
|
35
|
-
|
36
|
-
<a href="../../_index.html">Index (I)</a> »
|
37
|
-
<span class='title'><span class='object_link'><a href="../../Axlsx.html" title="Axlsx (module)">Axlsx</a></span></span> » <span class='title'><span class='object_link'><a href="../Ar.html" title="Axlsx::Ar (module)">Ar</a></span></span>
|
38
|
-
»
|
39
|
-
<span class="title">InstanceMethods</span>
|
40
|
-
|
41
|
-
|
42
|
-
<div class="noframes"><span class="title">(</span><a href="." target="_top">no frames</a><span class="title">)</span></div>
|
43
|
-
</div>
|
44
|
-
|
45
|
-
<div id="search">
|
46
|
-
|
47
|
-
<a id="class_list_link" href="#">Class List</a>
|
48
|
-
|
49
|
-
<a id="method_list_link" href="#">Method List</a>
|
50
|
-
|
51
|
-
<a id="file_list_link" href="#">File List</a>
|
52
|
-
|
53
|
-
</div>
|
54
|
-
<div class="clear"></div>
|
55
|
-
</div>
|
56
|
-
|
57
|
-
<iframe id="search_frame"></iframe>
|
58
|
-
|
59
|
-
<div id="content"><h1>Module: Axlsx::Ar::InstanceMethods
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
</h1>
|
64
|
-
|
65
|
-
<dl class="box">
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
<dt class="r1 last">Defined in:</dt>
|
75
|
-
<dd class="r1 last">lib/axlsx/acts_as_xlsx.rb</dd>
|
76
|
-
|
77
|
-
</dl>
|
78
|
-
<div class="clear"></div>
|
79
|
-
|
80
|
-
<h2>Overview</h2><div class="docstring">
|
81
|
-
<div class="discussion">
|
82
|
-
|
83
|
-
<p>Defines the instance methods we add to ActiveRecord::Base</p>
|
84
|
-
|
85
|
-
|
86
|
-
</div>
|
87
|
-
</div>
|
88
|
-
<div class="tags">
|
89
|
-
|
90
|
-
|
91
|
-
</div>
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
<h2>
|
98
|
-
Instance Method Summary
|
99
|
-
<small>(<a href="#" class="summary_toggle">collapse</a>)</small>
|
100
|
-
</h2>
|
101
|
-
|
102
|
-
<ul class="summary">
|
103
|
-
|
104
|
-
<li class="public ">
|
105
|
-
<span class="summary_signature">
|
106
|
-
|
107
|
-
<a href="#to_xlsx-instance_method" title="#to_xlsx (instance method)">- (Object) <strong>to_xlsx</strong>(options = {}) </a>
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
</span>
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
<span class="summary_desc"><div class='inline'>
|
121
|
-
<p>Allows a single instance to be exported All active record find options are
|
122
|
-
allowed.</p>
|
123
|
-
</div></span>
|
124
|
-
|
125
|
-
</li>
|
126
|
-
|
127
|
-
|
128
|
-
</ul>
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
<div id="instance_method_details" class="method_details_list">
|
134
|
-
<h2>Instance Method Details</h2>
|
135
|
-
|
136
|
-
|
137
|
-
<div class="method_details first">
|
138
|
-
<p class="signature first" id="to_xlsx-instance_method">
|
139
|
-
|
140
|
-
- (<tt>Object</tt>) <strong>to_xlsx</strong>(options = {})
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
</p><div class="docstring">
|
145
|
-
<div class="discussion">
|
146
|
-
|
147
|
-
<p>Allows a single instance to be exported All active record find options are
|
148
|
-
allowed</p>
|
149
|
-
|
150
|
-
|
151
|
-
</div>
|
152
|
-
</div>
|
153
|
-
<div class="tags">
|
154
|
-
|
155
|
-
|
156
|
-
</div><table class="source_code">
|
157
|
-
<tr>
|
158
|
-
<td>
|
159
|
-
<pre class="lines">
|
160
|
-
|
161
|
-
|
162
|
-
88
|
163
|
-
89
|
164
|
-
90</pre>
|
165
|
-
</td>
|
166
|
-
<td>
|
167
|
-
<pre class="code"><span class="info file"># File 'lib/axlsx/acts_as_xlsx.rb', line 88</span>
|
168
|
-
|
169
|
-
<span class='kw'>def</span> <span class='id to_xlsx'>to_xlsx</span><span class='lparen'>(</span><span class='id options'>options</span><span class='op'>=</span><span class='lbrace'>{</span><span class='rbrace'>}</span><span class='rparen'>)</span>
|
170
|
-
<span class='kw'>self</span><span class='period'>.</span><span class='id class'>class</span><span class='period'>.</span><span class='id to_xlsx'>to_xlsx</span><span class='lparen'>(</span><span class='kw'>self</span><span class='period'>.</span><span class='id id'>id</span><span class='comma'>,</span> <span class='id options'>options</span><span class='rparen'>)</span>
|
171
|
-
<span class='kw'>end</span></pre>
|
172
|
-
</td>
|
173
|
-
</tr>
|
174
|
-
</table>
|
175
|
-
</div>
|
176
|
-
|
177
|
-
</div>
|
178
|
-
|
179
|
-
</div>
|
180
|
-
|
181
|
-
<div id="footer">
|
182
|
-
Generated on Wed Nov 30 22:59:02 2011 by
|
183
|
-
<a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
184
|
-
0.7.3 (ruby-1.9.3).
|
185
|
-
</div>
|
186
|
-
|
187
|
-
</body>
|
188
|
-
</html>
|