added class to support reference conversion A1 = 0,0 B1 = 0,1
git-svn-id: https://svn.apache.org/repos/asf/jakarta/poi/trunk@352531 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
16d78b324c
commit
2dfd98f5a4
80
src/java/org/apache/poi/hssf/util/ReferenceUtil.java
Normal file
80
src/java/org/apache/poi/hssf/util/ReferenceUtil.java
Normal file
@ -0,0 +1,80 @@
|
|||||||
|
/*
|
||||||
|
* ReferenceUtil.java
|
||||||
|
*
|
||||||
|
* Created on April 28, 2002, 1:09 PM
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.apache.poi.hssf.util;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Handles conversion between A1= 0,0 (cell ref to numeric conversion)
|
||||||
|
* @author Andrew C. Oliver (acoliver at apache dot org)
|
||||||
|
*/
|
||||||
|
public class ReferenceUtil {
|
||||||
|
|
||||||
|
/** You don't neeed to construct this */
|
||||||
|
private ReferenceUtil() {
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* takes in a cell reference string A1 for instance and returns an integer
|
||||||
|
* array with the first element being the row number and the second being
|
||||||
|
* the column number, all in 0-based base 10 format.
|
||||||
|
*
|
||||||
|
* @return xyarray row and column number
|
||||||
|
*/
|
||||||
|
public static int[] getXYFromReference(String reference) {
|
||||||
|
int[] retval = new int[2];
|
||||||
|
String[] parts = seperateRowColumns(reference);
|
||||||
|
retval[1] = convertColStringToNum(parts[0]);
|
||||||
|
retval[0] = Integer.parseInt(parts[1]);
|
||||||
|
return retval;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* takes in a column reference portion of a CellRef and converts it from
|
||||||
|
* ALPHA-26 number format to 0-based base 10.
|
||||||
|
*/
|
||||||
|
private static int convertColStringToNum(String ref) {
|
||||||
|
int len = ref.length();
|
||||||
|
int retval=0;
|
||||||
|
int pos = 0;
|
||||||
|
for (int k = ref.length()-1; k > -1; k--) {
|
||||||
|
char thechar = ref.charAt(k);
|
||||||
|
if ( pos == 0) {
|
||||||
|
retval += (Character.getNumericValue(thechar)-9);
|
||||||
|
} else {
|
||||||
|
retval += (Character.getNumericValue(thechar)-9) * (pos * 26);
|
||||||
|
}
|
||||||
|
pos++;
|
||||||
|
//System.out.println(val);
|
||||||
|
}
|
||||||
|
return retval-1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Seperates the row from the columns and returns an array. Element in
|
||||||
|
* position one is the substring containing the columns still in ALPHA-26
|
||||||
|
* number format.
|
||||||
|
*/
|
||||||
|
private static String[] seperateRowColumns(String reference) {
|
||||||
|
int loc = 0; // location of first number
|
||||||
|
String retval[] = new String[2];
|
||||||
|
int length = reference.length();
|
||||||
|
|
||||||
|
char[] chars = reference.toCharArray();
|
||||||
|
|
||||||
|
for (loc = 0; loc < chars.length; loc++) {
|
||||||
|
if (Character.isDigit(chars[loc])) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
retval[0] = reference.substring(0,loc);
|
||||||
|
retval[1] = reference.substring(loc);
|
||||||
|
System.out.println("PART1=="+retval[1]);
|
||||||
|
return retval;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user