关于C#:带多个选项卡的Linq to Excel

Linq to Excel with multiple tabs

本问题已经有最佳答案,请猛点这里访问。

我使用实体框架和LINQ来填充我的网格视图。我想在Excel中从LINQ获得相同的数据。同样,同一Excel工作表中的第二个选项卡也应该来自另一个Linq查询。

最简单最好的方法是什么?


这有两个部分。第一种方法是将Linq集合序列化为csv。您可以这样序列化一个可枚举方法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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的OpenXML SDK从csv字符串构建两个工作表。我也喜欢这个构建Excel电子表格的答案。