[POI] Récupérer un ensemble de valeurs dans plusieurs colonnes
Bonjour,
J'aimerai faire un traitement qui me parait complexe à faire avec POI.
Je souhaiterai au parcours de mon documents:
prendre les cellules de la colonne 0 commencant par Agent (avec un startWith)
Si avant l'autre cellule comportant Agent, il y'a dans la colonne 4 (de toutes lignes entre le 1er "Agent" et le 2ème "Agent") écrit "validation" {(c'est que je je n'arrive pas à faire !)
Je sais pas si c'est faisable car j'arrive pas à faire ce traitement!
Voici ce que je fais pour le moment:
Code:
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 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102
|
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.ObjectInputStream.GetField;
import java.text.ParseException;
import java.util.Iterator;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.DateUtil;
import org.apache.poi.ss.usermodel.Row;
public class Extraction {
public static void main(String[] args) throws ParseException {
// Colonne du fichier
String chaine; //pour récupérer les Agents
long occurence; // pour récupérer les valeur des validations
int valid = 0; // pour compter le nombre de validation de chaque agent
int n_l_valid = 0; // pour récupérer la ligne de chaque validation
int width = 10;
int height = 10;
String monTableau[][]= new String[width][height];
boolean b;
//int compteur = 0;
HSSFCell valid_recupere;
int x = 0, y = 0;
try {
POIFSFileSystem fs = new POIFSFileSystem(new FileInputStream("extract.xls"));
HSSFWorkbook wb = new HSSFWorkbook(fs);
HSSFSheet sheet = wb.getSheetAt(0);
HSSFRow row = null;
HSSFCell cell = null;
int n = 0;
int i = 0;//compte le nombre d'agent
int k = 0;
// System.out.println("ligne N°| Valeur");
for (Iterator rowIt = sheet.rowIterator(); rowIt.hasNext();){
row = (HSSFRow) rowIt.next();
// n pour savoir le numéro de la ligne en cours
n++;
//System.out.println("n : "+ n);// pour avoir le numéro de chaque ligne lue
if(row.getCell(0) != null){//si les lignes de la colonne 1 ne sont pas null
if(row.getCell(0).getStringCellValue().startsWith("Agent")){// et si on apercoit "Agent"
chaine=row.getCell(0).getStringCellValue();
System.out.println(chaine); //on affiche la ligne de la colonne 1
System.out.println("i: "+i);
monTableau[0][i] = chaine;
i++;
}
}
if(row.getCell(1) != null){// si les lignes de la colonne 2 ne sont pas null
if(row.getCell(1).getStringCellValue().startsWith("Validation")){// et si on apercoit "validation"
chaine=row.getCell(1).getStringCellValue();
valid++; //on incrémente notre compteur valid
n_l_valid = n; // on récupère le numéro de ligne de la Validation
//System.out.println(chaine);
//System.out.println("Numéro de la validation: "+valid);
//System.out.println("numéro de la ligne de la validation: "+n_l_valid);
n_l_valid--;
valid_recupere=sheet.getRow(n_l_valid).getCell(4);
System.out.println("Validation: "+valid_recupere);
//monTableau[][]=n;
if(valid_recupere.CELL_TYPE_NUMERIC==0){
monTableau[1][k] = Integer.toString((int) valid_recupere.getNumericCellValue());
}else{
//monTableau[0][k] = valid_recupere.getStringCellValue();
}
k++;
}
}
}//fin du for
for(String sousTab[] : monTableau)
{
x = 0;
for(String str : sousTab)
{
if(monTableau[x][y]!=null){
//System.out.println("La valeur de la nouvelle boucle est : " + str);
System.out.println("La valeur du tableau à l'indice [" + x + "][" +y +"] est : " + monTableau[x][y] + "\n");
}
x++;
}
y++;
}
//System.out.println("total: " + compteur);
} catch (FileNotFoundException e){
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
} |
J'espère m' être fais comprendre...
Si quelqu'un à une solution ...?
Merci :calim2: