我有一个包含很多子查询的对象,我想像Linqpad一样导出到excel,这是一个例子:
有帮助吗?
TKS
如果在项目中包含对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);
Excel实际上可以打开一个HTML文档,重命名为“xls” - 读入HTML表格结构作为Excel单元格。
但是,您必须以HTML格式输出数据。
如上所述,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)))
)
)
)
)
);
}
我想为下一个搜索的人添加这个解决方案。我意识到这是一个老问题,但它是我搜索中唯一出现的问题。
您可以在命令行上运行lprun。
lprun -format=html yourQuery.linq > output.xls
只要是xls扩展名而不是xlsx,Excel就可以打开html。如果您使用xlsx,它会抱怨它格式错误而无法打开。使用xls扩展名它会给出一条消息,但它能够打开。
就像一个笔记 - 我需要一个实体框架的数据库连接字符串。我在linqpad.config中有它,我花了一段时间才弄清楚为什么lprun无法读取它。您必须将连接字符串部分添加到lprun.exe.config,以便lprun可以使用它。