This blog deals with loading of HTML tables into VSFlexGrid. Currently we have LoadGrid method which loads grid from a file previously saved comma-delimited text file (CSV format) such as an Excel text file, or a tab-delimited text file saved using the SaveGrid method. To load HTML table directly, we need to parse the HTML into a delimited text file and use LoadGrid to add it. Following code showcases the same, on Form _Load event:
' Load some HTML Text Me.Text1.Text = "<table>" & _ "<thead>" & _ "<tr>" & _ "<th>Header 1</th>" & _ "<th>Header 2</th>" & _ "</tr>" & _ "<tbody>" & _ "<tr>" & _ "<td>R1C1</td>" & _ "<td>R1C2</td>" & _ "</tr>" & _ "<tr>" & _ "<td>R2C1</td>" & _ "<td>R2C2</td>" & _ "</tr>" & _ "</tbody>" & _ "</table>"
To parse the html, we will create a ParseHTML() method which will parse this string into a CSV file.
Private Sub ParseHTML(htmlText As String) ' Use VSFlexString to parse out the HTML ' and create comma delimited text With Me.VSFlexString1 .Text = htmlText .Pattern = "</tr>" .Replace = "\\r\\n" .Pattern = "</th>" .Replace = "," .Pattern = "</td>" .Replace = "," .Pattern = "<[^>]*>" .Replace = "" .Pattern = ",\\r\\n" .Replace = "\\r\\n" End With End Sub
Now, we will use the LoadGrid method of VsFlexGrid and import the table into the grid :
Private Sub Command1_Click() Dim mytext mytext = FreeFile ' Convert HTML to comma delimited text ParseHTML Me.Text1.Text Me.Text1.Text = Me.VSFlexString1.Text ' Save the text to a .csv Open App.Path & "\\text.csv" For Output As #mytext Print #mytext, Me.Text1.Text Close mytext ' Load the .csv into the grid. Me.VSFlexGrid1.LoadGrid App.Path & "\\text.csv", flexFileCommaText End Sub
Please refer to the attached sample for complete implementation. Download Sample