我有一个包含许多子查询的对象,我想要像Linqpad一样导出到Excel,以下是示例图:
请问有什么帮助吗?谢谢。
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 可以打开被重命名为 "xls" 的 HTML 文档,并将 HTML 表格结构读入 Excel 单元格。
但你需要将你的数据输出为 HTML 格式。
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 -format=html yourQuery.linq > output.xls
Excel可以打开HTML文件,只要它的扩展名是xls而不是xlsx。如果使用xlsx,则会提示格式错误并无法打开。使用xls扩展名时,它会给出一个消息,但仍然可以打开。
顺便提一下- 我需要一个用于实体框架的数据库连接字符串。我在linqpad.config中找到了它,但花了一段时间才弄清楚为什么lprun无法读取它。您必须将连接字符串部分添加到lprun.exe.config中,以便lprun可以使用它。