Sto cercando di generare un file Excel utilizzando il seguente codice:proprietà Ignorare quando chiamata in LoadFromCollection 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");
}
}
}
}
Questo funziona come un piacere, però .. Io voglio ignorare un paio di immobili a mia collezione di classi, quindi corrisponde al mio modello. So che LoadFromCollection
genererà colonne nel file Excel in base alle proprietà pubbliche della classe, ma mentre sto caricando la classe utilizzando Entity Framework, se contrassegno il campo come privato, EF si lamenta, principalmente perché uno dei campi Non voglio mostrare è la chiave.
Ho provato a contrassegnare le proprietà che non desidero utilizzando [XmlIgnore]
, senza risultato. C'è un modo per farlo, a meno di caricare l'intera collezione in un set di dati o alcuni di essi e tagliare le colonne fuori da quello? O il casting su una classe base senza le proprietà di cui non ho bisogno?
Non potresti usare qualcosa come automapper o mappatura personalizzata ad un altro POCO cui solo le proprietà desiderate e quindi passare tale nuova collezione oggetto a epplus, invece della collezione EF –