1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
| /**
* Retourne une cellule depuis son libellé.
* <br>Le libellé remplace la référence d'une case.
* @param classeur Classeur Excel dans lequel s'effectue la recherche.
* @param libelleCellule libellé de la cellule demandée.
* @return HSSFCell, null si la case n'existe pas.
* @see fr.laposte.intra.fi.sesame.util.PoiTools#getCellule(HSSFWorkbook , int , String ).
*/
public static HSSFCell getCellule(HSSFWorkbook classeur, String libelleCellule) {
HSSFCell cellule = null;
String motifReference = "([A-Z][A-Z]?)([1-9][0-9]*)";
String motif = "[A-Z]+([A-Z]|[0-9])*";
if(libelleCellule.matches(motif) && !libelleCellule.matches(motifReference)) {
try {
HSSFName nomCellule = classeur.getNameAt(classeur.getNameIndex(libelleCellule));
String referenceCellule = nomCellule.getReference();
String nomFeuille = nomCellule.getSheetName();
referenceCellule = referenceCellule.substring(referenceCellule.indexOf('$')+1);
String [] coordonnees = referenceCellule.split("\\$");
CellReference cellReference = new CellReference(coordonnees[0]+coordonnees[1]);
HSSFRow row = classeur.getSheet(nomFeuille).getRow(cellReference.getRow());
cellule = row.getCell(cellReference.getCol());
} catch (Exception e) {
e.printStackTrace();
}
}
return cellule;
} // getCellule
/**
* Retourne une cellule depuis sa référence.
* <br>Une référence correspond aux coordonnées de la case (i.e. A10, BF2).
* @param classeur Classeur Excel dans lequel s'effectue la recherche.
* @param feuille Feuille dans laquelle s'effectue la recherche.
* @param referenceCellule Référence de la cellule recherchée.
* @return HSSFCell, null si la case n'existe pas.
* @see fr.laposte.intra.fi.sesame.util.PoiTools#getCellule(HSSFWorkbook , String )
*/
public static HSSFCell getCellule(HSSFWorkbook classeur, int feuille, String referenceCellule) {
HSSFCell cellule = null;
String motif = "([A-Z][A-Z]?)([1-9][0-9]*)";
if(referenceCellule.matches(motif)) {
try {
String coordonnees[] = {"", ""};
int i = -1;
while(++i < referenceCellule.length()) {
char c = referenceCellule.charAt(i);
if(c >= 65 && c <= 122) {
coordonnees[0] += c;
c = referenceCellule.charAt(i);
} else if(c >= 48 && c <= 57) {
coordonnees[1] += c;
c = referenceCellule.charAt(i);
}
}
CellReference cellReference = new CellReference(coordonnees[0] + coordonnees[1]);
HSSFRow row = classeur.getSheetAt(feuille).getRow(cellReference.getRow());
cellule = row.getCell(cellReference.getCol());
} catch (Exception e) {
e.printStackTrace();
}
}
return cellule;
} // getCellule |
Partager