Author: fanningpj
Date: Fri Feb 4 20:16:44 2022
New Revision: 1897779
URL: http://svn.apache.org/viewvc?rev=1897779&view=rev
Log:
introduce CellReferenceType
Added:
poi/trunk/poi/src/main/java/org/apache/poi/ss/usermodel/CellReferenceType.java
- copied, changed from r1897726,
poi/trunk/poi/src/main/java/org/apache/poi/ss/usermodel/IgnoredErrorType.java
Modified:
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/streaming/SXSSFWorkbook.java
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFWorkbook.java
poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xssf/usermodel/TestXSSFWorkbook.java
poi/trunk/poi/src/main/java/org/apache/poi/hssf/usermodel/HSSFWorkbook.java
poi/trunk/poi/src/main/java/org/apache/poi/ss/usermodel/Workbook.java
poi/trunk/poi/src/test/java/org/apache/poi/hssf/usermodel/TestHSSFWorkbook.java
Modified:
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/streaming/SXSSFWorkbook.java
URL:
http://svn.apache.org/viewvc/poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/streaming/SXSSFWorkbook.java?rev=1897779&r1=1897778&r2=1897779&view=diff
==============================================================================
---
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/streaming/SXSSFWorkbook.java
(original)
+++
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/streaming/SXSSFWorkbook.java
Fri Feb 4 20:16:44 2022
@@ -50,6 +50,7 @@ import org.apache.poi.openxml4j.util.Zip
import org.apache.poi.ss.SpreadsheetVersion;
import org.apache.poi.ss.formula.EvaluationWorkbook;
import org.apache.poi.ss.formula.udf.UDFFinder;
+import org.apache.poi.ss.usermodel.CellReferenceType;
import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.CreationHelper;
import org.apache.poi.ss.usermodel.DataFormat;
@@ -1356,8 +1357,8 @@ public class SXSSFWorkbook implements Wo
}
@Override
- public Boolean usesR1C1CellReferences() {
- return getXSSFWorkbook().usesR1C1CellReferences();
+ public CellReferenceType getCellReferenceType() {
+ return getXSSFWorkbook().getCellReferenceType();
}
@Override
Modified:
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFWorkbook.java
URL:
http://svn.apache.org/viewvc/poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFWorkbook.java?rev=1897779&r1=1897778&r2=1897779&view=diff
==============================================================================
---
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFWorkbook.java
(original)
+++
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFWorkbook.java
Fri Feb 4 20:16:44 2022
@@ -71,6 +71,7 @@ import org.apache.poi.ss.formula.SheetNa
import org.apache.poi.ss.formula.udf.AggregatingUDFFinder;
import org.apache.poi.ss.formula.udf.IndexedUDFFinder;
import org.apache.poi.ss.formula.udf.UDFFinder;
+import org.apache.poi.ss.usermodel.CellReferenceType;
import org.apache.poi.ss.usermodel.DataFormat;
import org.apache.poi.ss.usermodel.Date1904Support;
import org.apache.poi.ss.usermodel.Name;
@@ -1551,16 +1552,16 @@ public class XSSFWorkbook extends POIXML
}
@Override
- public Boolean usesR1C1CellReferences() {
+ public CellReferenceType getCellReferenceType() {
final CTCalcPr calcPr = getCTWorkbook().getCalcPr();
if (calcPr == null) {
- return null;
+ return CellReferenceType.UNKNOWN;
} else if (calcPr.getRefMode() == R_1_C_1) {
- return Boolean.TRUE;
+ return CellReferenceType.R1C1;
} else if (calcPr.getRefMode() == A_1) {
- return Boolean.FALSE;
+ return CellReferenceType.A1;
}
- return null;
+ return CellReferenceType.UNKNOWN;
}
@Override
Modified:
poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xssf/usermodel/TestXSSFWorkbook.java
URL:
http://svn.apache.org/viewvc/poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xssf/usermodel/TestXSSFWorkbook.java?rev=1897779&r1=1897778&r2=1897779&view=diff
==============================================================================
---
poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xssf/usermodel/TestXSSFWorkbook.java
(original)
+++
poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xssf/usermodel/TestXSSFWorkbook.java
Fri Feb 4 20:16:44 2022
@@ -17,38 +17,38 @@
package org.apache.poi.xssf.usermodel;
-import static org.apache.commons.io.output.NullOutputStream.NULL_OUTPUT_STREAM;
-import static org.apache.poi.hssf.HSSFTestDataSamples.openSampleFileStream;
-import static org.apache.poi.xssf.XSSFTestDataSamples.*;
-import static org.junit.jupiter.api.Assertions.assertArrayEquals;
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertFalse;
-import static org.junit.jupiter.api.Assertions.assertNotNull;
-import static org.junit.jupiter.api.Assertions.assertNull;
-import static org.junit.jupiter.api.Assertions.assertSame;
-import static org.junit.jupiter.api.Assertions.assertThrows;
-import static org.junit.jupiter.api.Assertions.assertTrue;
-
-import java.io.*;
-import java.nio.charset.StandardCharsets;
-import java.util.Date;
-import java.util.Iterator;
-import java.util.List;
-import java.util.zip.CRC32;
-
import org.apache.commons.io.output.UnsynchronizedByteArrayOutputStream;
import org.apache.poi.POIDataSamples;
import org.apache.poi.hssf.HSSFTestDataSamples;
import org.apache.poi.ooxml.POIXMLProperties;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
-import org.apache.poi.openxml4j.opc.*;
+import org.apache.poi.openxml4j.opc.ContentTypes;
+import org.apache.poi.openxml4j.opc.OPCPackage;
+import org.apache.poi.openxml4j.opc.PackageAccess;
+import org.apache.poi.openxml4j.opc.PackagePart;
+import org.apache.poi.openxml4j.opc.PackagePartName;
+import org.apache.poi.openxml4j.opc.PackageRelationship;
+import org.apache.poi.openxml4j.opc.PackageRelationshipCollection;
+import org.apache.poi.openxml4j.opc.PackagingURIHelper;
+import org.apache.poi.openxml4j.opc.ZipPackage;
import org.apache.poi.openxml4j.opc.internal.FileHelper;
import org.apache.poi.openxml4j.opc.internal.MemoryPackagePart;
import org.apache.poi.openxml4j.opc.internal.PackagePropertiesPart;
import org.apache.poi.openxml4j.util.ZipInputStreamZipEntrySource;
import org.apache.poi.ss.tests.usermodel.BaseTestXWorkbook;
-import org.apache.poi.ss.usermodel.*;
+import org.apache.poi.ss.usermodel.Cell;
+import org.apache.poi.ss.usermodel.CellReferenceType;
+import org.apache.poi.ss.usermodel.CellStyle;
+import org.apache.poi.ss.usermodel.Comment;
+import org.apache.poi.ss.usermodel.DataFormatter;
+import org.apache.poi.ss.usermodel.Font;
+import org.apache.poi.ss.usermodel.FormulaError;
+import org.apache.poi.ss.usermodel.RichTextString;
+import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Row.MissingCellPolicy;
+import org.apache.poi.ss.usermodel.Sheet;
+import org.apache.poi.ss.usermodel.Workbook;
+import org.apache.poi.ss.usermodel.WorkbookFactory;
import org.apache.poi.ss.util.AreaReference;
import org.apache.poi.ss.util.CellAddress;
import org.apache.poi.ss.util.CellReference;
@@ -68,6 +68,31 @@ import org.openxmlformats.schemas.spread
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTWorkbookPr;
import org.openxmlformats.schemas.spreadsheetml.x2006.main.STCalcMode;
+import java.io.ByteArrayInputStream;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.nio.charset.StandardCharsets;
+import java.util.Date;
+import java.util.Iterator;
+import java.util.List;
+import java.util.zip.CRC32;
+
+import static org.apache.commons.io.output.NullOutputStream.NULL_OUTPUT_STREAM;
+import static org.apache.poi.hssf.HSSFTestDataSamples.openSampleFileStream;
+import static org.apache.poi.xssf.XSSFTestDataSamples.openSampleWorkbook;
+import static org.apache.poi.xssf.XSSFTestDataSamples.writeOut;
+import static org.apache.poi.xssf.XSSFTestDataSamples.writeOutAndReadBack;
+import static org.junit.jupiter.api.Assertions.assertArrayEquals;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertNull;
+import static org.junit.jupiter.api.Assertions.assertSame;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
public final class TestXSSFWorkbook extends BaseTestXWorkbook {
public TestXSSFWorkbook() {
@@ -1347,12 +1372,12 @@ public final class TestXSSFWorkbook exte
UnsynchronizedByteArrayOutputStream bos = new
UnsynchronizedByteArrayOutputStream();
XSSFWorkbook wb = openSampleWorkbook("WithTable.xlsx")
) {
- assertFalse(wb.usesR1C1CellReferences());
+ assertEquals(CellReferenceType.A1, wb.getCellReferenceType());
wb.setUseR1C1CellReferences(true);
- assertTrue(wb.usesR1C1CellReferences());
+ assertEquals(CellReferenceType.R1C1, wb.getCellReferenceType());
wb.write(bos);
try (XSSFWorkbook wb2 = new XSSFWorkbook(bos.toInputStream())) {
- assertTrue(wb2.usesR1C1CellReferences());
+ assertEquals(CellReferenceType.R1C1,
wb2.getCellReferenceType());
}
}
}
@@ -1363,12 +1388,12 @@ public final class TestXSSFWorkbook exte
UnsynchronizedByteArrayOutputStream bos = new
UnsynchronizedByteArrayOutputStream();
XSSFWorkbook wb = new XSSFWorkbook()
) {
- assertNull(wb.usesR1C1CellReferences());
+ assertEquals(CellReferenceType.UNKNOWN, wb.getCellReferenceType());
wb.setUseR1C1CellReferences(true);
- assertTrue(wb.usesR1C1CellReferences());
+ assertEquals(CellReferenceType.R1C1, wb.getCellReferenceType());
wb.write(bos);
try (XSSFWorkbook wb2 = new XSSFWorkbook(bos.toInputStream())) {
- assertTrue(wb2.usesR1C1CellReferences());
+ assertEquals(CellReferenceType.R1C1,
wb2.getCellReferenceType());
}
}
}
Modified:
poi/trunk/poi/src/main/java/org/apache/poi/hssf/usermodel/HSSFWorkbook.java
URL:
http://svn.apache.org/viewvc/poi/trunk/poi/src/main/java/org/apache/poi/hssf/usermodel/HSSFWorkbook.java?rev=1897779&r1=1897778&r2=1897779&view=diff
==============================================================================
--- poi/trunk/poi/src/main/java/org/apache/poi/hssf/usermodel/HSSFWorkbook.java
(original)
+++ poi/trunk/poi/src/main/java/org/apache/poi/hssf/usermodel/HSSFWorkbook.java
Fri Feb 4 20:16:44 2022
@@ -96,6 +96,7 @@ import org.apache.poi.ss.formula.SheetNa
import org.apache.poi.ss.formula.udf.AggregatingUDFFinder;
import org.apache.poi.ss.formula.udf.IndexedUDFFinder;
import org.apache.poi.ss.formula.udf.UDFFinder;
+import org.apache.poi.ss.usermodel.CellReferenceType;
import org.apache.poi.ss.usermodel.Name;
import org.apache.poi.ss.usermodel.Row.MissingCellPolicy;
import org.apache.poi.ss.usermodel.Sheet;
@@ -1748,7 +1749,7 @@ public final class HSSFWorkbook extends
}
@Override
- public Boolean usesR1C1CellReferences() {
+ public CellReferenceType getCellReferenceType() {
for (HSSFSheet hssfSheet : _sheets) {
InternalSheet internalSheet = hssfSheet.getSheet();
@@ -1759,14 +1760,14 @@ public final class HSSFWorkbook extends
if (record instanceof RefModeRecord) refModeRecord =
(RefModeRecord)record;
}
if (refModeRecord == null) {
- return null;
+ continue;
} else if (refModeRecord.getMode() == RefModeRecord.USE_R1C1_MODE)
{
- return Boolean.TRUE;
+ return CellReferenceType.R1C1;
} else if (refModeRecord.getMode() == RefModeRecord.USE_A1_MODE) {
- return Boolean.FALSE;
+ return CellReferenceType.A1;
}
}
- return null;
+ return CellReferenceType.UNKNOWN;
}
/**
Copied:
poi/trunk/poi/src/main/java/org/apache/poi/ss/usermodel/CellReferenceType.java
(from r1897726,
poi/trunk/poi/src/main/java/org/apache/poi/ss/usermodel/IgnoredErrorType.java)
URL:
http://svn.apache.org/viewvc/poi/trunk/poi/src/main/java/org/apache/poi/ss/usermodel/CellReferenceType.java?p2=poi/trunk/poi/src/main/java/org/apache/poi/ss/usermodel/CellReferenceType.java&p1=poi/trunk/poi/src/main/java/org/apache/poi/ss/usermodel/IgnoredErrorType.java&r1=1897726&r2=1897779&rev=1897779&view=diff
==============================================================================
---
poi/trunk/poi/src/main/java/org/apache/poi/ss/usermodel/IgnoredErrorType.java
(original)
+++
poi/trunk/poi/src/main/java/org/apache/poi/ss/usermodel/CellReferenceType.java
Fri Feb 4 20:16:44 2022
@@ -18,66 +18,23 @@
package org.apache.poi.ss.usermodel;
/**
- * Types of ignored workbook and worksheet error.
- *
- * TODO Implement these for HSSF too, using FeatFormulaErr2,
- * see bugzilla bug #46136 for details
+ * Types of cell references.
+ * @since POI 5.2.1
*/
-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,
-
+public enum CellReferenceType {
+
/**
- * Whether to check the format of string values and warn
- * if they look to actually be numeric values.
- * HSSF + XSSF.
+ * Cells are referenced in the form A1, B4, etc.
*/
- NUMBER_STORED_AS_TEXT,
+ A1,
/**
- * ????. Is this XSSF-specific the same as checkDateTimeFormats
- * in HSSF?
+ * Cells are referenced in the form R1C1, R4C2, etc.
*/
- TWO_DIGIT_TEXT_YEAR,
+ R1C1,
/**
- * Whether to check for unprotected formulas.
- * HSSF + XSSF.
+ * The cell reference type is not defined explicitly by <code>A1</code> is
the default in this case.
*/
- UNLOCKED_FORMULA
+ UNKNOWN
}
Modified: poi/trunk/poi/src/main/java/org/apache/poi/ss/usermodel/Workbook.java
URL:
http://svn.apache.org/viewvc/poi/trunk/poi/src/main/java/org/apache/poi/ss/usermodel/Workbook.java?rev=1897779&r1=1897778&r2=1897779&view=diff
==============================================================================
--- poi/trunk/poi/src/main/java/org/apache/poi/ss/usermodel/Workbook.java
(original)
+++ poi/trunk/poi/src/main/java/org/apache/poi/ss/usermodel/Workbook.java Fri
Feb 4 20:16:44 2022
@@ -633,11 +633,10 @@ public interface Workbook extends Closea
EvaluationWorkbook createEvaluationWorkbook();
/**
- * @return true if workbook is configured to use R1C1 cell references (as
opposed to A1 cell references).
- * Returns null if the configuration is not explicitly set on the workbook.
+ * @return the type of cell references used
* @since POI 5.2.1
*/
- Boolean usesR1C1CellReferences();
+ CellReferenceType getCellReferenceType();
/**
* @param useR1C1CellReferences set to true if you want to configure
workbook to use R1C1 cell references (as opposed to A1 cell references).
Modified:
poi/trunk/poi/src/test/java/org/apache/poi/hssf/usermodel/TestHSSFWorkbook.java
URL:
http://svn.apache.org/viewvc/poi/trunk/poi/src/test/java/org/apache/poi/hssf/usermodel/TestHSSFWorkbook.java?rev=1897779&r1=1897778&r2=1897779&view=diff
==============================================================================
---
poi/trunk/poi/src/test/java/org/apache/poi/hssf/usermodel/TestHSSFWorkbook.java
(original)
+++
poi/trunk/poi/src/test/java/org/apache/poi/hssf/usermodel/TestHSSFWorkbook.java
Fri Feb 4 20:16:44 2022
@@ -61,6 +61,7 @@ import org.apache.poi.poifs.filesystem.P
import org.apache.poi.ss.formula.ptg.Area3DPtg;
import org.apache.poi.ss.usermodel.BaseTestWorkbook;
import org.apache.poi.ss.usermodel.Cell;
+import org.apache.poi.ss.usermodel.CellReferenceType;
import org.apache.poi.ss.usermodel.ConditionalFormatting;
import org.apache.poi.ss.usermodel.ConditionalFormattingRule;
import org.apache.poi.ss.usermodel.Name;
@@ -1184,12 +1185,12 @@ public final class TestHSSFWorkbook exte
UnsynchronizedByteArrayOutputStream bos = new
UnsynchronizedByteArrayOutputStream();
HSSFWorkbook wb = openSampleWorkbook("49423.xls")
) {
- assertFalse(wb.usesR1C1CellReferences());
+ assertEquals(CellReferenceType.A1, wb.getCellReferenceType());
wb.setUseR1C1CellReferences(true);
- assertTrue(wb.usesR1C1CellReferences());
+ assertEquals(CellReferenceType.R1C1, wb.getCellReferenceType());
wb.write(bos);
try (HSSFWorkbook wb2 = new HSSFWorkbook(bos.toInputStream())) {
- assertTrue(wb2.usesR1C1CellReferences());
+ assertEquals(CellReferenceType.R1C1,
wb2.getCellReferenceType());
}
}
}
@@ -1200,14 +1201,14 @@ public final class TestHSSFWorkbook exte
UnsynchronizedByteArrayOutputStream bos = new
UnsynchronizedByteArrayOutputStream();
HSSFWorkbook wb = new HSSFWorkbook()
) {
- assertNull(wb.usesR1C1CellReferences());
+ assertEquals(CellReferenceType.UNKNOWN, wb.getCellReferenceType());
HSSFSheet sheet = wb.createSheet();
- assertFalse(wb.usesR1C1CellReferences());
+ assertEquals(CellReferenceType.A1, wb.getCellReferenceType());
wb.setUseR1C1CellReferences(true);
- assertTrue(wb.usesR1C1CellReferences());
+ assertEquals(CellReferenceType.R1C1, wb.getCellReferenceType());
wb.write(bos);
try (HSSFWorkbook wb2 = new HSSFWorkbook(bos.toInputStream())) {
- assertTrue(wb2.usesR1C1CellReferences());
+ assertEquals(CellReferenceType.R1C1,
wb2.getCellReferenceType());
}
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]