martedì 24 aprile 2018

C# convertire datatable in file Excel tramite Linq.

Il frammento di codice qui di seguito, illustra una tecnica di come convertire un DataTable in un file Excel tramite Linq.

    var Righe= new List();

            string[] nomiColonne= dttDati.Columns.Cast().
                                              Select(column => column.ColumnName).
                                              ToArray();

            var intestazione = string.Join(";", nomiColonne);
            Righe.Add(intestazione );
            Righe.Add("\r");
            var valoriPerRighe = dttDati.AsEnumerable()
                               .Select(row => string.Join(";", row.ItemArray)+"\r");

            Righe.AddRange(valoriPerRighe );

A questo punto abbiamo nell'oggetto Righe, la possibilità di trasformarlo in Excel, nel codice qui di seguito trasformiamo l'oggetto list string in array byte e fare il download del file in Asp.Net MVC.

  byte[] listRigheAsBytes = Righe.SelectMany(s => System.Text.Encoding.ASCII.GetBytes(s)).ToArray();

return File(listRigheAsBytes , System.Net.Mime.MediaTypeNames.Application.Octet, "ExcelRisultato.csv");

Nessun commento: