在我的程序中,我有一个字符串,其中包含以/ n分隔的URL(每行一个)
假设该字符串被称为“链接”。我想获取此字符串并生成一个HTML文件,该文件将在我的默认浏览器中自动打开,这将使每个URL成为超链接(每行一个)。如何在不使用WPF C#4.0的任何第三方组件的情况下制作此类报告?我希望通过单击名为“导出”的按钮生成报告。
答案 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中提供的其他元素来完成。这也将删除程序可能具有的任何外部依赖项。