Detectar hojas de cálculo vacías

Buscar celdas pobladas

Las hojas de cálculo pueden tener una o más celdas pobladas con valores donde un valor puede ser simple (texto, numérico, fecha/hora) o una fórmula o un valor basado en fórmula. En este caso, es fácil detectar si una hoja de cálculo dada está vacía o no. Todo lo que tenemos que comprobar es las propiedades Cells.MaxDataRow o Cells.MaxDataColumn. Si las propiedades mencionadas devuelven valores cero o positivos, eso significa que una o más celdas han sido pobladas. Sin embargo, si alguna de estas propiedades devuelve -1, eso indica que ninguna de las celdas ha sido poblada en la hoja de cálculo dada.

Comprobar celdas inicializadas vacías

Todas las celdas que tienen valores se inicializan automáticamente, sin embargo, existe la posibilidad de que una hoja de cálculo tenga celdas con solo formato aplicado. En dicho escenario, las propiedades Cells.MaxDataRow o Cells.MaxDataColumn devolverán -1, lo que indica la ausencia de valores poblados pero las celdas inicializadas debido al formato de las celdas no se pueden detectar mediante este enfoque. Para comprobar si una hoja de cálculo tiene celdas inicializadas vacías, se recomienda usar el método Iterator.hasNext en el iterador adquirido de la colección Cells. Si el método iterator.hasNext devuelve true, entonces eso significa que hay una o más celdas inicializadas en la hoja de cálculo dada.

Comprobar formas

Es posible que una hoja de cálculo dada no tenga celdas pobladas, sin embargo, podría contener formas y objetos como controles, gráficos, imágenes, etc. Si necesitamos comprobar si una hoja de cálculo contiene alguna forma, podemos hacerlo inspeccionando la propiedad ShapeCollection.Count. Cualquier valor positivo indica la presencia de una o más formas en la hoja de cálculo.

Ejemplo de Programación

// 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");
}
}
}