mirror of https://github.com/apache/poi.git
add R1C1 test
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1897667 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
2a25bcce1e
commit
893034c806
|
@ -491,11 +491,32 @@ public class CellReference implements GenericRecord {
|
||||||
* <tr><td>'O''Brien''s Sales'!A1' </td><td>Sheet name with special characters</td></tr>
|
* <tr><td>'O''Brien''s Sales'!A1' </td><td>Sheet name with special characters</td></tr>
|
||||||
* </table>
|
* </table>
|
||||||
* @return the text representation of this cell reference as it would appear in a formula.
|
* @return the text representation of this cell reference as it would appear in a formula.
|
||||||
|
* @see #formatAsString(boolean)
|
||||||
*/
|
*/
|
||||||
public String formatAsString() {
|
public String formatAsString() {
|
||||||
return formatAsString(true);
|
return formatAsString(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns a text representation of this cell reference in R1C1 format.
|
||||||
|
* <p>
|
||||||
|
* Example return values:
|
||||||
|
* <table>
|
||||||
|
* <caption>Example return values</caption>
|
||||||
|
* <tr><th>Result</th><th>Comment</th></tr>
|
||||||
|
* <tr><td>R1C1</td><td>Cell reference without sheet</td></tr>
|
||||||
|
* <tr><td>Sheet1!R1C1</td><td>Standard sheet name</td></tr>
|
||||||
|
* <tr><td>'O''Brien''s Sales'!R1C1' </td><td>Sheet name with special characters</td></tr>
|
||||||
|
* </table>
|
||||||
|
* @return the text representation of this cell reference as it would appear in a formula.
|
||||||
|
* @see #formatAsString()
|
||||||
|
* @see #formatAsR1C1String(boolean)
|
||||||
|
* @since POI 5.2.1
|
||||||
|
*/
|
||||||
|
public String formatAsR1C1String() {
|
||||||
|
return formatAsR1C1String(true);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns a text representation of this cell reference and allows to control
|
* Returns a text representation of this cell reference and allows to control
|
||||||
* if the sheetname is included in the reference.
|
* if the sheetname is included in the reference.
|
||||||
|
@ -512,6 +533,7 @@ public class CellReference implements GenericRecord {
|
||||||
* @param includeSheetName If true and there is a sheet name set for this cell reference,
|
* @param includeSheetName If true and there is a sheet name set for this cell reference,
|
||||||
* the reference is prefixed with the sheet name and '!'
|
* the reference is prefixed with the sheet name and '!'
|
||||||
* @return the text representation of this cell reference as it would appear in a formula.
|
* @return the text representation of this cell reference as it would appear in a formula.
|
||||||
|
* @see #formatAsString()
|
||||||
*/
|
*/
|
||||||
public String formatAsString(boolean includeSheetName) {
|
public String formatAsString(boolean includeSheetName) {
|
||||||
StringBuilder sb = new StringBuilder(32);
|
StringBuilder sb = new StringBuilder(32);
|
||||||
|
@ -523,6 +545,36 @@ public class CellReference implements GenericRecord {
|
||||||
return sb.toString();
|
return sb.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns a text representation of this cell reference in R1C1 format and allows to control
|
||||||
|
* if the sheetname is included in the reference.
|
||||||
|
*
|
||||||
|
* <p>
|
||||||
|
* Example return values:
|
||||||
|
* <table>
|
||||||
|
* <caption>Example return values</caption>
|
||||||
|
* <tr><th>Result</th><th>Comment</th></tr>
|
||||||
|
* <tr><td>R1C1</td><td>Cell reference without sheet</td></tr>
|
||||||
|
* <tr><td>Sheet1!R1C1</td><td>Standard sheet name</td></tr>
|
||||||
|
* <tr><td>'O''Brien''s Sales'!R1C1' </td><td>Sheet name with special characters</td></tr>
|
||||||
|
* </table>
|
||||||
|
* @param includeSheetName If true and there is a sheet name set for this cell reference,
|
||||||
|
* the reference is prefixed with the sheet name and '!'
|
||||||
|
* @return the text representation of this cell reference as it would appear in a formula.
|
||||||
|
* @see #formatAsString(boolean)
|
||||||
|
* @see #formatAsR1C1String()
|
||||||
|
* @since POI 5.2.1
|
||||||
|
*/
|
||||||
|
public String formatAsR1C1String(boolean includeSheetName) {
|
||||||
|
StringBuilder sb = new StringBuilder(32);
|
||||||
|
if(includeSheetName && _sheetName != null) {
|
||||||
|
SheetNameFormatter.appendFormat(sb, _sheetName);
|
||||||
|
sb.append(SHEET_NAME_DELIMITER);
|
||||||
|
}
|
||||||
|
appendR1C1CellReference(sb);
|
||||||
|
return sb.toString();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return getClass().getName() + " [" + formatAsString() + "]";
|
return getClass().getName() + " [" + formatAsString() + "]";
|
||||||
|
@ -564,6 +616,19 @@ public class CellReference implements GenericRecord {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Appends R1C1 cell reference with '$' markers for absolute values as required.
|
||||||
|
* Sheet name is not included.
|
||||||
|
*/
|
||||||
|
/* package */ void appendR1C1CellReference(StringBuilder sb) {
|
||||||
|
if (_rowIndex != -1) {
|
||||||
|
sb.append('R').append(_rowIndex+1);
|
||||||
|
}
|
||||||
|
if (_colIndex != -1) {
|
||||||
|
sb.append('C').append(_colIndex+1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Checks whether this cell reference is equal to another object.
|
* Checks whether this cell reference is equal to another object.
|
||||||
* <p>
|
* <p>
|
||||||
|
|
|
@ -97,6 +97,7 @@ final class TestAreaReference {
|
||||||
ar = new AreaReference("Tabelle1!B5:B5", SpreadsheetVersion.EXCEL97);
|
ar = new AreaReference("Tabelle1!B5:B5", SpreadsheetVersion.EXCEL97);
|
||||||
assertTrue(ar.isSingleCell());
|
assertTrue(ar.isSingleCell());
|
||||||
TestCellReference.confirmCell(ar.getFirstCell(), "Tabelle1", 4, 1, false, false, "Tabelle1!B5");
|
TestCellReference.confirmCell(ar.getFirstCell(), "Tabelle1", 4, 1, false, false, "Tabelle1!B5");
|
||||||
|
assertEquals("Tabelle1!R5C2", ar.getFirstCell().formatAsR1C1String(true));
|
||||||
|
|
||||||
assertEquals(1, ar.getAllReferencedCells().length);
|
assertEquals(1, ar.getAllReferencedCells().length);
|
||||||
|
|
||||||
|
|
|
@ -64,6 +64,8 @@ final class TestCellReference {
|
||||||
void testAbsRef1(){
|
void testAbsRef1(){
|
||||||
CellReference cf = new CellReference("$B$5");
|
CellReference cf = new CellReference("$B$5");
|
||||||
confirmCell(cf, null, 4, 1, true, true, "$B$5");
|
confirmCell(cf, null, 4, 1, true, true, "$B$5");
|
||||||
|
//absolute refs are not supported for R1C1 style
|
||||||
|
assertEquals("R5C2", cf.formatAsR1C1String());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|
Loading…
Reference in New Issue