3 Stimmen

Auf CustomProperties auf dem Arbeitsblatt mit Namen zugreifen

Ich versuche, auf eine benutzerdefinierte Eigenschaft eines Arbeitsblatts zuzugreifen, indem ich den Namen der Eigenschaft verwende, aber anscheinend wird dies nicht unterstützt (zumindest nicht in C#, ich habe gesehen, dass andere berichten, dass es in VB funktioniert und die Dokumentation sagt dies auch). Kann jemand bestätigen, dass dies in C# nicht funktioniert? Hier ist Beispielcode:

activeWorkSheet.CustomProperties.Add("Test", 123);
// Der Zugriff über den Index funktioniert, aber über den Namen nicht.
// Die Dokumentation besagt, dass der Zugriff nach Namen möglich sein sollte.
var funktioniert = activeWorkSheet.CustomProperties.Item[1].Value;
var funktioniertNicht = activeWorkSheet.CustomProperties.Item["Test"].Value;

Ich weiß, dass ein Workaround einfach eine Methode ist, die über alle Eigenschaften iteriert und die richtige findet, aber ich würde wirklich gerne zusätzlichen Overhead vermeiden.

3voto

Lasse Christiansen Punkte 9885

Kann jemand bestätigen, dass dies in C# nicht funktioniert?

Habe es gerade mit der Office 2013 Vorschau und der Version 15 der Interop-API versucht und ich kann bestätigen, dass dies in C# nicht funktioniert (wirft eine COMException mit der Meldung "Typen unverträglich").

Ich habe die Dokumentation überprüft, die besagt, dass es völlig legal sein sollte, den Schlüsselnamen als Index für den Item Indexer zu verwenden - aus der Dokumentation für die CustomProperties.Item Eigenschaft geht hervor, dass der folgende Indexer verfügbar ist:

CustomProperty this[
    Object Index
] { get; }

... und im folgenden Text heißt es in der Dokumentation:

Parameter

Index

Typ: System.Object

Erforderliches Objekt. Der Name oder Indexnummer des Objekts.

... also da die Dokumentation besagt, dass der Name ein gültiger Schlüssel ist, könnte das Verhalten, das wir erleben, wahrscheinlich ein Bug sein.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X