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电子表格的答案。