本文介绍了将带有rowspans的HTML表转换为datatable C#的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
I need to convert a Html Table to DataTable in C#. I used HtmlAgilityPack but it does not convert it well because of rowspans. The code I am currently using is:
private static DataTable convertHtmlTableToDataTable()
{
WebClient webClient = new WebClient();
string urlContent = webClient.DownloadString("http://example.com");
string tableCode = getTableCode(urlContent);
string htmlCode = tableCode.Replace(" ", " ");
HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(htmlCode);
var headers = doc.DocumentNode.SelectNodes("//tr/th");
DataTable table = new DataTable();
foreach (HtmlNode header in headers)
{
table.Columns.Add(header.InnerText);
}
foreach (var row in doc.DocumentNode.SelectNodes("//tr[td]"))
{
table.Rows.Add(row.SelectNodes("td").Select(td => td.InnerText).ToArray());
}
return table;
}
And this is a part of Html Table:
<pre lang="HTML"> <table class="tabel" cellspacing="0" border="0">
<caption style="font-family:Verdana; font-size:20px;">SEMGRP</caption>
<tr>
<th class="celula" >Ora</th>
<th class="latime_celula celula">Luni</th>
<th class="latime_celula celula">Marti</th>
<th class="latime_celula celula">Miercuri</th>
<th class="latime_celula celula">Joi</th>
<th class="latime_celula celula">Vineri</th>
</tr>
<tr>
<td class="celula" nowrap="nowrap">8-9</td>
<td class="celula" rowspan="2">
<table border="0" align="center">
<tr>
<td nowrap="nowrap" align="center">
Curs
<br />
<a class="link_celula" href="afis_n0.php?id_tip=287&tip=p">Prof</a>
<br />
<a class="link_celula" href="afis_n0.php?id_tip=9&tip=s">Sala</a>
<br />
</td>
</tr>
</table>
</td>
<td class="celula" rowspan="2">
<table border="0" align="center">
<tr>
<td nowrap="nowrap" align="center">
Curs
<br />
<a class="link_celula" href="afis_n0.php?id_tip=287&tip=p">Prof</a>
<br />
<a class="link_celula" href="afis_n0.php?id_tip=12&tip=s">Sala</a>
<br />
</td>
</tr>
</table>
</td>
<td class="celula"> </td>
<td class="celula"> </td>
<td class="celula" rowspan="2">
<table border="0" align="center">
<tr>
<td nowrap="nowrap" align="center">
Curs
<br />
<a class="link_celula" href="afis_n0.php?id_tip=293&tip=p">Prof</a>
<br />
<a class="link_celula" href="afis_n0.php?id_tip=9&tip=s">Sala</a>
<br />
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td class="celula" nowrap="nowrap">9-10</td>
<td class="celula"> </td>
<td class="celula"> </td>
</tr>
<tr>
<td class="celula" nowrap="nowrap">10-11</td>
<td class="celula" rowspan="2">
<table border="0" align="center">
<tr>
<td nowrap="nowrap" align="center"> Curs
<br /><a class="link_celula" href="afis_n0.php?id_tip=303&tip=p">Prof</a>
<br /><a class="link_celula" href="afis_n0.php?id_tip=9&tip=s">Sala</a>
<br />
</td>
</tr>
</table>
</td>
<td class="celula" rowspan="2">
<table border="0" align="center">
<tr>
<td nowrap="nowrap" align="center"> Curs
<br />
<a class="link_celula" href="afis_n0.php?id_tip=331&tip=p">Prof</a>
<br />
<a class="link_celula" href="afis_n0.php?id_tip=14&tip=s">Sala</a>
<br />
</td>
</tr>
</table>
</td>
<td class="celula" rowspan="2">
<table border="0" align="center">
<tr>
<td nowrap="nowrap" align="center"> Curs
<br /><a class="link_celula" href="afis_n0.php?id_tip=330&tip=p">Prof</a>
<br /><a class="link_celula" href="afis_n0.php?id_tip=9&tip=s">Sala</a>
<br />
</td>
</tr>
</table>
</td>
<td class="celula"> </td>
<td class="celula" rowspan="2">
<table border="0" align="center">
<tr>
<td nowrap="nowrap" align="center"> Curs
<br />
<a class="link_celula" href="afis_n0.php?id_tip=293&tip=p">Prof</a>
<br />
<a class="link_celula" href="afis_n0.php?id_tip=10&tip=s">Sala</a> <br />
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td class="celula" nowrap="nowrap">11-12</td>
<td class="celula"> </td>
</tr>
<tr>
我尝试了一些解决方案,但我没有找到任何好处...
我尝试了什么:
感谢您提前提供任何帮助。
I tried some solutions but I did not find any good...
What I have tried:
Thanks for any help in advance.
推荐答案
<table class="tabel" cellspacing="0" border="0"><caption style="font-family:Verdana; font-size:20px;">SEMGRP</caption><tbody><tr><th class="celula">Ora</th><th class="latime_celula celula">Luni</th><th class="latime_celula celula">Marti</th><th class="latime_celula celula">Miercuri</th><th class="latime_celula celula">Joi</th><th class="latime_celula celula">Vineri</th></tr><tr><td class="celula" nowrap="nowrap">8-9</td><td class="celula" rowspan="2">
<table border="0" align="center"><tbody><tr><td nowrap="nowrap" align="center">
Curs
<br>
<a class="link_celula" href="afis_n0.php?id_tip=287&tip=p">Prof</a>
<br>
<a class="link_celula" href="afis_n0.php?id_tip=9&tip=s">Sala</a>
<br>
</td></tr></tbody></table>
</td><td class="celula" rowspan="2">
<table border="0" align="center"><tbody><tr><td nowrap="nowrap" align="center">
Curs
<br>
<a class="link_celula" href="afis_n0.php?id_tip=287&tip=p">Prof</a>
<br>
<a class="link_celula" href="afis_n0.php?id_tip=12&tip=s">Sala</a>
<br>
</td></tr></tbody></table>
</td><td class="celula"> </td><td class="celula"> </td><td class="celula" rowspan="2">
<table border="0" align="center"><tbody><tr><td nowrap="nowrap" align="center">
Curs
<br>
<a class="link_celula" href="afis_n0.php?id_tip=293&tip=p">Prof</a>
<br>
<a class="link_celula" href="afis_n0.php?id_tip=9&tip=s">Sala</a>
<br>
</td></tr></tbody></table>
</td></tr><tr><td class="celula" nowrap="nowrap">9-10</td><td class="celula"> </td><td class="celula"> </td></tr><tr><td class="celula" nowrap="nowrap">10-11</td><td class="celula" rowspan="2">
<table border="0" align="center"><tbody><tr><td nowrap="nowrap" align="center"> Curs
<br><a class="link_celula" href="afis_n0.php?id_tip=303&tip=p">Prof</a>
<br><a class="link_celula" href="afis_n0.php?id_tip=9&tip=s">Sala</a>
<br>
</td></tr></tbody></table>
</td><td class="celula" rowspan="2">
<table border="0" align="center"><tbody><tr><td nowrap="nowrap" align="center"> Curs
<br>
<a class="link_celula" href="afis_n0.php?id_tip=331&tip=p">Prof</a>
<br>
<a class="link_celula" href="afis_n0.php?id_tip=14&tip=s">Sala</a>
<br>
</td></tr></tbody></table>
</td><td class="celula" rowspan="2">
<table border="0" align="center"><tbody><tr><td nowrap="nowrap" align="center"> Curs
<br><a class="link_celula" href="afis_n0.php?id_tip=330&tip=p">Prof</a>
<br><a class="link_celula" href="afis_n0.php?id_tip=9&tip=s">Sala</a>
<br>
</td></tr></tbody></table>
</td><td class="celula"> </td><td class="celula" rowspan="2">
<table border="0" align="center"><tbody><tr><td nowrap="nowrap" align="center"> Curs
<br>
<a class="link_celula" href="afis_n0.php?id_tip=293&tip=p">Prof</a>
<br>
<a class="link_celula" href="afis_n0.php?id_tip=10&tip=s">Sala</a> <br>
</td></tr></tbody></table>
</td></tr><tr><td class="celula" nowrap="nowrap">11-12</td><td class="celula"> </td></tr><tr></tr></tbody></table>
这篇关于将带有rowspans的HTML表转换为datatable C#的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!