Обнаружение пустых рабочих листов
Проверка заполненных ячеек
На листах могут быть одна или несколько ячеек, заполненных значениями: простыми (текст, числовыми, датой/временем) или формулой или значением, основанным на формуле. В таком случае легко определить, пуст ли данный лист или нет. Все, что нам нужно проверить, это свойства Cells.MaxDataRow или Cells.MaxDataColumn. Если вышеупомянутые свойства возвращают ноль или положительные значения, это означает, что одна или несколько ячеек заполнены, однако если какое-либо из этих свойств возвращает -1, это указывает на то, что ни одна из ячеек не заполнена на указанном листе.
Проверка пустых инициализированных ячеек
Все ячейки, которые имеют значения, автоматически инициализированы, однако есть возможность того, что на листе есть ячейки только с примененным форматированием. В этом случае свойства Cells.MaxDataRow или Cells.MaxDataColumn вернут -1, указывая на отсутствие каких-либо заполненных значений, но инициализированные ячейки из-за форматирования ячеек не могут быть обнаружены с использованием этого подхода. Чтобы проверить, есть ли на листе пустые инициализированные ячейки, рекомендуется использовать метод IEnumerator.MoveNext на перечислителе, полученном из коллекции Cells. Если метод IEnumerator.MoveNext вернет true, это означает, что на указанном листе есть одна или несколько инициализированных ячеек.
Проверка фигур
Возможно, что на данном листе нет заполненных ячеек, однако он может содержать фигуры и объекты, такие как элементы управления, диаграммы, изображения и т. д. Если нам нужно проверить, содержит ли лист какую-либо фигуру, мы можем сделать это, исследуя свойство ShapeCollection.Count. Любое положительное значение указывает на наличие фигур в листе.
Пример программирования
// 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"); | |
} | |
} | |
} |