Erkennen leerer Arbeitsblätter
Überprüfung auf belegte Zellen
Arbeitsblätter können eine oder mehrere Zellen enthalten, die Werte enthalten, wobei ein Wert einfach (Text, numerisch, Datum/Uhrzeit) oder eine Formel oder ein formelbasierter Wert sein kann. In einem solchen Fall ist es einfach zu erkennen, ob ein gegebenes Arbeitsblatt leer ist oder nicht. Alles, was wir überprüfen müssen, sind die Cells.MaxDataRow oder Cells.MaxDataColumn Eigenschaften. Wenn die oben genannten Eigenschaften Null oder positive Werte zurückgeben, bedeutet dies, dass eine oder mehr Zellen gefüllt wurden. Wenn jedoch eine dieser Eigenschaften -1 zurückgibt, bedeutet dies, dass keine der Zellen im angegebenen Arbeitsblatt gefüllt wurde.
Überprüfung auf leere initialisierte Zellen
Alle Zellen, die Werte enthalten, werden automatisch initialisiert. Es besteht jedoch die Möglichkeit, dass ein Arbeitsblatt Zellen nur mit Formatierung enthält. In einem solchen Szenario geben die Cells.MaxDataRow oder Cells.MaxDataColumn Eigenschaften -1 zurück, was auf das Fehlen von gefüllten Werten, aber initialisierten Zellen aufgrund der Zellformatierung hinweist. Um zu überprüfen, ob ein Arbeitsblatt leere initialisierte Zellen enthält, wird empfohlen, die IEnumerator.MoveNext-Methode auf dem Enumerator, der aus der Cells-Sammlung erhalten wurde, zu verwenden. Wenn die IEnumerator.MoveNext-Methode true zurückgibt, bedeutet dies, dass es eine oder mehrere initialisierte Zellen im angegebenen Arbeitsblatt gibt.
Überprüfung auf Formen
Es ist möglich, dass ein bestimmtes Arbeitsblatt keine gefüllten Zellen enthält, aber Formen und Objekte wie Steuerelemente, Diagramme, Bilder usw. enthalten kann. Wenn wir überprüfen müssen, ob ein Arbeitsblatt eine Form enthält, können wir dies tun, indem wir die ShapeCollection.Count-Eigenschaft untersuchen. Jeder positive Wert weist auf das Vorhandensein von Formen im Arbeitsblatt hin.
Programmierbeispiel
// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-.NET | |
// The path to the documents directory. | |
string dataDir = RunExamples.GetDataDir(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); | |
// Create an instance of Workbook and load an existing spreadsheet | |
var book = new Workbook(dataDir + "sample.xlsx"); | |
// Loop over all worksheets in the workbook | |
for (int i = 0; i < book.Worksheets.Count; i++) | |
{ | |
Worksheet sheet = book.Worksheets[i]; | |
// Check if worksheet has populated cells | |
if (sheet.Cells.MaxDataRow != -1) | |
{ | |
Console.WriteLine(sheet.Name + " is not empty because one or more cells are populated"); | |
} | |
// Check if worksheet has shapes | |
else if (sheet.Shapes.Count > 0) | |
{ | |
Console.WriteLine(sheet.Name + " is not empty because there are one or more shapes"); | |
} | |
// Check if worksheet has empty initialized cells | |
else | |
{ | |
Aspose.Cells.Range range = sheet.Cells.MaxDisplayRange; | |
var rangeIterator = range.GetEnumerator(); | |
if (rangeIterator.MoveNext()) | |
{ | |
Console.WriteLine(sheet.Name + " is not empty because one or more cells are initialized"); | |
} | |
} | |
} |