检测空工作表
检查已填充的单元格
工作表可以具有一个或多个填充值的单元格,其中值可以是简单的(文本、数字、日期/时间)或公式或基于公式的值。在这种情况下,很容易检测给定工作表是否为空。我们需要检查的是 Cells.MaxDataRow 或 Cells.MaxDataColumn 属性。如果上述属性返回零或正值,则意味着一个或多个单元格已填充,但是,如果其中任何一个属性返回-1,则表明给定工作表中没有填充单元格。
检测空初始化单元格
所有具有值的单元格都会自动初始化,但是有可能工作表只有应用格式的单元格。在这种情况下,Cells.MaxDataRow 或 Cells.MaxDataColumn 属性将返回-1,表明没有填充值,但由于单元格格式化而初始化的单元格无法使用此方法检测。为了检查工作表是否有空初始化的单元格,建议使用从 Cells 集合获取的迭代器的 Iterator.hasNext 方法。如果 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"); | |
} | |
} | |
} |