带有多个选项卡的Linq到Excel

本文关键字:Linq Excel 选项 | 更新日期: 2023-09-27 18:27:35

我使用实体框架和Linq来填充网格视图。我想在excel中获得与Linq相同的数据。此外,同一excel表中的第二个选项卡应该来自另一个Linq查询。

做这件事最简单、最好的方法是什么?

带有多个选项卡的Linq到Excel

这有两部分。第一种是将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电子表格的答案。