export excel

This commit is contained in:
Nicolas Bally 2013-04-05 14:45:03 +02:00
parent 289b99a9ef
commit 83c9c64bd3
5 changed files with 97 additions and 77 deletions

View File

@ -56,86 +56,17 @@ require 'iconv'
format.html # index.html.erb format.html # index.html.erb
format.xml { render :xml => @sheets } format.xml { render :xml => @sheets }
format.js {} format.js {}
format.csv { format.csv { send_data @sheets.to_csv2 }
format.xls
report = StringIO.new # report.rewind
CSV::Writer.generate(report, ';') do |csv|
csv << ["Organisation", "Nom","Prénom", "Mail", "Téléphone", "Autre téléphone","Autre mail" ,"Adresse 1", "Adresse 2", "Adresse 3", "Code postal", "Ville", "Pays", "Compétences","notes", "Type de fiche", "2010 - Type d'adhésion", "2010 - montant cotisation", "2010 - nature réglement", "2010 - date de réglement", "2011 - Type d'adhésion", "2011 - montant cotisation", "2011 - nature réglement", "2011 - date de réglement" ]
@sheets.sort{|u,v| ((u.person.surname if u.person) || u.corporate).to_s <=>(( v.person.surname if v.person )|| v.corporate).to_s}.each do |sheet| # converter = Iconv.new('ISO-8859-15//IGNORE//TRANSLIT','UTF-8')
r = [] # send_data( converter.iconv(report.read),:type => 'text/csv;',:filename => 'exporation-adherents.csv',:encoding => 'UTF-16')
r << sheet.corporate
if sheet.person
r << sheet.person.surname
r << sheet.person.firstname
r << sheet.person.email
r << sheet.person.phone
else
r << nil
r << nil
r << nil
r << nil
end
r << sheet.other_phone
r << sheet.other_mail
r << sheet.address
r << sheet.address2
r << sheet.address3
r << sheet.address3
r << sheet.pc
r << sheet.city
r << sheet.country
r << sheet.skills
r << Sheet::SHEET_TYPE[sheet.sheet_type]
if sheet_year = sheet.sheet_years.find(:first, :conditions => {:year => 2010})
r << SheetYear::JOIN_TYPE[sheet_year.join_type]
if !sheet_year.gift_year
r << sheet_year.amount
else
r << "A adhérer en fin d'année précédente - adhésion offerte"
end
r << SheetYear::PAYMENT_TYPE[sheet_year.payment_type]
r << sheet_year.paid_at
else
r << nil
r << nil
r << nil
r << nil
end
if sheet_year = sheet.sheet_years.find(:first, :conditions => {:year => 2011})
r << SheetYear::JOIN_TYPE[sheet_year.join_type]
if !sheet_year.gift_year
r << sheet_year.amount
else
r << "A adhérer en fin d'année précédente - adhésion offerte"
end
r << SheetYear::PAYMENT_TYPE[sheet_year.payment_type]
r << sheet_year.paid_at
else
r << nil
r << nil
r << nil
r << nil
end
csv << r #}
end
end
report.rewind
converter = Iconv.new('ISO-8859-15//IGNORE//TRANSLIT','UTF-8')
send_data( converter.iconv(report.read),:type => 'text/csv;',:filename => 'exporation-adherents.csv',:encoding => 'UTF-16')
}
end end
end end

View File

@ -34,6 +34,15 @@ class Sheet < ActiveRecord::Base
end end
def self.to_csv2(options = {})
puts "test"
CSV.generate(options) do |csv|
csv << ["hhgghgh", "jhhgghgh"]
end
end
def self.search_by_params(input) def self.search_by_params(input)
requette = "" requette = ""
requette += "(last_year IN(?))" if input[:sheet_year] requette += "(last_year IN(?))" if input[:sheet_year]

View File

@ -22,5 +22,5 @@
%br %br
#sheets #sheets
=render :partial => "sheets" =render :partial => "sheets"
=link_to "Exporter au format CSV", sheets_path(:format => :csv), :class => "lien" =link_to "Exporter au format XLS", sheets_path(:format => :xls), :class => "lien"

