Il controllo DataGrid di WPF 4.0 permette di ottenere “gratis” l’esportazione dei dati associati alla griglia in diversi formati tra cui plain text, CSV e HTML. Tale funzionalità è esposta semplicemente tramite l’invocazione del comando
Copy sul controllo, che trasferisce nella Clipboard i dati contenuti nelle celle selezionate, supportando i formati sopra citati (ovviamente i formati CSV e HTML sono i più interessanti nell’ottica dell’esportazione verso altre applicazioni). Nel seguente esempio viene mostrato come generare un file CSV contenente tutte le righe visualizzate in un DataGrid, includendo le intestazioni di colonna sulla prima riga.Il codice è veramente banale:
myDataGrid.SelectAllCells();
myDataGrid.ClipboardCopyMode = DataGridClipboardCopyMode.IncludeHeader;
ApplicationCommands.Copy.Execute(null, myDataGrid);
myDataGrid.UnselectAllCells();
string csvData = (string)Clipboard.GetData(DataFormats.CommaSeparatedValue);
Clipboard.Clear();
using (StreamWriter writer = new StreamWriter("C:\\test.csv")) { writer.Write(csvData); }
Se invece si sceglie l’HTML come formato di esportazione, ci dobbiamo attendere un simpatico header aggiuntivo collocato fuori dal DOM che indica dove iniziano e dove finiscono le differenti porzioni di dati. Si possono utilizzare tali informazioni per esportare sia una pagina web intera piuttosto che soltanto il frammento relativo alla tabella dati da inserire eventualmente in un’altro documento. In questo caso l’esempio precedente va semplicemente modificato specificando
DataFormats.Html come formato di estrazione dati dalla clipboard. Il risultato che otteniamo è il seguente:
Version:1.0
StartHTML:00000097
EndHTML:00000672
StartFragment:00000133
EndFragment:00000636
<HTML>
<BODY>
<!--StartFragment-->
<TABLE>...Dati...</TABLE>
<!--EndFragment-->
</BODY>
</HTML>
Tag di Technorati:
WPF,
DataGrid