【问题标题】:Export LinqPad Result console as Html file by using script使用脚本将 LinqPad 结果控制台导出为 Html 文件
【发布时间】:2021-12-23 02:44:39
【问题描述】:

在 LINQPad 软件中,我想知道是否可以将结果保存或导出为 Html 文件。

结果标签是

我想保存结果并能够通过电子邮件发送。

我知道我可以通过使用一些外部指令来做到这一点,例如

string htmlResult = Util.Run ("test.linq", QueryResultFormat.Html).AsString();

lprun -format=html foo.linq > output.html

但我希望能够按需导出结果,但并非总是如此。我想为我的脚本带​​来最少的交互性。我想让脚本的用户决定何时继续以及何时发送脚本。

我只需要访问结果的正文元素。 LINQpad 让我为此疯狂,因为我可以使用 Util.Run 或 lprun 生成 Html,我还可以使用 Util.HtmlHead 访问此结果的头部,我可以使用 Util.ClearResults() 清除结果,我可以编写我想要在此结果页面中的所有内容,但无法检索它。我可以使用右上角的导出按钮手动导出它,但我不能通过编程来完成。

我通过使用带有新 Util 类的扩展创建了一个解决方法

public static class Util2
{
    // https://www.linqpad.net/CustomizingDump.aspx
    // http://www.linqpad.net/lprun.aspx
    // https://stackoverflow.com/questions/3555317/linqpad-extension-methods
    private static StringBuilder htmlStringBuilder = new StringBuilder();

    /// <summary>Writes to LINQPad result window and save the result in html file</summary>
    public static object Save(this object o, bool writeFile = false, string fileName = null)
    {
        htmlStringBuilder.Append(Util.ToHtmlString(o));
        return o;
    }

    public static string GetResults()
    {
        return htmlStringBuilder.ToString();
    }

    public static void ClearResults()
    {
        htmlStringBuilder.Clear();
    }
}

我可以通过在所有 .Dump() 之后添加一个 .Save() 来使用它。我不能再使用 Console.Write() 并尝试最大程度地使用 Util.RawHtml()。

【问题讨论】:

  • 出于好奇:为什么是 HTML 而不仅仅是文本?
  • @KlausGütter,我不明白你的问题? Html 是文本。为什么我想得到 Html 的结果?因为我可以格式化文本并使用链接并将结果视为网格。

标签: c# linqpad


【解决方案1】:

目前,无法以编程方式导出结果窗口的内容。但是您可以通过提取原始 HTML 获得相当接近的结果:

string rawHTML = Util.InvokeScript (true, "eval", "document.documentElement.outerHTML");

这与您从交互式“导出到 HTML”选项中获得的“熟化”HTML 不同。煮熟的 HTML 已清除超链接和脚本,如果没有 LINQPad 主机,这些超链接和脚本将无法工作。

前段时间有一个 LINQPad 功能请求添加一个方法,例如Util.GetResultsAsHtml() 来提取导出的 HTML。添加这种方法的困难在于,当通过 lprun 调用脚本时它会失败(因为结果被发送到 Console.Out 而不是浏览器)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-07-28
    • 2011-07-21
    • 2018-08-26
    • 1970-01-01
    • 1970-01-01
    • 2019-04-07
    • 2016-06-05
    相关资源
    最近更新 更多