Ich habe eine Arbeitsmappe mit einer Anzahl von Zellen, für die eine Datenvalidierung als Dropdown-Liste zulässiger Werte angegeben ist. Mit EPPlus möchte ich für jede Zelle die Liste der zulässigen Werte erhalten.So finden Sie die DataValidation-Liste für eine Excel-Zelle mit EPPlus
Bisher hat ich bekomme:
ExcelWorkSheet.DataValidations
gibt mir einExcelDataValidationCollection
, die eine Sammlung vonIExcelDataValidation
Elementen für das Arbeitsblatt ist.Jede
IExcelDataValidation
hat eine Address-Eigenschaft vom Typ , die vermutlich auf alle Zellen verweist, die diese Validierungsregel haben.Der Schritt, den ich auf bin stecken ist zu finden, wenn eine gegebene Zelle eine der Zellen in den
ExcelAddress
Jeder Abnehmer enthalten ist?
Ich verwende derzeit EPPlus 3.1.1.0, kann aber bei Bedarf auf eine neuere Version aktualisieren.
UPDATE
ich diese deutlich genug, um nicht zu erklären haben. Hier ist meine Situation im Detail.
Angenommen, Spalte C hat einige Zellen mit Listendatenüberprüfung. Einige Zellen erlauben, sagen wir, "A, B, C"; andere Zellen erlauben "D, E, F", usw. Der Bereich von Zellen für jeden Datenüberprüfungsliste nicht zusammenhängend ist, so zum Beispiel:
- C2, C4, C7-C10, C20 kann „A ermöglicht, B, C“
- C3, C5-C6" , kann C15 erlauben "D, E, F"
ich versuche, welche Zellen zu bestimmen erlauben "A, B, C", und die es erlauben, "D, E, F" usw.
ExcelWorksheet.DataValidations enthält Elemente der ExcelDataValidationList, eine mit den Werten "A, B, C", eine mit den Werten "D, E, F" usw .
ExcelDataValidationList.Address für die Liste "A, B, C" enthält eine ExcelAddress, deren Address-Eigenschaft etwa wie folgt aussieht: "C4 C7: C10 C2 C20 ...".
Ich möchte feststellen, ob eine bestimmte Zelle (etwa C6) in dem durch diese Adresse angegebenen Bereich "C4 C7: C10 C2 C20 ..." enthalten ist.
Natürlich kann ich String.Split auf Leerzeichen, und jedes Element in der resultierenden Liste analysieren. Aber ich hatte gehofft, dass es einen direkteren Weg geben würde, z.B.
ExcelAddress.Contains("C6")
oder
ExcelAddress.Contains(6, 2) // row 6 col 2 = C6
sheet.Cells [list.Formula.ExcelFormula] sind Sie sicher, dass das funktioniert? – kassi