sabato 7 febbraio 2015

Asp.Net export to Csv

Nel caso che si vuole esportare il risultato di una select in Linq in Csv, il frammento di codice qui di seguito permette tale scenario.
Come si vede dal frammento di codice,  dobbiamo inserire i valori separati da punto e virgola, tramite l'oggetto StringBuilder, aggiungiamo le singole righe e tramite Response generiamo il file.
Qui di seguito l'esempio in C#

 var Valori = GetDati().Where(p => p.CampoID== "valore").ToList();
         var risultato = from n in Valori
               orderby n.campoA ascending
               select new
               {
                   Riga = n.CampoA,
                   Colonna = n.CampoB,
                   Lunghezza = n.CampoC
               };
         string Testo = "IntestazioneA;IntestazioneB;IntestazioneC";
         var sb = new StringBuilder();
         sb.AppendLine(Testo );
         foreach (var elemento in risultato)
         {

             Testo = elemento.CampoA+ ";" + elemento.CampoB+ ";" + elemento.CampoC + ";"  ;
             sb.AppendLine(Testo);
         }
         string attachment = "attachment; filename=NomeFile.csv";
         HttpContext.Current.Response.Clear();
         HttpContext.Current.Response.ClearHeaders();
         HttpContext.Current.Response.ClearContent();
         HttpContext.Current.Response.AddHeader("content-disposition", attachment);
         HttpContext.Current.Response.ContentType = "text/csv";
         HttpContext.Current.Response.AddHeader("Pragma", "public");
       
         HttpContext.Current.Response.Write(sb.ToString());
         HttpContext.Current.Response.End();

Nessun commento: