Nach RailsCast http://railscasts.com/episodes/362-exporting-csv-and-excel?autoplay=true Ich versuche, den XLS-Download zu formatieren, aber mit meinem unteren Code formatiert er nicht die XLS-Datei, sondern öffnet nur Excel (ohne Daten und keine Datei geöffnet).Ruby on Rails: Warum funktioniert meine Formatierung beim Herunterladen von XLS nicht?
Mime_types.rb
:
Mime::Type.register "application/xls", :xls
Contacts_controller
:
def index
@contacts = Contact.where(user_id: session[:user_id])
respond_to do |format|
format.html
format.csv { send_data @contacts.to_csv }
format.xls
end
end
Contact
Modell:
def self.to_csv(options = {})
CSV.generate(options) do |csv|
csv << column_names
all.each do |contact|
csv << contact.attributes.values_at(*column_names)
end
end
end
Index.xls.erb
:
<table border="1">
<tr>
<th>Firstname</th>
<th>Surname</th>
<th>Email</th>
</tr>
<% @contacts.each do |contact| %>
<tr>
<td><%= contact.firstname %></td>
<td><%= contact.surname %></td>
<td><%= contact.email %></td>
</tr>
<% end %>
</table>
Kann mir jemand den Grund dafür sagen?
Kann ich beachten Sie, dass, wenn die Linie format.xls
in der Steuerung ersetzt format.xls { send_data @contacts.to_csv(col_sep: "\t") }
es nicht die XLS-Datei herunterladen, aber ohne Formatierung.
Erstens, um 4:31 im RailsCast Ryan verwendet eine HTML-Tabelle, um die Excel-Datei zu formatieren, und ich habe versucht, die XML-Markierung, aber das Ergebnis in einer beschädigten Datei. Vielen Dank für die Erklärung des Formatierungsproblems, aber ich möchte das jetzt nicht durch ein Juwel machen. –
@BenSmith: Ich habe die tatsächliche Besetzung nicht gesehen, ich gebe zu. :) Aber im Textteil des Videos gibt es nur die Xml-Version. –
@BenSmith: "Ich will kein Juwel" - ja, ich verstehe das total. Wir haben es geschafft, 3 Jahre mit ähnlichen gefälschten xls zu bestehen. Aber am Ende mussten wir das Reale umsetzen. –