KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > calipso > reportgenerator > reportmanager > ExcelSheetPosition


1 package com.calipso.reportgenerator.reportmanager;
2
3 import com.calipso.reportgenerator.common.InfoException;
4 import com.calipso.reportgenerator.common.LanguageTraslator;
5
6 /**
7  * Esta clase representa una posición en una planilla excel. Puede usarse para definir una direccion como C4 y traducirla
8  * a formato numerico fila / columna para ser usada con HSSF.
9  * User: jbassino
10  * Date: 28/10/2004
11  */

12 public class ExcelSheetPosition {
13
14   //private char[] columns = new char[] {'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'};
15
private static final String JavaDoc columns = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
16
17   private String JavaDoc columnName;
18   private int row;
19   private short column;
20
21   /**
22    * Este constructor recibe un string como E8 y lo parsea para obtener una posicion que represente una fila columna.
23    * @param position
24    * @throws InfoException
25    */

26   public ExcelSheetPosition(String JavaDoc position) throws InfoException{
27     if(position==null || position.equalsIgnoreCase("")){
28       throw new InfoException(LanguageTraslator.traslate("379"));
29     }
30     position = position.toUpperCase();
31     columnName = getLetters(position);
32     row = Integer.parseInt(getNumbers(position.substring(columnName.length())));
33     column = getIndexFor(columnName);
34   }
35
36   /**
37    * Este constructor recibe directamente como parametro la fila y columna, y no realiza ningún calculo.
38    * @param row
39    * @param column
40    */

41   public ExcelSheetPosition(int row, short column){
42     this.row = row;
43     this.column = column;
44   }
45
46   /**
47    * Recibe la columna por su nombre y la transforma a numero.
48    * @param columnName
49    * @param row
50    * @throws InfoException
51    */

52   public ExcelSheetPosition(String JavaDoc columnName, int row) throws InfoException {
53     this.row = row;
54     this.columnName = columnName;
55     this.column = getIndexFor(columnName);
56   }
57
58   /**
59    * Recibe un nombre de columna de 1 o 2 caracteres y obtiene la posicion que este representa en una hoja excel,
60    * empezando por A = 0.
61    * @param columnName
62    * @return
63    * @throws InfoException
64    */

65   private short getIndexFor(String JavaDoc columnName) throws InfoException {
66     if(columnName.length()==1){
67       return (short)columns.indexOf(columnName);
68     }else if(columnName.length()==2){
69       if(columns.indexOf(columnName.substring(0,1)) < 10){
70         return (short)(26*(columns.indexOf(columnName.substring(0,1)) + 1) + columns.indexOf(columnName.substring(1)));
71       }
72     }
73     throw new InfoException(LanguageTraslator.traslate("378") + columnName);
74   }
75
76   /**
77    * De un string obtiene la parte que son numeros. Ejemplo AB1024 retornara 1024.
78    * @param position
79    * @return
80    */

81   private String JavaDoc getNumbers(String JavaDoc position) {
82     StringBuffer JavaDoc buffer = new StringBuffer JavaDoc();
83     for(int i=0;i < position.length(); i++){
84       if(Character.isDigit(position.charAt(i))){
85         buffer.append(position.charAt(i));
86       }else{
87         break;
88       }
89     }
90     return buffer.toString();
91   }
92
93   /**
94    * De un string obtiene la primera parte con letras. Ejemplo AB1024 retorna AB
95    * @param position
96    * @return
97    */

98   private String JavaDoc getLetters(String JavaDoc position) {
99     StringBuffer JavaDoc buffer = new StringBuffer JavaDoc();
100     for(int i=0;i < position.length(); i++){
101       if(Character.isLetter(position.charAt(i))){
102         buffer.append(position.charAt(i));
103       }else{
104         break;
105       }
106     }
107     return buffer.toString();
108   }
109
110   public int getRow() {
111     return row;
112   }
113
114   public short getColumn() {
115     return column;
116   }
117
118   public void setRow(int row) {
119     this.row = row;
120   }
121
122   public void setColumn(short column) {
123     this.column = column;
124   }
125 }
126
Popular Tags