[]
在使用数字和计算公式时,Excel 会评估任何错误,并通过在单元格左上角显示绿色三角形来指出错误。为了避免错误评估并且不显示绿色三角形来指出错误,GcExcel 在 IRange 接口中提供了 IgnoredError 属性和 IgnoredErrorType 枚举,使您能够忽略诸如无效的公式结果、以文本形式存储的数字、相邻单元格中不一致的公式等错误,并且不在 Excel 中的特定单元格范围内显示单元格左上角的绿色三角形。
IgnoredError 属性具有以下策略:
当复制或剪切行、列或单元格时, IgnoredError 属性不会更改。
当插入或删除行、列或单元格时,它将会移动或删除。
当复制或移动工作表时,属性将被复制或移动。
在获取 IgnoredError 时,将返回第一个 Range 区域的左上角单元格的 IgnoredError 属性。
GcExcel 支持忽略以下类型的错误:
错误类型 | 说明 |
---|---|
None | 不忽略任何错误。 |
InconsistentListFormula | 忽略在计算的列中的公式不一致的错误。 |
InconsistentFormula | 忽略范围内公式不一致的错误。 |
OmittedCells | 忽略包含引用省略了可包含的相邻单元格的范围的公式的单元格中的错误。 |
TextDate | 当公式包含将年份误解为错误世纪的文本格式单元格时,忽略错误。 |
EmptyCellReferences | 当公式引用空单元格时,忽略错误。 |
ListDataValidation | 忽略不符合数据验证规则的单元格值的错误,该规则限制数据为预定义列表中的项目。 |
EvaluateToError | 忽略公式结果的错误。 |
NumberAsText | 忽略包含以文本形式存储的数字或以撇号开头的单元格中的错误。 |
UnlockedFormulaCells | 忽略包含未锁定的公式的单元格中的错误。 |
All | 忽略所有类型的错误。 |
请参考以下示例代码,在指定范围内忽略所有类型的错误:
// Create a new workbook.
Workbook workbook = new Workbook();
// Add data object.
Object[][] data = new Object[][]{
{"Name", "City", "Birthday", "Eye color", "Weight", "Height"},
{"Richard", "New York", LocalDateTime.of(1968, 6, 8, 0, 0, 0), "Blue", "67", "165"},
{"Damon", "Washington", LocalDateTime.of(1986, 2, 2, 0, 0, 0), "Hazel", "76", "176"},
{"Angela", "Washington", LocalDateTime.of(1993, 2, 15, 0, 0, 0), "Brown", "68", "145"}
};
// No errors are ignored in this range.
IWorksheet worksheet = workbook.getWorksheets().get(0);
worksheet.getRange("A:F").setColumnWidth(15);
worksheet.getRange("A1:F1").merge();
worksheet.getRange("A1:F1").setValue("Range errors not ignored");
worksheet.getRange("A1:F1").getFont().setBold(true);
worksheet.getRange("A1:F1").setHorizontalAlignment(HorizontalAlignment.Center);
worksheet.getRange("A2:F5").setValue(data);
worksheet.getTables().add(worksheet.getRange("A2:F5"), true);
// Ignores all errors in this range.
worksheet.getRange("A7:F7").merge();
worksheet.getRange("A7:F7").setValue("Range errors ignored");
worksheet.getRange("A7:F7").getFont().setBold(true);
worksheet.getRange("A7:F7").setHorizontalAlignment(HorizontalAlignment.Center);
worksheet.getRange("A8:F11").setValue(data);
worksheet.getTables().add(worksheet.getRange("A8:F11"), true);
// Ignore error in range A8:F11.
worksheet.getRange("A8:F11").setIgnoredError(EnumSet.allOf(IgnoredErrorType.class));
// Save Excel file.
workbook.save("IgnoreRangeError.xlsx");