在导入Excel之前从ASP.NET处理HTML

时间:2012-08-23 23:03:04

标签: c# asp.net regex excel hyperlink

我在ASP.NET中使用HTMLTable导出,使用Response.Write将所有HTML表格代码写入Excel文件。

我现在需要做的是从此Excel文件中删除所有超链接。有没有比使用正则表达式更好的方法呢?

如果正则表达式是最好的方法,我怎样才能消除标签而不是中间的ID?

    <td class="header">Details ID</td>
      <td>
         <div class="id"><a class="details" href="details?id=1232" target="_blank">1232</a></div>
      </td>
      <td>
         <div class="id"><a class="details" href="details?id=1233" target="_blank">1233</a></div>
      </td>
      <td>
         <div class="id"><a class="details" href="details?id=1234" target="_blank">1234</a></div>
      </td>
   </tr>

1 个答案:

答案 0 :(得分:0)

这个简单的正则表达式将会这样做:

</?(a|A).*?>

以下是使用您的输入进行测试的链接:

http://regexhero.net/tester/?id=c1458e14-de87-4f57-9850-3ee00e573566

enter image description here

如果您不喜欢使用Regex解析HTML作为John Saunders,您可以使用HtmlAgilityPack

class Program
{
    static void Main(string[] args)
    {
        RemoveHyperlinksButKeepText();
    }

    private static void RemoveHyperlinksButKeepText()
    {
        var htmlDoc = new HtmlDocument();
        htmlDoc.Load(@"C:\YourHtmlFile.html");

        var links = htmlDoc.DocumentNode.SelectNodes("//a");

        string html = htmlDoc.DocumentNode.OuterHtml;

        foreach (HtmlNode link in links)
        {
            var linkText = link.InnerText;

            html = html.Replace(link.OuterHtml, linkText);
        }

    }
}