Posts Tagged ‘GridView’
Exportar uma DataGridView para HTML em C#
7 de novembro de 2012
1 comentário
Olá pessoas!
Algumas vezes, trabalhando com desenvolvimento em WindowsForms, há a necessidade de imprimir uma DataGridView, exatamente como está sendo exibida.
Então criei uma classe para gerar um HTML com dados de uma DataGridView e abrir o HTML no navegar padrão instalado no windows. Segue o código:
public static class DataGridViewToHTML { public static void ExibirHTML(DataGridView dgv) { string caminho = Path.Combine(Application.StartupPath, "relat.html"); StreamWriter r = new System.IO.StreamWriter(caminho, false); Font fonte = dgv.ColumnHeadersDefaultCellStyle.Font; int tabSize = 0; foreach (DataGridViewColumn col in dgv.Columns) if (col.Visible) tabSize += col.Width; string[] conteudo = new string[dgv.Columns.Count]; r.WriteLine("<html><head>"); r.WriteLine("<meta http-equiv='Content-Type' " + "content='text/html; charset=utf-8' />"); r.WriteLine("<title>" + dgv.Name + "</title>"); r.WriteLine("</head><body>"); r.WriteLine("<div style='position:static'>"); r.WriteLine("<table style='border-collapse: collapse; width:" + tabSize.ToString() + "px'>"); r.WriteLine("<tr>"); foreach (DataGridViewColumn coluna in dgv.Columns) { if (coluna.Visible) { r.WriteLine("<td style='padding: 2px 2px 2px 2px; " + "font-weight:bold; font-size:" + Convert.ToInt32(fonte.Size + 3).ToString() + "px; border-collapse: collapse; ' align='" + coluna.InheritedStyle.Alignment.ToString().Substring(6, coluna.InheritedStyle.Alignment.ToString().Length - 6) + "' width='" + coluna.Width + "'>"); r.WriteLine("<font face='" + fonte.Name + "'>"); r.WriteLine(coluna.HeaderText.ToString()); r.WriteLine("</font>"); r.WriteLine("</td>"); } } r.WriteLine("</tr>"); if (dgv.Rows.Count > 0) { foreach (DataGridViewRow linha in dgv.Rows) { r.WriteLine("<tr>"); foreach (DataGridViewCell celula in linha.Cells) { if (celula.Visible) { r.WriteLine("<td style='padding: 2px 2px 2px 2px; font-size:" + Convert.ToInt32(fonte.Size + 3).ToString() + "; border-collapse: collapse; ' align='" + celula.InheritedStyle.Alignment.ToString().Substring(6, celula.InheritedStyle.Alignment.ToString().Length - 6) + "' width='" + celula.Size.Width + "'>"); r.Write("<font face='" + fonte.Name + "'>" + celula.FormattedValue.ToString() + "</font>"); r.WriteLine("</td>"); } } r.WriteLine("</tr>"); } } r.WriteLine("</table></div></body></html>"); r.Close(); Process p = new Process(); p.StartInfo = new ProcessStartInfo(caminho); p.StartInfo.UseShellExecute = true; p.Start(); } }
O código pode ser melhorado. Pode ainda acrescentar detalhes como um cabeçado ou roda-pé, para dar um sentido de relatório, ou ainda acrescentar cores. É, mas ai já é HTML.
Quem quiser, poderá baixar um exemplo de uso da classe DataGridViewToHTML, clicando aqui.
Um forte abraço a todos,
Ivan Meirelles
Categorias:C#, Programação
C Sharp, Converter, DataGrid, DatGridView, Exportar, Grid, GridView, Html