¿Para convertir una colección genérica a tabla html?, no, y desconozco el motivo, quizás pueda ser para evitar implementar funcionalidades basadas en asunciones de objetos representables en texto, pero esta ausencia de funcionalidad en la librería de clases de .NetFx nos presenta lugar a que existan cientos de soluciones
home-made (que ya podrías haber buscado...) que hacen esas asunciones y puedes encontrar en Google, como por ejemplo esta:
- Export DataGridView to HTML Page | StackOverflow (http://stackoverflow.com/questions/16008477/export-datagridview-to-html-page)
Para crear una tabla html, desde Cero, si, puedes hacerlo.
En ASP.Net se puede utilizar el control
Htmltable para crear y renderizar una tabla Html estática:
- How to: Create and Edit HTML Tables in Design View | MSDN (https://msdn.microsoft.com/en-us/library/0fz1zbtd%28v=vs.100%29.aspx)
- Table, TableRow, and TableCell Web Server Control Overview | MSDN (https://msdn.microsoft.com/en-us/library/ty0ce8sc%28v=vs.100%29.aspx)
En WinForms puedes aprovechar ese control para poder crear una tabla Html en tiempo de ejecución, de forma guiada, mediante tipos/classes que representan la tabla, las filas y sus celdas.
Te muestro un ejemplo (en el enlace de arriba tienes otro ejemplo, basado en ASP.Net):
Dim html As String
Using t As New HtmlTable,
tr As New HtmlTableRow,
td As New HtmlTableCell,
sw As New StringWriter
With t
.BgColor = ColorTranslator.ToHtml(Color.Black)
.Border = 2
.BorderColor = ColorTranslator.ToHtml(Color.Gold)
.Height = "300px"
.Width = "200px"
End With
With td
.BgColor = ColorTranslator.ToHtml(Color.DarkGray)
.BorderColor = ColorTranslator.ToHtml(Color.LightGray)
.Height = "10px"
.InnerText = "Hello World!"
End With
tr.Cells.Add(td)
t.Rows.Add(tr)
t.RenderControl(New HtmlTextWriter(sw))
html = sw.ToString()
Console.WriteLine(html)
End Using
Resultado de ejecución:
<table bgcolor="Black" border="2" bordercolor="Gold" height="300px" width="200px">
<tr>
<td bgcolor="DarkGray" bordercolor="LightGrey" height="10px">Hello World!</td>
</tr>
</table>
Sabiendo esto, puedes crear un método de uso genérico o extensión de método, solo tienes que iterar los elementos de "X" colección para ir construyendo la tabla html de forma automatizada, aunque en realidad también puedes hacer lo mismo que acabo de mencionar pero construyendo el string por completo con la class StringBuilder (como en la url de StackOverflow), cosa que yo no recomiendo, pues a la larga es mucho más rentable o beneficioso y llevadero el utilizar tipos que representan lo que quieres llevar a cabo (HtmlTable, HtmlTableRow, etc), aunque pueda resultarte igual de tedioso o no.
Saludos