使用脚本将 LinqPad 结果控制台导出为 Html 文件

Posted

技术标签:

【中文标题】使用脚本将 LinqPad 结果控制台导出为 Html 文件【英文标题】:Export LinqPad Result console as Html file by using script 【发布时间】: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://***.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 的结果?因为我可以格式化文本并使用链接并将结果视为网格。 【参考方案1】:

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

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

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

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

【讨论】:

以上是关于使用脚本将 LinqPad 结果控制台导出为 Html 文件的主要内容,如果未能解决你的问题,请参考以下文章

LINQ/LinqPad:相同的查询不同的结果

.NET 程序员的 Playground :LINQPad

sql server怎么导出查询结果为脚本

以编程方式运行查询并将其导出为 DataGrip 中的 CSV 文件

csharp LINQPad脚本,用于获取有关当前所选数据库的基本架构信息(假设LINQPad的默认数据上下文创建方法)

csharp LINQPad脚本,用于获取有关当前所选数据库的基本架构信息(假设LINQPad的默认数据上下文创建方法)