View File

@ -0,0 +1,77 @@
<?xml version="1.0"?>
<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet"
xmlns:o="urn:schemas-microsoft-com:office:office"
xmlns:x="urn:schemas-microsoft-com:office:excel"
xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"
xmlns:html="http://www.w3.org/TR/REC-html40">
<Worksheet ss:Name="Feuil1">
<Table>
<Row>
<Cell><Data ss:Type="String"> Organisation </Data></Cell>
<Cell><Data ss:Type="String"> Nom </Data></Cell>
<Cell><Data ss:Type="String"> Prénom </Data></Cell>
<Cell><Data ss:Type="String"> adresse </Data></Cell>
<Cell><Data ss:Type="String"> adresse 2 </Data></Cell>
<Cell><Data ss:Type="String"> adresse 3 </Data></Cell>
<Cell><Data ss:Type="String"> cp </Data></Cell>
<Cell><Data ss:Type="String"> ville </Data></Cell>
<Cell><Data ss:Type="String"> email </Data></Cell>
<Cell><Data ss:Type="String"> tel </Data></Cell>
<Cell><Data ss:Type="String"> profession </Data></Cell>
<Cell><Data ss:Type="String"> plume papier </Data></Cell>
<Cell><Data ss:Type="String"> Première adhesion </Data></Cell>
<Cell><Data ss:Type="String"> Dernier renouvellement </Data></Cell>
<Cell><Data ss:Type="String"> Création de la fiche </Data></Cell>
<Cell><Data ss:Type="String"> mise à jour</Data></Cell>
</Row>
<% @sheets.each do |sheet| %>
<Row>
<Cell><Data ss:Type="String"><%= sheet.corporate %></Data></Cell>
<% if sheet.first_people %>
<Cell><Data ss:Type="String"><%= sheet.first_people.surname %></Data></Cell>
<Cell><Data ss:Type="String"><%= sheet.first_people.firstname %></Data></Cell>
<% else %>
<%2.times do %>
<Cell><Data ss:Type="String"></Data></Cell>
<%end%>
<%end%>
<Cell><Data ss:Type="String"><%= sheet.address %></Data></Cell>
<Cell><Data ss:Type="String"><%= sheet.address2 %></Data></Cell>
<Cell><Data ss:Type="String"><%= sheet.address3 %></Data></Cell>
<Cell><Data ss:Type="String"><%= sheet.pc %></Data></Cell>
<Cell><Data ss:Type="String"><%= sheet.city %></Data></Cell>
<% if sheet.first_people %>
<Cell><Data ss:Type="String"><%= sheet.first_people.email %></Data></Cell>
<Cell><Data ss:Type="String"><%= sheet.first_people.phone %></Data></Cell>
<Cell><Data ss:Type="String"><%= sheet.first_people.job %></Data></Cell>
<% else %>
<%3.times do %>
<Cell><Data ss:Type="String"></Data></Cell>
<%end%>
<%end%>
<Cell><Data ss:Type="String"><%= sheet.plume %></Data></Cell>
<Cell><Data ss:Type="String"><%= sheet.first_year %></Data></Cell>
<Cell><Data ss:Type="String"><%= sheet.last_year %></Data></Cell>
<Cell><Data ss:Type="String"><%= l sheet.created_at %></Data></Cell>
<Cell><Data ss:Type="String"><%= l sheet.updated_at %></Data></Cell>
</Row>
<% end %>
</Table>
</Worksheet>
</Workbook>

View File

@ -1,4 +1,7 @@
# -*- encoding : utf-8 -*- # -*- encoding : utf-8 -*-
Mime::Type.register "application/xls", :xls
# Be sure to restart your server when you modify this file. # Be sure to restart your server when you modify this file.
# Add new mime types for use in respond_to blocks: # Add new mime types for use in respond_to blocks: