检测空工作表

检查填充 Cells

工作表可以有一个或多个单元格填充值,其中值可以是简单的(文本、数字、日期/时间)或公式或基于公式的值。在这种情况下,很容易检测到给定工作表是否为空。我们只需要检查Cells.MaxDataRow要么Cells.MaxDataColumn特性。如果上述属性返回零值或正值,则表示已填充一个或多个单元格,但是,如果这些属性中的任何一个返回 -1,则表示给定工作表中未填充任何单元格。

检查空初始化 Cells

所有具有值的单元格都会自动初始化,但是,工作表中的单元格可能只应用了格式。在这种情况下,Cells.MaxDataRow要么Cells.MaxDataColumnproperties 将返回 -1,表示没有任何填充值,但使用此方法无法检测到由于单元格格式而初始化的单元格。为了检查工作表是否有空的初始化单元格,建议使用迭代器.hasNext从 Cells 集合获取的迭代器上的方法。如果迭代器.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");
}
}
}