4

我有一个包含很多子查询的对象,我想像 Linqpad 一样导出到 excel,这是一个示例:

在此处输入图像描述

有什么帮助吗?

Tks

4

4 回答 4

10

如果您在项目中包含对 linqpad.exe 的引用,则可以使用它来导出到 html

例如,

List<User> users  = ....
var filename = "test.html";

var writer = LINQPad.Util.CreateXhtmlWriter();
writer.Write(users);

System.IO.File.WriteAllText(filename, writer.ToString());

// Open the file in excel
Process.Start("Excel" , filename); 
于 2012-04-18T18:27:32.133 回答
3

Excel 实际上可以打开一个 HTML 文档,重命名为“xls” - 将 HTML 表格结构读入 Excel 单元格。

不过,您必须将数据输出为 HTML。

于 2012-04-18T16:13:34.087 回答
1

如前所述,LinqPad 并没有真正导出为 Excel 格式。但它会创建一个 HTML 文件,并使用 Ms-Excel 打开它。(但对于下载文件,您不能强制客户端如何打开文件,但您可以将扩展名命名为 XLS,并在 EXCEL 中打开并显示警告)。

为了生成 HTML 输出,LinqPad 使用hyperlinq库。

void Main()
{
    var filePath = Path.GetTempPath() + "output.html"; //or output.xls but with ms-excel warning
    var iEnumerbleValue = Enumerable.Range(1, 500).Select(e => new { a = 1, b = e });
    File.WriteAllText(filePath,  CreateHtml(iEnumerbleValue).ToString());
    Process.Start("EXCEL.EXE", filePath); 
}



HDoc CreateHtml<T>(IEnumerable<T> coll)
{
    var fields = typeof(T).GetProperties();

    return H.Doc(
            H.head(H.style()),
            H.body(
             H.table(
                H.tbody(
                    H.tr(fields.Select(f => H.th(f.Name))),
                    from item in coll
                    select H.tr(
                        fields.Select(f => H.td(f.GetValue(item)))
                    )
                        )
                    )
                  )
                );
}
于 2018-01-02T11:20:31.973 回答
0

我想为下一个搜索的人添加这个解决方案。我意识到这是一个老问题,但它是我搜索中唯一出现的问题。

您可以在命令行上运行 lprun。

lprun -format=html yourQuery.linq > output.xls

Excel 能够打开 html,只要它是 xls 扩展名而不是 xlsx。如果您使用 xlsx,它会抱怨它的格式错误并且无法打开。使用 xls 扩展名,它会发出一条消息,但它可以打开。

正如一个注释 - 我需要一个实体框架的数据库连接字符串。我在 linqpad.config 中有它,我花了一段时间才弄清楚为什么 lprun 无法读取它。您必须将连接字符串部分添加到 lprun.exe.config 以便 lprun 可以使用它。

于 2015-01-07T13:24:58.973 回答