如何从一串URL生成HTML报告

时间:2010-10-30 12:15:06

标签: html wpf c#-4.0 report

在我的程序中,我有一个字符串,其中包含以/ n分隔的URL(每行一个)

假设该字符串被称为“链接”。我想获取此字符串并生成一个HTML文件,该文件将在我的默认浏览器中自动打开,这将使每个URL成为超链接(每行一个)。如何在不使用WPF C#4.0的任何第三方组件的情况下制作此类报告?我希望通过单击名为“导出”的按钮生成报告。

1 个答案:

答案 0 :(得分:2)

有很多方法可以做到这一点,但这里有一个快速而肮脏的例子(因为我在运行中写这篇文章可能需要调试)。 [修改:现在使用Uri对象来制定实际地址。]

private void export_Click(object sender, RoutedEventArgs e)
    {
        string tempFileName = "list.html";
        string links = "http://www.google.com/#sclient=psy&hl=en&site=&source=hp&q=test+me&aq=f&aqi=&aql=&oq=&gs_rfai=&pbx=1&fp=ddfbf15c2e2f4021\nhttp://www.testme.com/Test-Prep.html?afdt=Q3RzePF0jU8KEwja-5WM7PqkAhUUiZ0KHaoG_wcYASAAMJbwoAM4MEC4w6uX7dS53gdQlvCgA1CEra8PUJzr_xNQg73wFVCKttweUJStzNoBUNv67ZsD";
        List<Uri> uriCollection = new List<Uri>();

        foreach (string url in links.Split(new char[] { '\n' }, StringSplitOptions.RemoveEmptyEntries))
        {
            uriCollection.Add(new Uri(url));
        }

        // Create temporary file.
        using (TextWriter writer = new StreamWriter(tempFileName))
        {
            try
            {
                writer.WriteLine("<html>");
                writer.WriteLine("<head><title>Links</title></head>");
                writer.WriteLine("<body>");

                writer.WriteLine("<p>");

                foreach (Uri uri in uriCollection)
                {
                    writer.WriteLine("<a href=\"{0}\">{1}</a><br />", uri.OriginalString, uri.Host);
                }

                writer.WriteLine("</p>");

                writer.WriteLine("</body>");
                writer.WriteLine("</html>");
            }
            catch (Exception ex)
            {
                System.Diagnostics.Trace.TraceError(ex.Message);
            }
            finally
            {
                writer.Close();
            }
        }

        // Open browser with temporary file.
        if (File.Exists(tempFileName))
        {
            System.Diagnostics.Process.Start(tempFileName);
        }
    }

“导出”按钮连接到事件“export_Click”。我用例如'\ n'对字符串进行了硬编码。简单地使用split拆分它们并写一个临时文件来创建你需要的HTML。然后,一旦文件完成,您可以使用Process.Start()方法打开它。

理想情况下,如果不需要打开浏览器窗口,可以使用DataBinding和WPF中提供的其他元素来完成。这也将删除程序可能具有的任何外部依赖项。