* for a sheet, stored as part of a Shared Feature. It can be found in
* records such as {@link FeatRecord}.
* For the full meanings of the flags, see pages 669 and 670
- * of the Excel binary file format documentation.
+ * of the Excel binary file format documentation and/or
+ * https://msdn.microsoft.com/en-us/library/dd924991%28v=office.12%29.aspx
*/
public final class FeatFormulaErr2 implements SharedFeature {
static BitField checkCalculationErrors =
package org.apache.poi.ss.usermodel;
-
/**
* Types of ignored workbook and worksheet error.
*
- * TODO Give more details on what these mean
+ * TODO Implement these for HSSF too, using FeatFormulaErr2,
+ * see bugzilla bug #46136 for details
*/
public enum IgnoredErrorType {
-
+ /**
+ * ????. Probably XSSF-only.
+ */
CALCULATED_COLUMN,
+ /**
+ * Whether to check for references to empty cells.
+ * HSSF + XSSF.
+ */
EMPTY_CELL_REFERENCE,
+ /**
+ * Whether to check for calculation/evaluation errors.
+ * HSSF + XSSF.
+ */
EVALUATION_ERROR,
+ /**
+ * Whether to check formulas in the range of the shared feature
+ * that are inconsistent with formulas in neighbouring cells.
+ * HSSF + XSSF.
+ */
FORMULA,
+ /**
+ * Whether to check formulas in the range of the shared feature
+ * with references to less than the entirety of a range containing
+ * continuous data.
+ * HSSF + XSSF.
+ */
FORMULA_RANGE,
+ /**
+ * ????. Is this XSSF-specific the same as performDataValidation
+ * in HSSF?
+ */
LIST_DATA_VALIDATION,
+ /**
+ * Whether to check the format of string values and warn
+ * if they look to actually be numeric values.
+ * HSSF + XSSF.
+ */
NUMBER_STORED_AS_TEXT,
+ /**
+ * ????. Is this XSSF-specific the same as checkDateTimeFormats
+ * in HSSF?
+ */
TWO_DIGIT_TEXT_YEAR,
+ /**
+ * Whether to check for unprotected formulas.
+ * HSSF + XSSF.
+ */
UNLOCKED_FORMULA;
}
Map<IgnoredErrorType, Set<CellRangeAddress>> result = new LinkedHashMap<IgnoredErrorType, Set<CellRangeAddress>>();
if (worksheet.isSetIgnoredErrors()) {
for (CTIgnoredError err : worksheet.getIgnoredErrors().getIgnoredErrorList()) {
- for (IgnoredErrorType errType : getErrorTypes(err)) {
+ for (IgnoredErrorType errType : XSSFIgnoredErrorHelper.getErrorTypes(err)) {
if (!result.containsKey(errType)) {
result.put(errType, new LinkedHashSet<CellRangeAddress>());
}
private void addIgnoredErrors(String ref, IgnoredErrorType... ignoredErrorTypes) {
CTIgnoredErrors ctIgnoredErrors = worksheet.isSetIgnoredErrors() ? worksheet.getIgnoredErrors() : worksheet.addNewIgnoredErrors();
CTIgnoredError ctIgnoredError = ctIgnoredErrors.addNewIgnoredError();
- ctIgnoredError.setSqref(Arrays.asList(ref));
- for (IgnoredErrorType errType : ignoredErrorTypes) {
- XSSFIgnoredErrorHelper.set(errType, ctIgnoredError);
- }
+ XSSFIgnoredErrorHelper.addIgnoredErrors(ctIgnoredError, ref, ignoredErrorTypes);
}
-
- private Set<IgnoredErrorType> getErrorTypes(CTIgnoredError err) {
- Set<IgnoredErrorType> result = new LinkedHashSet<IgnoredErrorType>();
- for (IgnoredErrorType errType : IgnoredErrorType.values()) {
- if (XSSFIgnoredErrorHelper.isSet(errType, err)) {
- result.add(errType);
- }
- }
- return result;
- }
-
}
package org.apache.poi.xssf.usermodel.helpers;
-import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTIgnoredError;
+import java.util.Arrays;
+import java.util.LinkedHashSet;
+import java.util.Set;
+
import org.apache.poi.ss.usermodel.IgnoredErrorType;
+import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTIgnoredError;
/**
* XSSF-specific code for working with ignored errors
throw new IllegalStateException();
}
}
+
+ public static void addIgnoredErrors(CTIgnoredError err, String ref, IgnoredErrorType... ignoredErrorTypes) {
+ err.setSqref(Arrays.asList(ref));
+ for (IgnoredErrorType errType : ignoredErrorTypes) {
+ XSSFIgnoredErrorHelper.set(errType, err);
+ }
+ }
+
+ public static Set<IgnoredErrorType> getErrorTypes(CTIgnoredError err) {
+ Set<IgnoredErrorType> result = new LinkedHashSet<IgnoredErrorType>();
+ for (IgnoredErrorType errType : IgnoredErrorType.values()) {
+ if (XSSFIgnoredErrorHelper.isSet(errType, err)) {
+ result.add(errType);
+ }
+ }
+ return result;
+ }
}
import org.apache.poi.ss.usermodel.CellCopyPolicy;
import org.apache.poi.ss.usermodel.ClientAnchor;
import org.apache.poi.ss.usermodel.FormulaError;
+import org.apache.poi.ss.usermodel.IgnoredErrorType;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;