Обнаружение пустых рабочих листов
Проверка заполненных ячеек
На рабочих листах может быть заполнено одна или несколько ячеек значениями, где значение может быть простым (текст, числовое, дата/время) или формулой или значением на основе формулы. В таком случае легко определить, пуст ли данный рабочий лист или нет. Все, что нужно проверить, это свойства Cells.MaxDataRow или Cells.MaxDataColumn. Если вышеупомянутые свойства возвращают ноль или положительные значения, то это означает, что одна или несколько ячеек были заполнены, однако, если какое-либо из этих свойств возвращает -1, это означает, что ни одна из ячеек не была заполнена на данном рабочем листе.
Проверка пустых инициализированных ячеек
Все ячейки, которые имеют значения, автоматически инициализируются, однако есть возможность, что на листе есть ячейки, на которые применено только форматирование. В таком сценарии свойства Cells.MaxDataRow или Cells.MaxDataColumn вернут -1, указывая на отсутствие заполненных значений, но инициализированные ячейки из-за форматирования не могут быть обнаружены с помощью этого подхода. Чтобы проверить, есть ли на листе пустые инициализированные ячейки, рекомендуется использовать метод Iterator.hasNext на итераторе, полученном из коллекции Cells. Если метод iterator.hasNext возвращает true, то это означает, что на данном листе есть одна или несколько инициализированных ячеек.
Проверка фигур
Возможно, что на определенном листе нет заполненных ячеек, однако он может содержать фигуры и объекты, такие как элементы управления, диаграммы, изображения и т. д. Если нам нужно проверить, содержит ли лист какую-либо форму, мы можем сделать это, проверив свойство ShapeCollection.Count. Любое положительное значение указывает на наличие фигуры(фигур) на листе.
Пример программирования
// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-Java | |
// The path to the documents directory. | |
String dataDir = Utils.getSharedDataDir(CheckForShapes.class) + "TechnicalArticles/"; | |
// Create an instance of Workbook and load an existing spreadsheet | |
Workbook workbook = new Workbook(dataDir + "SampleCheckCells.xlsx"); | |
// Loop over all worksheets in the workbook | |
for (int i = 0; i < workbook.getWorksheets().getCount(); i++) { | |
Worksheet worksheet = workbook.getWorksheets().get(i); | |
// Check if worksheet has populated cells | |
if (worksheet.getCells().getMaxDataRow() != -1) { | |
System.out.println(worksheet.getName() + " is not empty because one or more cells are populated"); | |
} | |
// Check if worksheet has shapes | |
else if (worksheet.getShapes().getCount() > 0) { | |
System.out.println(worksheet.getName() + " is not empty because there are one or more shapes"); | |
} | |
// Check if worksheet has empty initialized cells | |
else { | |
Range range = worksheet.getCells().getMaxDisplayRange(); | |
Iterator rangeIterator = range.iterator(); | |
if (rangeIterator.hasNext()) { | |
System.out.println(worksheet.getName() + " is not empty because one or more cells are initialized"); | |
} else { | |
System.out.println(worksheet.getName() + " is empty"); | |
} | |
} | |
} |