Ignorieren von Eigenschaften beim Aufruf von LoadFromCollection in EPPlus

8

Ich versuche, eine Excel-Datei mit dem folgenden Code zu generieren:

%Vor%

Das funktioniert jedoch wie ein Leckerbissen. Ich möchte einige Eigenschaften in meiner Klassensammlung ignorieren, damit sie mit meiner Vorlage übereinstimmen. Ich weiß, dass die LoadFromCollection Spalten in der Excel-Datei basierend auf den öffentlichen Eigenschaften der Klasse generieren wird, aber wenn ich die Klasse mit Entity Framework lade, wenn ich das Feld als privat markiere, dann beschwert sich EF - meistens weil einer von Die Felder, die ich nicht zeigen möchte, sind der Schlüssel.

Ich habe versucht, die Eigenschaften, die ich nicht verwenden möchte, mit [XmlIgnore] zu markieren, ohne Erfolg. Gibt es eine Möglichkeit, dies zu tun, die gesamte Sammlung in einen Datensatz oder etwas ähnliches zu laden und die Spalten daraus zu entfernen? Oder Casting zu einer Basisklasse ohne die Eigenschaften, die ich nicht brauche?

    
nat 01.09.2014, 10:11
quelle

2 Antworten

14

Ja, EPPlus bietet eine Überladung der Methode .LoadFromCollection<T>() mit einem Parameter MemberInfo[] für die Eigenschaften, die Sie einfügen möchten.

Dies gibt uns alles, was wir brauchen, um irgendwelche Eigenschaften mit einem bestimmten Attribut zu ignorieren.

Wenn wir beispielsweise Eigenschaften mit diesem benutzerdefinierten Attribut ignorieren möchten:

%Vor%

Dann können wir eine kleine Erweiterungsmethode schreiben, um zuerst alle MemberInfo -Objekte für die Eigenschaften ohne das [EpplusIgnore] -Attribut zu finden und dann das Ergebnis der korrekten Überladung der .LoadFromCollection -Methode in der EPPlus-DLL zurückzugeben.

In etwa so:

%Vor%

Wenn Sie es beispielsweise so verwenden, ignoriert es die .Key -Eigenschaft beim Exportieren einer Person -Kollektion nach Excel:

%Vor%

Geben Sie die Ausgabe, die wir erwarten würden:

    
Stewart_R 07.01.2016 22:22
quelle
2

Danke Stewart_R, basierend auf deiner Arbeit habe ich eine neue erstellt, die Eigenschaftsnamen erhält:

%Vor%     
Johann Medina 12.02.2017 20:03
quelle