2010-08-23 5 views
2

Je sais que cette question a été posée et répondue de plusieurs façons, mais aucune d'entre elles n'aboutit au point crucial que j'ai besoin de comprendre. Dans WebForms, nous "subvertissons" le processus de rendu et écrivons directement dans le flux de sortie de la réponse. Comment y parvenir en utilisant une action de contrôleur, pour écrire CSV dans un fichier pour Excel?Comment exporter au format CSV dans une application ASP.NET MVC?

Répondre

2

De la même manière que vous écririez un autre fichier - utilisez FileResult et ses descendants.

+0

Merci, je sais maintenant comment écrire tout autre fichier aussi bien. – ProfK

2

Je me sers ceci: http://www.filehelpers.net/ dans une application mvc asp.net, regardez le guide de démarrage, vous devriez obtenir à partir de là

3

Juste pour élaborer sur la réponse FileHelpers d'Omu, j'ai été en mesure de combiner @shamp00's ideas ici avec this answer here afin de rendre un CSV à un FileContentResult via flux à la volée.

donné une FileHelpers DTO modèle comme ceci:

[DelimitedRecord(",")] 
public class Foo 
{ 
    public string Name { get; set; } 
    public int Id { get; set; } 
} 

Et une action de contrôleur:

public FileContentResult DownloadFoosCSV() 
{ 
    var foos = GetFoos(); // IEnumerable<Foo> 

    var fileHelper = new FileHelperEngine<Foo>(); 
    using (var stream = new MemoryStream()) 
    using (var streamWriter = new StreamWriter(stream, Encoding.UTF8)) 
    { 
     fileHelper.WriteStream(streamWriter, foos); 
     streamWriter.Flush(); 
     return File(stream.ToArray(), "application/csv", "NewFoos.csv"); 
    } 
} 
Questions connexes