带有多个选项卡的Linq到Excel
本文关键字:Linq Excel 选项 | 更新日期: 2023-09-27 18:27:35
我使用实体框架和Linq来填充网格视图。我想在excel中获得与Linq相同的数据。此外,同一excel表中的第二个选项卡应该来自另一个Linq查询。
做这件事最简单、最好的方法是什么?
这有两部分。第一种是将linq集合序列化为CSV。您可以串行化这样一个可枚举的方法:
public static string ToCsv<T>(string separator, IEnumerable<T> objectlist)
{
Type t = typeof(T);
FieldInfo[] fields = t.GetFields();
string header = String.Join(separator, fields.Select(f => f.Name).ToArray());
StringBuilder csvdata = new StringBuilder();
csvdata.AppendLine(header);
foreach (var o in objectlist)
csvdata.AppendLine(ToCsvFields(separator, fields, o));
return csvdata.ToString();
}
这种方法不会帮助你处理深层对象,但它会让你找到CSV。第二阶段是构建XSLX格式(假设2个CSV还不够)。为此,我建议使用Microsoft的Open XML SDK从CSV字符串中构建两个工作表。我也喜欢这个构建Excel电子表格的答案。