From 83c9c64bd362342e39c14da90094e064c1f6ccfc Mon Sep 17 00:00:00 2001 From: Nicolas Bally Date: Fri, 5 Apr 2013 14:45:03 +0200 Subject: [PATCH] export excel --- app/controllers/sheets_controller.rb | 83 +++------------------------- app/models/sheet.rb | 9 +++ app/views/sheets/index.html.haml | 2 +- app/views/sheets/index.xls.erb | 77 ++++++++++++++++++++++++++ config/initializers/mime_types.rb | 3 + 5 files changed, 97 insertions(+), 77 deletions(-) create mode 100644 app/views/sheets/index.xls.erb diff --git a/app/controllers/sheets_controller.rb b/app/controllers/sheets_controller.rb index 54d6968..db926eb 100644 --- a/app/controllers/sheets_controller.rb +++ b/app/controllers/sheets_controller.rb @@ -56,86 +56,17 @@ require 'iconv' format.html # index.html.erb format.xml { render :xml => @sheets } format.js {} - format.csv { + format.csv { send_data @sheets.to_csv2 } + format.xls - - report = StringIO.new - 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| - r = [] - - 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') + # 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 diff --git a/app/models/sheet.rb b/app/models/sheet.rb index 1da6743..294e712 100644 --- a/app/models/sheet.rb +++ b/app/models/sheet.rb @@ -34,6 +34,15 @@ class Sheet < ActiveRecord::Base end + + def self.to_csv2(options = {}) + puts "test" + CSV.generate(options) do |csv| + csv << ["hhgghgh", "jhhgghgh"] + + end + end + def self.search_by_params(input) requette = "" requette += "(last_year IN(?))" if input[:sheet_year] diff --git a/app/views/sheets/index.html.haml b/app/views/sheets/index.html.haml index 18b9c04..fbc7eda 100644 --- a/app/views/sheets/index.html.haml +++ b/app/views/sheets/index.html.haml @@ -22,5 +22,5 @@ %br #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" diff --git a/app/views/sheets/index.xls.erb b/app/views/sheets/index.xls.erb new file mode 100644 index 0000000..2f7f953 --- /dev/null +++ b/app/views/sheets/index.xls.erb @@ -0,0 +1,77 @@ + + + + + + + + + + Organisation + Nom + Prénom + adresse + adresse 2 + adresse 3 + cp + ville + email + tel + profession + plume papier + Première adhesion + Dernier renouvellement + Création de la fiche + mise à jour + + + + + + <% @sheets.each do |sheet| %> + + <%= sheet.corporate %> + <% if sheet.first_people %> + <%= sheet.first_people.surname %> + <%= sheet.first_people.firstname %> + <% else %> + <%2.times do %> + + <%end%> + <%end%> + + <%= sheet.address %> + <%= sheet.address2 %> + <%= sheet.address3 %> + <%= sheet.pc %> + <%= sheet.city %> + <% if sheet.first_people %> + <%= sheet.first_people.email %> + <%= sheet.first_people.phone %> + <%= sheet.first_people.job %> + + <% else %> + <%3.times do %> + + <%end%> + <%end%> + + <%= sheet.plume %> + <%= sheet.first_year %> + <%= sheet.last_year %> + <%= l sheet.created_at %> + <%= l sheet.updated_at %> + + + + + + <% end %> + +
+
+
diff --git a/config/initializers/mime_types.rb b/config/initializers/mime_types.rb index 9070e0c..49933cf 100644 --- a/config/initializers/mime_types.rb +++ b/config/initializers/mime_types.rb @@ -1,4 +1,7 @@ + # -*- encoding : utf-8 -*- + +Mime::Type.register "application/xls", :xls # Be sure to restart your server when you modify this file. # Add new mime types for use in respond_to blocks: