2014-01-08 175 views
1

我編寫了一個應用程序來將信息導出到Excel文件(XLS),但它不會導出所有行(11,444行),並且僅導出5,630行。不能導出超過5000行到Excel?

這是我的表:

##### I HAVE MORE THAN 5000 rows 
|policies| 
    |id| |num_policy| |money| 
    1  12345  1000 
    2  45151  2000 
    3  15488  1300 
    ... ...   ...  

這是我的控制器:(proyect /應用/控制器/ policy_controller.rb)

class PolicyController < ApplicationController 

def exportation 

    @policies = Policy.paginate(:page => params[:page], :per_page => 10) 
    @results= Policy.find(:all) 

    respond_to do |format| 
    format.html 
    format.xls { send_data render_to_string(:partial=>"report"), :filename => "Report.xls" } 
    end 

這是我的視圖:(proyect /應用/視圖/exportation.html.erb)

<% @policies.each do |policy| %> 
    <%= policy.id %> 
    <%= policy.num_policy %> 
    <%= policy.money %> 
<% end %> 

<%= link_to "Export Excel",{:controller=>"policy",:action=>"exportation", :format=>"xls",:page => params[:page] } %> 

這是我的觀點:(proyect /應用/視圖/ _report.erb),但不出口超過500

<% @results.find_each(:batch_size => 8000) do |policy| %> 
    <%= policy.id %> 
    <%= policy.num_policy %> 
    <%= policy.money %> 
<% end %> 

這是我的日誌:

Rendered policy/_report (64280.5ms) 
Sending data Report.xls 
Completed in 64394ms (View: 0, DB: 0) | 200 OK [http://0.0.0.0/policy/exportation?format=xls] 

我想:

<% @results.each do |policy| %> 
    <%= policy.id %> 
    <%= policy.num_policy %> 
    <%= policy.money %> 
<% end %> 

而且還移除:page => params[:page]並沒有奏效。

<%= link_to "Export Excel",{:controller=>"policy",:action=>"exportation", :format=>"xls"} %> 

並且還添加了一個計數以確保它有11,444行。

class PolicyController < ApplicationController 
    def exportation 
    @policies = Policy.count 
    @results = Policy.count 
    end 
end 

SELECT count(*) AS count_all FROM `policies` 
### And I got 11 444 rows on both. 

是不是我的查詢,因爲我在MySQL上檢查它。

我花了一個星期的時間搜索有關這個問題的信息。

似乎我需要添加別的東西。

有人可以幫助我嗎?

+1

我認爲要記住,行的上限取決於Excel中的設置值(最大行數) – hek2mgl

+0

如果導出爲CSV,您會得到11k條記錄嗎?也許這樣做? – bbozo

+0

你確定該文件沒有每一行嗎?另外,看起來你渲染的部分不是'report',是'report_by_coupon',你能發佈那個嗎? –

回答

0

在做完我的最後一次測試後,我找到了答案,非常簡單。

我使用的是LINUX UBUNTU 64位,它使用OPEN OFFICE(libre calc),這個程序只顯示5000行。

解決的辦法是:

    *** Open the file using Microsoft Excel on Windows. *** 

謝謝你們的幫助。