import java.io.FileOutputStream;
import java.io.IOException;
+import org.apache.poi.ss.SpreadsheetVersion;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.util.AreaReference;
import org.apache.poi.ss.util.CellReference;
table.addColumn();
// Set which area the table should be placed in
- AreaReference reference = new AreaReference(new CellReference(0, 0),
- new CellReference(2,2));
+ AreaReference reference = wb.getCreationHelper().createAreaReference(
+ new CellReference(0, 0), new CellReference(2, 2));
table.setCellReferences(reference);
// Save
import org.apache.poi.common.usermodel.HyperlinkType;
import org.apache.poi.hssf.record.common.ExtendedColor;
import org.apache.poi.ss.usermodel.CreationHelper;
+import org.apache.poi.ss.util.AreaReference;
+import org.apache.poi.ss.util.CellReference;
import org.apache.poi.util.Internal;
public class HSSFCreationHelper implements CreationHelper {
public HSSFClientAnchor createClientAnchor(){
return new HSSFClientAnchor();
}
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public AreaReference createAreaReference(String reference) {
+ return new AreaReference(reference, workbook.getSpreadsheetVersion());
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public AreaReference createAreaReference(CellReference topLeft, CellReference bottomRight) {
+ return new AreaReference(topLeft, bottomRight, workbook.getSpreadsheetVersion());
+ }
+
}
package org.apache.poi.hssf.util;
+import org.apache.poi.ss.SpreadsheetVersion;
+
/**
* @deprecated POI 3.15 beta 3. Use {@link org.apache.poi.ss.util.AreaReference} instead.
*/
* The area reference must be contiguous (i.e. represent a single rectangle, not a union of rectangles)
*/
public AreaReference(String reference) {
- super(reference);
+ super(reference, SpreadsheetVersion.EXCEL97);
}
/**
CellReference topLeft = new CellReference(actualStartRow, actualStartCol);
CellReference bottomRight = new CellReference(actualEndRow, actualEndCol);
SheetIdentifier sheetIden = new SheetIdentifier( null, new NameIdentifier(sheetName, true));
- Ptg ptg = _book.get3DReferencePtg(new AreaReference(topLeft, bottomRight), sheetIden);
+ Ptg ptg = _book.get3DReferencePtg(new AreaReference(topLeft, bottomRight, _ssVersion), sheetIden);
return new ParseNode(ptg);
}
if (part1.isColumn()) {
return AreaReference.getWholeColumn(_ssVersion, part1.getRep(), part2.getRep());
}
- return new AreaReference(part1.getCellReference(), part2.getCellReference());
+ return new AreaReference(part1.getCellReference(), part2.getCellReference(), _ssVersion);
}
/**
package org.apache.poi.ss.formula.ptg;
+import org.apache.poi.ss.SpreadsheetVersion;
import org.apache.poi.ss.formula.ExternSheetReferenceToken;
import org.apache.poi.ss.formula.FormulaRenderingWorkbook;
import org.apache.poi.ss.formula.WorkbookDependentFormula;
public Area3DPtg(String arearef, int externIdx) {
- super(new AreaReference(arearef));
+ super(new AreaReference(arearef, SpreadsheetVersion.EXCEL97));
setExternSheetIndex(externIdx);
}
package org.apache.poi.ss.formula.ptg;
+import org.apache.poi.ss.SpreadsheetVersion;
import org.apache.poi.ss.formula.SheetIdentifier;
import org.apache.poi.ss.formula.SheetNameFormatter;
import org.apache.poi.ss.formula.SheetRangeIdentifier;
private String lastSheetName;
public Area3DPxg(int externalWorkbookNumber, SheetIdentifier sheetName, String arearef) {
- this(externalWorkbookNumber, sheetName, new AreaReference(arearef));
+ this(externalWorkbookNumber, sheetName, new AreaReference(arearef, SpreadsheetVersion.EXCEL2007));
}
public Area3DPxg(int externalWorkbookNumber, SheetIdentifier sheetName, AreaReference arearef) {
super(arearef);
}
public Area3DPxg(SheetIdentifier sheetName, String arearef) {
- this(sheetName, new AreaReference(arearef));
+ this(sheetName, new AreaReference(arearef, SpreadsheetVersion.EXCEL2007));
}
public Area3DPxg(SheetIdentifier sheetName, AreaReference arearef) {
this(-1, sheetName, arearef);
package org.apache.poi.ss.formula.ptg;
+import org.apache.poi.ss.SpreadsheetVersion;
import org.apache.poi.ss.util.AreaReference;
import org.apache.poi.util.LittleEndianInput;
+import org.apache.poi.util.Removal;
/**
* Specifies a rectangular area of cells A1:A4 for instance.
public AreaPtg(int firstRow, int lastRow, int firstColumn, int lastColumn, boolean firstRowRelative, boolean lastRowRelative, boolean firstColRelative, boolean lastColRelative) {
super(firstRow, lastRow, firstColumn, lastColumn, firstRowRelative, lastRowRelative, firstColRelative, lastColRelative);
}
+
public AreaPtg(LittleEndianInput in) {
super(in);
}
- public AreaPtg(String arearef) {
- super(new AreaReference(arearef));
- }
- public AreaPtg(AreaReference areaRef) {
- super(areaRef);
- }
+
+ /**
+ * @deprecated use {@link #AreaPtg(<code>AreaReference</code>)} instead
+ */
+ @Deprecated()
+ @Removal(version="3.19")
+ public AreaPtg(String arearef) {
+ this(new AreaReference(arearef, SpreadsheetVersion.EXCEL97));
+ }
+
+ public AreaPtg(AreaReference arearef) {
+ super(arearef);
+ }
+
@Override
protected byte getSid() {
return sid;
CellReference botRight = new CellReference(getLastRow(),getLastColumn(),!isLastRowRelative(),!isLastColRelative());
if(AreaReference.isWholeColumnReference(SpreadsheetVersion.EXCEL97, topLeft, botRight)) {
- return (new AreaReference(topLeft, botRight)).formatAsString();
+ return (new AreaReference(topLeft, botRight, SpreadsheetVersion.EXCEL97)).formatAsString();
}
return topLeft.formatAsString() + ":" + botRight.formatAsString();
}
package org.apache.poi.ss.usermodel;
import org.apache.poi.common.usermodel.HyperlinkType;
+import org.apache.poi.ss.util.AreaReference;
+import org.apache.poi.ss.util.CellReference;
/**
* An object that handles instantiating concrete
* @see org.apache.poi.ss.usermodel.Drawing
*/
ClientAnchor createClientAnchor();
+
+ /**
+ * Creates an AreaReference.
+ *
+ * @param reference cell reference
+ * @return an AreaReference instance
+ */
+ AreaReference createAreaReference(String reference);
+
+ /**
+ * Creates an area ref from a pair of Cell References..
+ *
+ * @param topLeft cell reference
+ * @param bottomRight cell reference
+ * @return an AreaReference instance
+ */
+ AreaReference createAreaReference(CellReference topLeft, CellReference bottomRight);
+
}
import java.util.StringTokenizer;
import org.apache.poi.ss.SpreadsheetVersion;
+import org.apache.poi.util.Removal;
public class AreaReference {
private final CellReference _lastCell;
private final boolean _isSingleCell;
private final SpreadsheetVersion _version; // never null
-
- /**
- * @deprecated POI 3.13 beta 1. Prefer supplying a version.
- */
- @Deprecated
- public AreaReference(String reference) {
- this(reference, DEFAULT_SPREADSHEET_VERSION);
- // generateContiguous must be updated before this can be deleted.
- }
/**
* Create an area ref from a string representation. Sheet names containing special characters should be
/**
* Creates an area ref from a pair of Cell References.
+ * @deprecated use {@link #new AreaReference(<code>CellReference</code>, <code>CellReference</code>, <code>SpreadsheetVersion</code>)} instead
*/
+ @Deprecated
+ @Removal(version="3.19")
public AreaReference(CellReference topLeft, CellReference botRight) {
- _version = DEFAULT_SPREADSHEET_VERSION;
+ this(topLeft, botRight, DEFAULT_SPREADSHEET_VERSION);
+ }
+
+ /**
+ * Creates an area ref from a pair of Cell References.
+ */
+ public AreaReference(CellReference topLeft, CellReference botRight, SpreadsheetVersion version) {
+ _version = (null != version) ? version : DEFAULT_SPREADSHEET_VERSION;
boolean swapRows = topLeft.getRow() > botRight.getRow();
boolean swapCols = topLeft.getCol() > botRight.getCol();
if (swapRows || swapCols) {
* unbroken) area, or is it made up of
* several different parts?
* (If it is, you will need to call
- * {@link #generateContiguous(String)})
+ * {@link #generateContiguous(<code>SpreadsheetVersion</code>, String)})
*/
public static boolean isContiguous(String reference) {
// If there's a sheet name, strip it off
}
/**
- * Takes a non-contiguous area reference, and
- * returns an array of contiguous area references.
+ * Takes a non-contiguous area reference, and returns an array of contiguous area references
+ * @return an array of contiguous area references.
+ * @deprecated use {@link #generateContiguous(<code>SpreadsheetVersion</code>, String)} instead
*/
+ @Deprecated
+ @Removal(version="3.19")
public static AreaReference[] generateContiguous(String reference) {
+ return generateContiguous(DEFAULT_SPREADSHEET_VERSION, reference);
+ }
+
+ /**
+ * Takes a non-contiguous area reference, and returns an array of contiguous area references
+ * @return an array of contiguous area references.
+ */
+ public static AreaReference[] generateContiguous(SpreadsheetVersion version, String reference) {
+ if (null == version) {
+ version = DEFAULT_SPREADSHEET_VERSION; // how the code used to behave.
+ }
List<AreaReference> refs = new ArrayList<AreaReference>();
StringTokenizer st = new StringTokenizer(reference, ",");
while(st.hasMoreTokens()) {
refs.add(
- new AreaReference(st.nextToken())
+ new AreaReference(st.nextToken(), version)
);
}
return refs.toArray(new AreaReference[refs.size()]);
import org.apache.poi.ss.usermodel.DataFormat;
import org.apache.poi.ss.usermodel.ExtendedColor;
import org.apache.poi.ss.usermodel.Hyperlink;
+import org.apache.poi.ss.util.AreaReference;
+import org.apache.poi.ss.util.CellReference;
import org.apache.poi.util.Internal;
import org.apache.poi.util.POILogFactory;
import org.apache.poi.util.POILogger;
public ClientAnchor createClientAnchor() {
return helper.createClientAnchor();
}
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public AreaReference createAreaReference(String reference) {
+ return new AreaReference(reference, wb.getSpreadsheetVersion());
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public AreaReference createAreaReference(CellReference topLeft, CellReference bottomRight) {
+ return new AreaReference(topLeft, bottomRight, wb.getSpreadsheetVersion());
+ }
+
}
package org.apache.poi.xssf.usermodel;
import org.apache.poi.ss.usermodel.ClientAnchor;
+import org.apache.poi.ss.usermodel.ClientAnchor.AnchorType;
import org.apache.poi.util.Internal;
-import org.apache.poi.util.Removal;
import org.apache.poi.util.Units;
import org.openxmlformats.schemas.drawingml.x2006.main.CTPoint2D;
import org.openxmlformats.schemas.drawingml.x2006.main.CTPositiveSize2D;
import org.openxmlformats.schemas.drawingml.x2006.spreadsheetDrawing.CTMarker;
-import org.apache.poi.ss.usermodel.ClientAnchor.AnchorType;
/**
* A client anchor is attached to an excel worksheet. It anchors against:
import org.apache.poi.common.usermodel.HyperlinkType;
import org.apache.poi.ss.usermodel.CreationHelper;
import org.apache.poi.ss.usermodel.Hyperlink;
+import org.apache.poi.ss.util.AreaReference;
+import org.apache.poi.ss.util.CellReference;
import org.apache.poi.util.Internal;
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTColor;
public XSSFClientAnchor createClientAnchor() {
return new XSSFClientAnchor();
}
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public AreaReference createAreaReference(String reference) {
+ return new AreaReference(reference, workbook.getSpreadsheetVersion());
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public AreaReference createAreaReference(CellReference topLeft, CellReference bottomRight) {
+ return new AreaReference(topLeft, bottomRight, workbook.getSpreadsheetVersion());
+ }
}
for (XSSFTable table : sheet.getTables()) {
// TODO: case-sensitive?
if (name.equals(table.getName())) {
- return new AreaReference(table.getStartCellReference(), table.getEndCellReference());
+ return new AreaReference(table.getStartCellReference(), table.getEndCellReference(),
+ SpreadsheetVersion.EXCEL2007);
}
}
import org.apache.poi.POIXMLDocumentPart;
import org.apache.poi.openxml4j.opc.PackagePart;
+import org.apache.poi.ss.SpreadsheetVersion;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.CellType;
import org.apache.poi.ss.usermodel.DataConsolidateFunction;
protected void createSourceReferences(CellReference position, Sheet sourceSheet, PivotTableReferenceConfigurator refConfig){
//Get cell one to the right and one down from position, add both to AreaReference and set pivot table location.
- AreaReference destination = new AreaReference(position, new CellReference(position.getRow()+1, position.getCol()+1));
+ AreaReference destination = new AreaReference(position, new CellReference(
+ position.getRow()+1, position.getCol()+1), SpreadsheetVersion.EXCEL2007);
CTLocation location;
if(pivotTableDefinition.getLocation() == null) {
import org.apache.poi.POIXMLDocumentPart;
import org.apache.poi.openxml4j.opc.PackagePart;
+import org.apache.poi.ss.SpreadsheetVersion;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.DataFormatter;
import org.apache.poi.ss.usermodel.Table;
public AreaReference getCellReferences() {
return new AreaReference(
getStartCellReference(),
- getEndCellReference()
+ getEndCellReference(),
+ SpreadsheetVersion.EXCEL2007
);
}
/**
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
+import org.apache.poi.ss.SpreadsheetVersion;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.CellType;
import org.apache.poi.ss.usermodel.CellValue;
// update Table
final XSSFTable table = wb.getTable("\\_Prime.1");
- final AreaReference newArea = new AreaReference(table.getStartCellReference(), new CellReference(table.getEndRowIndex() + 1, table.getEndColIndex()));
+ final AreaReference newArea = wb.getCreationHelper().createAreaReference(
+ table.getStartCellReference(),
+ new CellReference(table.getEndRowIndex() + 1, table.getEndColIndex()));
String newAreaStr = newArea.formatAsString();
table.getCTTable().setRef(newAreaStr);
table.getCTTable().getAutoFilter().setRef(newAreaStr);
assertNotNull(original);
assertNotNull(offset);
- AreaReference source = new AreaReference("ORIGinal!A1:C2", _testDataProvider.getSpreadsheetVersion());
+ AreaReference source = wb.getCreationHelper().createAreaReference("ORIGinal!A1:C2");
// create a pivot table on the same sheet, case insensitive
original.createPivotTable(source, new CellReference("W1"));
// create a pivot table on a different sheet, case insensitive
import org.apache.poi.openxml4j.util.ZipSecureFile;
import org.apache.poi.poifs.filesystem.NPOIFSFileSystem;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;
-import org.apache.poi.ss.SpreadsheetVersion;
import org.apache.poi.ss.formula.WorkbookEvaluator;
import org.apache.poi.ss.formula.eval.ErrorEval;
import org.apache.poi.ss.formula.eval.NumberEval;
Name name = wb.getName("Intekon.ProdCodes");
assertEquals("'Abc,1'!$A$1:$A$2", name.getRefersToFormula());
- AreaReference ref = new AreaReference(name.getRefersToFormula(), SpreadsheetVersion.EXCEL2007);
+ AreaReference ref = wb.getCreationHelper().createAreaReference(name.getRefersToFormula());
assertEquals(0, ref.getFirstCell().getRow());
assertEquals(0, ref.getFirstCell().getCol());
assertEquals(1, ref.getLastCell().getRow());
package org.apache.poi.xssf.usermodel;
-import org.apache.poi.ss.SpreadsheetVersion;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.util.AreaReference;
Cell cell12 = row1.createCell(3);
cell12.setCellValue(12.12);
- AreaReference source = new AreaReference("A1:C2", SpreadsheetVersion.EXCEL2007);
+ AreaReference source = wb.getCreationHelper().createAreaReference("A1:C2");
pivotTable = sheet.createPivotTable(source, new CellReference("H5"));
XSSFSheet offsetSheet = wb.createSheet();
Cell tableCell_4_3 = tableRow_4.createCell(4);
tableCell_4_3.setCellValue(100);
- AreaReference offsetSource = new AreaReference(new CellReference("C2"), new CellReference("E4"));
+ AreaReference offsetSource = wb.getCreationHelper().createAreaReference(
+ new CellReference("C2"), new CellReference("E4"));
offsetPivotTable = offsetSheet.createPivotTable(offsetSource, new CellReference("C6"));
}
}
import org.apache.poi.hssf.HSSFTestDataSamples;
import org.apache.poi.poifs.crypt.CryptoFunctions;
import org.apache.poi.poifs.crypt.HashAlgorithm;
-import org.apache.poi.ss.SpreadsheetVersion;
import org.apache.poi.ss.usermodel.AutoFilter;
import org.apache.poi.ss.usermodel.BaseTestXSheet;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
-import org.apache.poi.ss.util.AreaReference;
import org.apache.poi.ss.util.CellAddress;
import org.apache.poi.ss.util.CellRangeAddress;
import org.apache.poi.ss.util.CellReference;
assertNotNull(wb);
assertNotNull(sheet);
- XSSFPivotTable pivotTable = sheet.createPivotTable(new AreaReference("A1:B2", SpreadsheetVersion.EXCEL2007), new CellReference("H5"));
+ XSSFPivotTable pivotTable = sheet.createPivotTable(wb.getCreationHelper().createAreaReference("A1:B2"),
+ new CellReference("H5"));
assertNotNull(pivotTable);
assertTrue(wb.getPivotTables().size() > 0);
- XSSFPivotTable pivotTable2 = sheet.createPivotTable(new AreaReference("A1:B2", SpreadsheetVersion.EXCEL2007), new CellReference("L5"), sheet);
+ XSSFPivotTable pivotTable2 = sheet.createPivotTable(wb.getCreationHelper().createAreaReference("A1:B2"),
+ new CellReference("L5"), sheet);
assertNotNull(pivotTable2);
assertTrue(wb.getPivotTables().size() > 1);
wb.close();
assertNotNull(wb);
assertNotNull(sheet);
- XSSFPivotTable pivotTable = sheet.createPivotTable(new AreaReference("A1:B2", SpreadsheetVersion.EXCEL2007), new CellReference("H5"));
+ XSSFPivotTable pivotTable = sheet.createPivotTable(wb.getCreationHelper().createAreaReference("A1:B2"), new CellReference("H5"));
assertNotNull(pivotTable);
assertTrue(wb.getPivotTables().size() > 0);
assertNotNull(wb);
XSSFSheet sheet2 = wb.createSheet();
- XSSFPivotTable pivotTable2 = sheet2.createPivotTable(new AreaReference("A1:B2", SpreadsheetVersion.EXCEL2007), new CellReference("H5"), sheet);
+ XSSFPivotTable pivotTable2 = sheet2.createPivotTable(wb.getCreationHelper().createAreaReference("A1:B2"),
+ new CellReference("H5"), sheet);
assertNotNull(pivotTable2);
assertTrue(wb.getPivotTables().size() > 1);
wb.close();
assertNotNull(wb);
assertNotNull(sheet);
- XSSFPivotTable pivotTable = sheet.createPivotTable(new AreaReference("A1:B2", SpreadsheetVersion.EXCEL2007), new CellReference("H5"));
+ XSSFPivotTable pivotTable = sheet.createPivotTable(wb.getCreationHelper().createAreaReference("A1:B2"), new CellReference("H5"));
assertNotNull(pivotTable);
assertTrue(wb.getPivotTables().size() > 0);
wb.close();
XSSFSheet sheet2 = wb.createSheet();
XSSFPivotTable pivotTable = sheet2.createPivotTable
- (new AreaReference("A1:B2", SpreadsheetVersion.EXCEL2007), new CellReference("H5"), sheet1);
+ (wb.getCreationHelper().createAreaReference("A1:B2"), new CellReference("H5"), sheet1);
assertEquals(0, pivotTable.getRowLabelColumns().size());
assertEquals(1, wb.getPivotTables().size());
XSSFSheet sheet2 = wb.createSheet("TEST");
XSSFPivotTable pivotTable = sheet2.createPivotTable(
- new AreaReference(sheet.getSheetName()+"!A$1:B$2", SpreadsheetVersion.EXCEL2007),
+ wb.getCreationHelper().createAreaReference(sheet.getSheetName()+"!A$1:B$2"),
new CellReference("H5"));
assertEquals(0, pivotTable.getRowLabelColumns().size());
wb.close();
XSSFSheet sheet2 = wb.createSheet("TEST");
sheet2.createPivotTable(
- new AreaReference(sheet.getSheetName()+"!A$1:B$2", SpreadsheetVersion.EXCEL2007),
+ wb.getCreationHelper().createAreaReference(sheet.getSheetName()+"!A$1:B$2"),
new CellReference("H5"),
sheet2);
wb.close();
import java.util.List;
import org.apache.poi.ss.usermodel.Cell;
-import org.apache.poi.ss.util.AreaReference;
import org.apache.poi.ss.util.CellReference;
+import org.apache.poi.util.IOUtils;
import org.apache.poi.util.TempFile;
import org.apache.poi.xssf.XSSFTestDataSamples;
import org.apache.poi.xssf.streaming.SXSSFWorkbook;
import org.junit.Test;
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTTable;
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTTableColumn;
-import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTTableColumns;
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTTableStyleInfo;
public final class TestXSSFTable {
assertEquals(new CellReference("C1"), table.getStartCellReference());
assertEquals(new CellReference("M3"), table.getEndCellReference());
-
+
+ IOUtils.closeQuietly(wb);
}
@Test
// update cell references to clear the cache
table.updateReferences();
assertEquals(11, table.getRowCount());
+
+ IOUtils.closeQuietly(wb);
}
@Test
t.addColumn();
t.addColumn();
t.addColumn();
- t.setCellReferences(new AreaReference(
+ t.setCellReferences(wb.getCreationHelper().createAreaReference(
new CellReference(c1), new CellReference(c6)
));
// Save and re-load
- wb = XSSFTestDataSamples.writeOutAndReadBack(wb);
- s = wb.getSheetAt(0);
+ XSSFWorkbook wb2 = XSSFTestDataSamples.writeOutAndReadBack(wb);
+ IOUtils.closeQuietly(wb);
+ s = wb2.getSheetAt(0);
// Check
assertEquals(1, s.getTables().size());
assertEquals("ABCD", t.getCTTable().getTableColumns().getTableColumnArray(2).getName());
// Done
- wb.close();
+ IOUtils.closeQuietly(wb2);
}
}
Cell cell9 = row3.createCell(2);
cell9.setCellValue("Bepa");
- AreaReference source = new AreaReference("A1:B2", SpreadsheetVersion.EXCEL2007);
+ AreaReference source = wb.getCreationHelper().createAreaReference("A1:B2");
sheet.createPivotTable(source, new CellReference("H5"));
}
import org.apache.poi.hssf.HSSFTestDataSamples;
import org.apache.poi.hssf.model.HSSFFormulaParser;
import org.apache.poi.hssf.record.NameRecord;
+import org.apache.poi.ss.SpreadsheetVersion;
import org.apache.poi.ss.formula.FormulaType;
import org.apache.poi.ss.formula.ptg.Ptg;
import org.apache.poi.ss.usermodel.BaseTestNamedRange;
workbook.close();
}
- @SuppressWarnings("deprecation")
@Test
public void testDeletedReference() throws Exception {
HSSFWorkbook wb = HSSFTestDataSamples.openSampleWorkbook("24207.xls");
HSSFName name1 = wb.getNameAt(0);
assertEquals("a", name1.getNameName());
assertEquals("Sheet1!$A$1", name1.getRefersToFormula());
- new AreaReference(name1.getRefersToFormula());
+ wb.getCreationHelper().createAreaReference(name1.getRefersToFormula());
assertTrue("Successfully constructed first reference", true);
HSSFName name2 = wb.getNameAt(1);
assertEquals("Sheet1!#REF!", name2.getRefersToFormula());
assertTrue(name2.isDeleted());
try {
- new AreaReference(name2.getRefersToFormula());
+ wb.getCreationHelper().createAreaReference(name2.getRefersToFormula());
fail("attempt to supply an invalid reference to AreaReference constructor results in exception");
} catch (IllegalArgumentException e) { // TODO - use a stronger typed exception for this condition
// expected during successful test
import org.apache.poi.hssf.model.HSSFFormulaParser;
import org.apache.poi.hssf.model.InternalWorkbook;
import org.apache.poi.hssf.record.NameRecord;
+import org.apache.poi.ss.SpreadsheetVersion;
import org.apache.poi.ss.formula.ptg.Area3DPtg;
import org.apache.poi.ss.formula.ptg.MemFuncPtg;
import org.apache.poi.ss.formula.ptg.Ptg;
import org.apache.poi.hssf.usermodel.TestHSSFWorkbook;
import org.apache.poi.ss.util.AreaReference;
import org.apache.poi.ss.util.CellReference;
-/**
- *
- */
+
public final class TestAreaReference extends TestCase {
public void testAreaRef1() {
- AreaReference ar = new AreaReference("$A$1:$B$2");
+ AreaReference ar = new AreaReference("$A$1:$B$2", SpreadsheetVersion.EXCEL97);
assertFalse("Two cells expected", ar.isSingleCell());
CellReference cf = ar.getFirstCell();
assertTrue("row is 4",cf.getRow()==0);
public void testReferenceWithSheet() {
AreaReference ar;
- ar = new AreaReference("Tabelle1!B5:B5");
+ ar = new AreaReference("Tabelle1!B5:B5", SpreadsheetVersion.EXCEL97);
assertTrue(ar.isSingleCell());
TestCellReference.confirmCell(ar.getFirstCell(), "Tabelle1", 4, 1, false, false, "Tabelle1!B5");
assertEquals(1, ar.getAllReferencedCells().length);
- ar = new AreaReference("Tabelle1!$B$5:$B$7");
+ ar = new AreaReference("Tabelle1!$B$5:$B$7", SpreadsheetVersion.EXCEL97);
assertFalse(ar.isSingleCell());
TestCellReference.confirmCell(ar.getFirstCell(), "Tabelle1", 4, 1, true, true, "Tabelle1!$B$5");
assertFalse(AreaReference.isContiguous(refDC3D));
// Check we can only create contiguous entries
- new AreaReference(refSimple);
- new AreaReference(ref2D);
+ new AreaReference(refSimple, SpreadsheetVersion.EXCEL97);
+ new AreaReference(ref2D, SpreadsheetVersion.EXCEL97);
try {
- new AreaReference(refDCSimple);
+ new AreaReference(refDCSimple, SpreadsheetVersion.EXCEL97);
fail();
} catch(IllegalArgumentException e) {
// expected during successful test
}
try {
- new AreaReference(refDC2D);
+ new AreaReference(refDC2D, SpreadsheetVersion.EXCEL97);
fail();
} catch(IllegalArgumentException e) {
// expected during successful test
}
try {
- new AreaReference(refDC3D);
+ new AreaReference(refDC3D, SpreadsheetVersion.EXCEL97);
fail();
} catch(IllegalArgumentException e) {
// expected during successful test
// Test that we split as expected
AreaReference[] refs;
- refs = AreaReference.generateContiguous(refSimple);
+ refs = AreaReference.generateContiguous(SpreadsheetVersion.EXCEL97, refSimple);
assertEquals(1, refs.length);
assertTrue(refs[0].isSingleCell());
assertEquals("$C$10", refs[0].formatAsString());
- refs = AreaReference.generateContiguous(ref2D);
+ refs = AreaReference.generateContiguous(SpreadsheetVersion.EXCEL97, ref2D);
assertEquals(1, refs.length);
assertFalse(refs[0].isSingleCell());
assertEquals("$C$10:$D$11", refs[0].formatAsString());
- refs = AreaReference.generateContiguous(refDCSimple);
+ refs = AreaReference.generateContiguous(SpreadsheetVersion.EXCEL97, refDCSimple);
assertEquals(3, refs.length);
assertTrue(refs[0].isSingleCell());
assertTrue(refs[1].isSingleCell());
assertEquals("$D$12", refs[1].formatAsString());
assertEquals("$E$14", refs[2].formatAsString());
- refs = AreaReference.generateContiguous(refDC2D);
+ refs = AreaReference.generateContiguous(SpreadsheetVersion.EXCEL97, refDC2D);
assertEquals(3, refs.length);
assertFalse(refs[0].isSingleCell());
assertTrue(refs[1].isSingleCell());
assertEquals("$D$12", refs[1].formatAsString());
assertEquals("$E$14:$E$20", refs[2].formatAsString());
- refs = AreaReference.generateContiguous(refDC3D);
+ refs = AreaReference.generateContiguous(SpreadsheetVersion.EXCEL97, refDC3D);
assertEquals(2, refs.length);
assertFalse(refs[0].isSingleCell());
assertFalse(refs[0].isSingleCell());
// Check the parsing of the reference into cells
assertFalse(AreaReference.isContiguous(aNamedCell.getRefersToFormula()));
- AreaReference[] arefs = AreaReference.generateContiguous(aNamedCell.getRefersToFormula());
+ AreaReference[] arefs = AreaReference.generateContiguous(SpreadsheetVersion.EXCEL97, aNamedCell.getRefersToFormula());
assertEquals(2, arefs.length);
assertEquals(refA, arefs[0].formatAsString());
assertEquals(refB, arefs[1].formatAsString());
public void testSpecialSheetNames() {
AreaReference ar;
- ar = new AreaReference("'Sheet A'!A1:A1");
+ ar = new AreaReference("'Sheet A'!A1:A1", SpreadsheetVersion.EXCEL97);
confirmAreaSheetName(ar, "Sheet A", "'Sheet A'!A1");
- ar = new AreaReference("'Hey! Look Here!'!A1:A1");
+ ar = new AreaReference("'Hey! Look Here!'!A1:A1", SpreadsheetVersion.EXCEL97);
confirmAreaSheetName(ar, "Hey! Look Here!", "'Hey! Look Here!'!A1");
- ar = new AreaReference("'O''Toole'!A1:B2");
+ ar = new AreaReference("'O''Toole'!A1:B2", SpreadsheetVersion.EXCEL97);
confirmAreaSheetName(ar, "O'Toole", "'O''Toole'!A1:B2");
- ar = new AreaReference("'one:many'!A1:B2");
+ ar = new AreaReference("'one:many'!A1:B2", SpreadsheetVersion.EXCEL97);
confirmAreaSheetName(ar, "one:many", "'one:many'!A1:B2");
}
confirmWholeColumnRef("$C:D", 2, 3, true, false);
confirmWholeColumnRef("AD:$AE", 29, 30, false, true);
}
+
+ @SuppressWarnings("deprecation")
+ public void testDeprecatedMethod() {
+ String refSimple = "$C$10:$C$10";
+ AreaReference[] arefs1 = AreaReference.generateContiguous(SpreadsheetVersion.EXCEL97, refSimple);
+ AreaReference[] arefs2 = AreaReference.generateContiguous(refSimple);
+ assertEquals(1, arefs1.length);
+ assertEquals(arefs1.length, arefs2.length);
+ assertEquals(arefs1[0].formatAsString(), arefs2[0].formatAsString());
+ }
private static void confirmWholeColumnRef(String ref, int firstCol, int lastCol, boolean firstIsAbs, boolean lastIsAbs) {
- AreaReference ar = new AreaReference(ref);
+ AreaReference ar = new AreaReference(ref, SpreadsheetVersion.EXCEL97);
confirmCell(ar.getFirstCell(), 0, firstCol, true, firstIsAbs);
confirmCell(ar.getLastCell(), 0xFFFF, lastCol, true, lastIsAbs);
}
import junit.framework.AssertionFailedError;
import junit.framework.TestCase;
+import java.util.Arrays;
+import java.util.List;
+
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFFormulaEvaluator;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
+import org.apache.poi.ss.SpreadsheetVersion;
import org.apache.poi.ss.formula.TwoDEval;
import org.apache.poi.ss.formula.ptg.AreaI;
import org.apache.poi.ss.formula.ptg.AreaI.OffsetArea;
createRefEval(refA),
createRefEval(refB),
};
- @SuppressWarnings("deprecation")
- AreaReference ar = new AreaReference(expectedAreaRef);
- ValueEval result = EvalInstances.Range.evaluate(args, 0, (short)0);
- assertTrue(result instanceof AreaEval);
- AreaEval ae = (AreaEval) result;
- assertEquals(ar.getFirstCell().getRow(), ae.getFirstRow());
- assertEquals(ar.getLastCell().getRow(), ae.getLastRow());
- assertEquals(ar.getFirstCell().getCol(), ae.getFirstColumn());
- assertEquals(ar.getLastCell().getCol(), ae.getLastColumn());
+ List<SpreadsheetVersion> versions = Arrays.asList(new SpreadsheetVersion[] {SpreadsheetVersion.EXCEL97, SpreadsheetVersion.EXCEL2007});
+ for(SpreadsheetVersion version : versions) {
+ AreaReference ar = new AreaReference(expectedAreaRef, version);
+ ValueEval result = EvalInstances.Range.evaluate(args, 0, (short)0);
+ assertTrue(result instanceof AreaEval);
+ AreaEval ae = (AreaEval) result;
+ assertEquals(ar.getFirstCell().getRow(), ae.getFirstRow());
+ assertEquals(ar.getLastCell().getRow(), ae.getLastRow());
+ assertEquals(ar.getFirstCell().getCol(), ae.getFirstColumn());
+ assertEquals(ar.getLastCell().getCol(), ae.getLastColumn());
+ }
}
private static ValueEval createRefEval(String refStr) {
assertNotNull(aNamedCell);
// retrieve the cell at the named range and test its contents
- @SuppressWarnings("deprecation")
- AreaReference aref = new AreaReference(aNamedCell.getRefersToFormula());
+ AreaReference aref = wb.getCreationHelper().createAreaReference(aNamedCell.getRefersToFormula());
assertTrue("Should be exactly 1 cell in the named cell :'" +cellName+"'", aref.isSingleCell());
CellReference cref = aref.getFirstCell();
Cell c = r.getCell(cref.getCol());
String contents = c.getRichStringCellValue().getString();
assertEquals("Contents of cell retrieved by its named reference", contents, cellValue);
-
wb.close();
}
assertEquals(SpreadsheetVersion.EXCEL2007.getLastColumnIndex(), newStyle.getLastCell().getCol());
assertEquals(1, newStyle.getLastCell().getRow());
}
-
- @SuppressWarnings("deprecation") // deliberate test for behaviour if deprecated constructor used.
- public void testFallbackToExcel97IfVersionNotSupplied() {
- assertTrue(new AreaReference("A:B").isWholeColumnReference());
- assertTrue(AreaReference.isWholeColumnReference(null, new CellReference("A$1"), new CellReference("A$" + SpreadsheetVersion.EXCEL97.getMaxRows())));
- }
}