Author: fanningpj
Date: Fri Feb 4 20:29:55 2022
New Revision: 1897780
URL: http://svn.apache.org/viewvc?rev=1897780&view=rev
Log:
introduce CellReferenceType
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=1897780&r1=1897779&r2=1897780&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:29:55 2022
@@ -1362,7 +1362,7 @@ public class SXSSFWorkbook implements Wo
}
@Override
- public void setUseR1C1CellReferences(boolean useR1C1CellReferences) {
- getXSSFWorkbook().setUseR1C1CellReferences(useR1C1CellReferences);
+ public void setCellReferenceType(CellReferenceType cellReferenceType) {
+ getXSSFWorkbook().setCellReferenceType(cellReferenceType);
}
}
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=1897780&r1=1897779&r2=1897780&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:29:55 2022
@@ -1565,11 +1565,17 @@ public class XSSFWorkbook extends POIXML
}
@Override
- public void setUseR1C1CellReferences(boolean useR1C1CellReferences) {
+ public void setCellReferenceType(CellReferenceType cellReferenceType) {
CTCalcPr calcPr = getCTWorkbook().getCalcPr();
- if (calcPr == null) calcPr = getCTWorkbook().addNewCalcPr();
- STRefMode.Enum refMode = useR1C1CellReferences ? R_1_C_1 : A_1;
- calcPr.setRefMode(refMode);
+ if (cellReferenceType == CellReferenceType.UNKNOWN) {
+ if (calcPr != null) {
+ calcPr.unsetRefMode();
+ }
+ } else {
+ if (calcPr == null) calcPr = getCTWorkbook().addNewCalcPr();
+ STRefMode.Enum refMode = cellReferenceType ==
CellReferenceType.R1C1 ? R_1_C_1 : A_1;
+ calcPr.setRefMode(refMode);
+ }
}
private static String getReferencePrintArea(String sheetName, int startC,
int endC, int startR, int endR) {
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=1897780&r1=1897779&r2=1897780&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:29:55 2022
@@ -1373,7 +1373,7 @@ public final class TestXSSFWorkbook exte
XSSFWorkbook wb = openSampleWorkbook("WithTable.xlsx")
) {
assertEquals(CellReferenceType.A1, wb.getCellReferenceType());
- wb.setUseR1C1CellReferences(true);
+ wb.setCellReferenceType(CellReferenceType.R1C1);
assertEquals(CellReferenceType.R1C1, wb.getCellReferenceType());
wb.write(bos);
try (XSSFWorkbook wb2 = new XSSFWorkbook(bos.toInputStream())) {
@@ -1389,7 +1389,7 @@ public final class TestXSSFWorkbook exte
XSSFWorkbook wb = new XSSFWorkbook()
) {
assertEquals(CellReferenceType.UNKNOWN, wb.getCellReferenceType());
- wb.setUseR1C1CellReferences(true);
+ wb.setCellReferenceType(CellReferenceType.R1C1);
assertEquals(CellReferenceType.R1C1, wb.getCellReferenceType());
wb.write(bos);
try (XSSFWorkbook wb2 = new XSSFWorkbook(bos.toInputStream())) {
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=1897780&r1=1897779&r2=1897780&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:29:55 2022
@@ -1757,7 +1757,10 @@ public final class HSSFWorkbook extends
RefModeRecord refModeRecord = null;
for (RecordBase record : records) {
- if (record instanceof RefModeRecord) refModeRecord =
(RefModeRecord)record;
+ if (record instanceof RefModeRecord) {
+ refModeRecord = (RefModeRecord)record;
+ break;
+ }
}
if (refModeRecord == null) {
continue;
@@ -1771,17 +1774,17 @@ public final class HSSFWorkbook extends
}
/**
- * Configure workbook to use R1C1 cell references (as opposed to A1 cell
references).
+ * Configure workbook to a specific cell reference type, e.g. R1C1 cell
references (as opposed to A1 cell references).
* <p>
* Note that HSSF format stores this information at sheet level - so
if the workbook has no sheets,
* this call will have no effect. It is recommended that you call this
(possibly again) just before
* writing HSSFWorkbook.
* </p>
- * @param useR1C1CellReferences set to true if you want to configure
workbook to use R1C1 cell references (as opposed to A1 cell references).
+ * @param cellReferenceType the type of cell references used
* @since POI 5.2.1
*/
@Override
- public void setUseR1C1CellReferences(boolean useR1C1CellReferences) {
+ public void setCellReferenceType(CellReferenceType cellReferenceType) {
for (HSSFSheet hssfSheet : _sheets) {
InternalSheet internalSheet = hssfSheet.getSheet();
@@ -1790,20 +1793,27 @@ public final class HSSFWorkbook extends
RefModeRecord refModeRecord = null;
for (RecordBase record : records) {
- if (record instanceof RefModeRecord) refModeRecord =
(RefModeRecord)record;
+ if (record instanceof RefModeRecord) {
+ refModeRecord = (RefModeRecord)record;
+ break;
+ }
}
- if (useR1C1CellReferences) {
+ if (cellReferenceType == CellReferenceType.R1C1) {
if (refModeRecord == null) {
refModeRecord = new RefModeRecord();
records.add(records.size() - 1, refModeRecord);
}
refModeRecord.setMode(RefModeRecord.USE_R1C1_MODE);
- } else {
+ } else if (cellReferenceType == CellReferenceType.A1) {
if (refModeRecord == null) {
refModeRecord = new RefModeRecord();
records.add(records.size() - 1, refModeRecord);
}
refModeRecord.setMode(RefModeRecord.USE_A1_MODE);
+ } else {
+ if (refModeRecord != null) {
+ records.remove(refModeRecord);
+ }
}
}
}
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=1897780&r1=1897779&r2=1897780&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:29:55 2022
@@ -639,8 +639,8 @@ public interface Workbook extends Closea
CellReferenceType getCellReferenceType();
/**
- * @param useR1C1CellReferences set to true if you want to configure
workbook to use R1C1 cell references (as opposed to A1 cell references).
+ * @param cellReferenceType the type of cell references used
* @since POI 5.2.1
*/
- void setUseR1C1CellReferences(boolean useR1C1CellReferences);
+ void setCellReferenceType(CellReferenceType cellReferenceType);
}
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=1897780&r1=1897779&r2=1897780&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:29:55 2022
@@ -1186,7 +1186,7 @@ public final class TestHSSFWorkbook exte
HSSFWorkbook wb = openSampleWorkbook("49423.xls")
) {
assertEquals(CellReferenceType.A1, wb.getCellReferenceType());
- wb.setUseR1C1CellReferences(true);
+ wb.setCellReferenceType(CellReferenceType.R1C1);
assertEquals(CellReferenceType.R1C1, wb.getCellReferenceType());
wb.write(bos);
try (HSSFWorkbook wb2 = new HSSFWorkbook(bos.toInputStream())) {
@@ -1204,7 +1204,7 @@ public final class TestHSSFWorkbook exte
assertEquals(CellReferenceType.UNKNOWN, wb.getCellReferenceType());
HSSFSheet sheet = wb.createSheet();
assertEquals(CellReferenceType.A1, wb.getCellReferenceType());
- wb.setUseR1C1CellReferences(true);
+ wb.setCellReferenceType(CellReferenceType.R1C1);
assertEquals(CellReferenceType.R1C1, wb.getCellReferenceType());
wb.write(bos);
try (HSSFWorkbook wb2 = new HSSFWorkbook(bos.toInputStream())) {
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]