A helper to transform between excel cell references and
sheet:column:row notation
Because this function will be called when generating a string
representation of a formula, the cell reference will merely
be appened to the string buffer instead of returning a full
blooded string, for performance reasons
| Method from jxl.biff.CellReferenceHelper Detail: |
public static String getCellReference(int column,
int row) {
StringBuffer buf = new StringBuffer();
getCellReference(column, row, buf);
return buf.toString();
}
Gets the cell reference for the specified column and row |
public static void getCellReference(int column,
int row,
StringBuffer buf) {
// Put the column letter into the buffer
getColumnReference(column, buf);
// Add the row into the buffer
buf.append(Integer.toString(row+1));
}
|
public static String getCellReference(int sheet,
int column,
int row,
ExternalSheet workbook) {
StringBuffer sb = new StringBuffer();
getCellReference(sheet, column, row, workbook, sb);
return sb.toString();
}
Gets the fully qualified cell reference given the column, row
external sheet reference etc |
public static void getCellReference(int column,
boolean colabs,
int row,
boolean rowabs,
StringBuffer buf) {
if (colabs)
{
buf.append(fixedInd);
}
// Put the column letter into the buffer
getColumnReference(column, buf);
if (rowabs)
{
buf.append(fixedInd);
}
// Add the row into the buffer
buf.append(Integer.toString(row+1));
}
Overloaded method which prepends $ for absolute reference |
public static void getCellReference(int sheet,
int column,
int row,
ExternalSheet workbook,
StringBuffer buf) {
// buf.append('\''); - quotes now added by WorkbookParser
String name = workbook.getExternalSheetName(sheet);
buf.append(StringHelper.replace(name, "\'", "\'\'"));
// buf.append('\'');
buf.append(sheetInd);
getCellReference(column, row, buf);
}
Gets the fully qualified cell reference given the column, row
external sheet reference etc |
public static void getCellReference(int sheet,
int column,
boolean colabs,
int row,
boolean rowabs,
ExternalSheet workbook,
StringBuffer buf) {
// WorkbookParser now appends quotes and escapes apostrophes
String name = workbook.getExternalSheetName(sheet);
buf.append(name);
buf.append(sheetInd);
getCellReference(column, colabs, row, rowabs, buf);
}
Gets the fully qualified cell reference given the column, row
external sheet reference etc |
public static int getColumn(String s) {
int colnum = 0;
int numindex = getNumberIndex(s);
String s2 = s.toUpperCase();
int startPos = s.lastIndexOf(sheetInd) + 1;
if (s.charAt(startPos) == fixedInd)
{
startPos++;
}
int endPos = numindex;
if (s.charAt(numindex - 1) == fixedInd)
{
endPos--;
}
for (int i = startPos; i < endPos ; i++)
{
if (i != startPos)
{
colnum = (colnum+1) * 26;
}
colnum += (int) s2.charAt(i) - (int) 'A";
}
return colnum;
}
Gets the columnn number of the string cell reference |
public static String getColumnReference(int column) {
StringBuffer buf = new StringBuffer();
getColumnReference(column, buf);
return buf.toString();
}
Gets the column letter corresponding to the 0-based column number |
public static void getColumnReference(int column,
StringBuffer buf) {
int v = column/26;
int r = column%26;
StringBuffer tmp = new StringBuffer();
while (v != 0)
{
char col = (char) ('A" + r) ;
tmp.append(col);
r = v%26 - 1; // subtract one because only rows >26 preceded by A
v = v/26;
}
char col = (char) ('A" + r) ;
tmp.append(col);
// Insert into the proper string buffer in reverse order
for (int i = tmp.length() - 1; i >= 0; i--)
{
buf.append(tmp.charAt(i));
}
}
Gets the column letter corresponding to the 0-based column number |
public static int getRow(String s) {
try
{
return (Integer.parseInt(s.substring(getNumberIndex(s))) - 1);
}
catch (NumberFormatException e)
{
logger.warn(e, e);
return 0xffff;
}
}
Gets the row number of the cell reference |
public static String getSheet(String ref) {
int sheetPos = ref.lastIndexOf(sheetInd);
if (sheetPos == -1)
{
return "";
}
return ref.substring(0, sheetPos);
}
Gets the sheet name from the cell reference string |
public static boolean isColumnRelative(String s) {
return s.charAt(0) != fixedInd;
}
Sees if the column component is relative or not |
public static boolean isRowRelative(String s) {
return s.charAt(getNumberIndex(s) - 1) != fixedInd;
}
Sees if the row component is relative or not |