我尝试使用下面的代码来生成一个Excel文件:在EPPlus
public static Stream GenerateFileFromClass<T>(IEnumerable<T> collection, int startrow, int startcolumn, byte[]templateResource)
{
using (Stream template = new MemoryStream(templateResource))//this is an excel file I am using for a base/template
{
using (var tmpl = new ExcelPackage(template))
{
ExcelWorkbook wb = tmpl.Workbook;
if (wb != null)
{
if (wb.Worksheets.Count > 0)
{
ExcelWorksheet ws = wb.Worksheets.First();
ws.Cells[startrow, startcolumn].LoadFromCollection<T>(collection, false);
}
return new MemoryStream(tmpl.GetAsByteArray());
}
else
{
throw new ArgumentException("Unable to load template WorkBook");
}
}
}
}
这就像一种享受,但是..我想忽略了几个属性的我类集合,所以它匹配我的模板。我知道LoadFromCollection
将基于该类的公共属性在Excel文件中生成列,但由于我使用实体框架加载类,如果将该字段标记为私有,则EF会抱怨 - 主要是因为其中一个字段我不想展示的是钥匙。
我试图标记我不想使用[XmlIgnore]
的属性,无济于事。有没有办法做到这一点,短缺将整个集合加载到一个数据集或一些这样的,并修剪列?或者转换成没有我不需要的属性的基类?
难道你不使用类似AutoMapper或自定义映射到另一个POCO只所需的属性,然后通过新的对象集合以epplus,而不是EF集合 – 2014-11-12 13:52:30