Как создать отчет в формате HTML из строки URL - PullRequest
0 голосов
/ 30 октября 2010

В моей программе есть строка, содержащая URL-адреса, разделенные / n (по одному на строку)

Допустим, строка называется «ссылки».Я хочу взять эту строку и сгенерировать HTML-файл, который автоматически откроется в моем браузере по умолчанию, который сделает каждый URL-адрес гиперссылкой (по одному на строку).Как сделать такой отчет, не используя сторонние компоненты, использующие WPF C # 4.0?Я хочу, чтобы отчет был сгенерирован нажатием кнопки «Экспорт».

1 Ответ

2 голосов
/ 30 октября 2010

Есть много способов сделать это, но вот быстрый и грязный пример (отладка может быть необходима, так как я написал это на лету). [ Редактировать : теперь использует объекты 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, если не требовалось открывать окно браузера. Это также удалит все внешние зависимости, которые может иметь программа.

...