检测空工作表
Contents
[
Hide
]
检查填充 Cells
工作表可以有一个或多个单元格填充值,其中值可以是简单的(文本、数字、日期/时间)或公式或基于公式的值。在这种情况下,很容易检测到给定工作表是否为空。我们只需要检查Cells.MaxDataRow要么Cells.MaxDataColumn特性。如果上述属性返回零值或正值,则表示已填充一个或多个单元格,但是,如果这些属性中的任何一个返回 -1,则表示给定工作表中未填充任何单元格。
行和列集合具有从零开始的索引,因此,第 0 行和第 0 列的单元格表示工作表中的第一个单元格,即 A1。
检查空初始化 Cells
所有具有值的单元格都会自动初始化,但是,工作表中的单元格可能只应用了格式。在这种情况下,Cells.MaxDataRow要么Cells.MaxDataColumnproperties 将返回 -1,表示没有任何填充值,但使用此方法无法检测到由于单元格格式而初始化的单元格。为了检查工作表是否有空的初始化单元格,建议使用迭代器.hasNext从 Cells 集合获取的迭代器上的方法。如果迭代器.hasNext方法返回 true 那么这意味着在给定的工作表中有一个或多个已初始化的单元格。
有许多方法可以获取细胞枚举器,详见如何以及在何处使用迭代器.
检查形状
给定的工作表可能没有任何填充的单元格,但是,它可能包含形状和对象,例如控件、图表、图像等。如果我们需要检查工作表是否包含任何形状,我们可以通过检查ShapeCollection.Count财产。任何正值表示工作表中存在形状。
编程范例
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// 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"); | |
} | |
} | |
} |