]> source.dussan.org Git - poi.git/commitdiff
Add details of the ignored errors where the HSSF spec provides a good description...
authorNick Burch <nick@apache.org>
Mon, 15 Feb 2016 14:58:16 +0000 (14:58 +0000)
committerNick Burch <nick@apache.org>
Mon, 15 Feb 2016 14:58:16 +0000 (14:58 +0000)
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1730543 13f79535-47bb-0310-9956-ffa450edef68

src/java/org/apache/poi/hssf/record/common/FeatFormulaErr2.java
src/java/org/apache/poi/ss/usermodel/IgnoredErrorType.java
src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java
src/ooxml/java/org/apache/poi/xssf/usermodel/helpers/XSSFIgnoredErrorHelper.java
src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFSheet.java

index b3a9a96ad4e8ddafda02dfa6d4b02321699e2357..866c311fcf441bf14928c2debe7cc9952bced16c 100644 (file)
@@ -32,7 +32,8 @@ import org.apache.poi.util.LittleEndianOutput;
  *  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 =
index 183fe29f299791ca362912ad7e0036d1004a96d5..9939ec1cd7ec121c131b76a9be79e7d7798bcf65 100644 (file)
 
 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;
 }
index 40d765a1da0b898a18e2d4ec0e7b41bb14caacf9..ee83e78c698067aa64fc5627efc0ce71f6d37eb9 100644 (file)
@@ -4133,7 +4133,7 @@ public class XSSFSheet extends POIXMLDocumentPart implements Sheet {
         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>());
                     }
@@ -4149,20 +4149,6 @@ public class XSSFSheet extends POIXMLDocumentPart implements Sheet {
     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;
-    }
-    
 }
index 4911a3532d964bef298111dd39957b778ef25fd6..d0dc0b7606966d1a898ceb85e9415b1406b54b21 100644 (file)
 
 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
@@ -82,4 +86,21 @@ public class XSSFIgnoredErrorHelper {
             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;
+    }
 }
index 158cc75018d1c5cea13daf119d81fea2b04cc6e3..f5ad27c8157fc86aaf01b7de4b00e16cba34fbf9 100644 (file)
@@ -49,6 +49,7 @@ import org.apache.poi.ss.usermodel.Cell;
 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;