IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

API standards et tierces Java Discussion :

[POI]: Tester si un fichier est vide


Sujet :

API standards et tierces Java

  1. #1
    Membre averti Avatar de mouss4rs
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    884
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 884
    Points : 355
    Points
    355
    Par défaut [POI]: Tester si un fichier est vide
    Bonjour,

    J'aimerai savoir comment faire pour tester si un fichier est vide.
    J'utilise la dernière version de POI.

    Voici ce que je fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    if(date_stockee_trouvee==false){
    						//retrouver la dernière ligne du fichier pour y ecrire la date
    							System.out.println("retrouver la dernière ligne du fichier: "+dernLigneTrouvee);
    							//pour crée la date ds le fichier 
    							//et pour la retrouver et eviter de rajouter la validation d'un extract comportant la même date
    													celld = rowd.createCell(0);
    						    celld.setCellValue(date_extract);
    }
    En effet, j'ai un NullPointerException à cette ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    celld = rowd.createCell(0);
    En faite, je veux juste faire ceci:

    Si le fichier ne contient rien
    écrire à la 1ère ligne
    finsi

  2. #2
    Membre actif Avatar de amadoulamine1
    Inscrit en
    Avril 2005
    Messages
    260
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 260
    Points : 270
    Points
    270
    Par défaut
    salut, avant de creer la cellule fait dabord un sheet.createRow() because, avant que la cellule ne soit vide, c'est la ligne qui est vide!

  3. #3
    Membre averti Avatar de mouss4rs
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    884
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 884
    Points : 355
    Points
    355
    Par défaut
    Voilà, je fais ce que tu m'as dit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    sheetd.createRow(0);
    							celld = rowd.createCell(0);
    						    celld.setCellValue(date_extract);
    Maintenant, j'ai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Exception in thread "main" java.lang.RuntimeException: Unexpected missing row when some rows already present
    	at org.apache.poi.hssf.usermodel.HSSFSheet.setPropertiesFromSheet(HSSFSheet.java:174)
    	at org.apache.poi.hssf.usermodel.HSSFSheet.<init>(HSSFSheet.java:121)
    	at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:275)
    	at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:188)
    	at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:305)
    	at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:286)
    	at Extraction.main(Extraction.java:91)
    Je suis en train de chercher si j'ai pas fit de bétises.
    Voici ce que je fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
     
    for (Iterator rowIt = sheet.rowIterator(); rowIt.hasNext();){
    				row = (HSSFRow) rowIt.next();
    				Agent a = new Agent();
    				n++;// pour avoir le numéro de chaque ligne lue
     
    				if(row.getRowNum() == 6 && row.getCell(0) != null){//pour obtenir la date de l'extract et déterminer sa semaine dans l'année.
    					date_extract = row.getCell(0).getStringCellValue().substring(3,13);//on récupère la date
    					System.out.println("date_extract: "+date_extract);
     
    					//faire une vérification pour savoir:
    					//si la date du fichier n'est pas trouvée sur
    					istr = new FileInputStream("C:/Donnees/Aide_Manager/date_extract1.xls");
    					wbd = new HSSFWorkbook(istr);
    					sheetd = wbd.getSheetAt(0);
    					rowd = null;
    					celld = null;
    					date_extract="24/01/2012";
    					boolean date_stockee_trouvee = false;
    					int dernLigneTrouvee = 0;
    					for (Iterator r = sheetd.rowIterator(); r.hasNext();){
    						rowd = (HSSFRow) r.next();
    						celld = rowd.getCell(0);
    						//System.out.println("lalalalalala");
    						if(celld != null ){
    							if(celld.getCellType()==0){
    							System.out.println("c'est un nombre: "+celld.getNumericCellValue());
    							}else{
    								System.out.println("c'est une chaine: "+celld.getStringCellValue());
    								if(celld.getStringCellValue().equals(date_extract)){// si on trouve que la date_extract est = à la date trouvée dans le fichier
    									System.out.println("DATE TROUVEE Ds le fichier !");
    									System.out.println("CETTE EXTRACT A DEJA ETE UTILISEE !!");
    									System.out.println("MERCI D'UTILISER UN AUTRE EXTRACT CONCERNANT UNE AUTRE DATE !");
    									date_stockee_trouvee=true;
    								}
    							}
    							dernLigneTrouvee = rowd.getCell(0).getRowIndex();
     
    						}
     
    					}
    					dernLigneTrouvee++;
    					System.out.println("dernLigneTrouvee: "+dernLigneTrouvee);
    					//si la date n'est pas trouvée dans le fichier
    					System.out.println("date_stockee_trouvee: "+date_stockee_trouvee);
    					if(date_stockee_trouvee==false){
    						//retrouver la dernière ligne du fichier pour y ecrire la date
    							System.out.println("retrouver la dernière ligne du fichier: "+dernLigneTrouvee);
    							//pour crée la date ds le fichier 
    							//et pour la retrouver et eviter de rajouter la validation d'un extract comportant la même date
    							rowd.setRowNum(dernLigneTrouvee);
    							sheetd.createRow(0);
    							celld = rowd.createCell(0);
    						    celld.setCellValue(date_extract);
    						    System.out.println("La nouvelle date_extract '"+date_extract+"' a été stocké dans le fichier.");
    						    //pour ecrire dans le même fichier
    							FileOutputStream fileOutd = new FileOutputStream("C:/Donnees/Aide_Manager/date_extract1.xls");
    							wbd.write(fileOutd);
    						    fileOutd.close();
     
    					// Date actuelle
    					datextract = formatter.parse(date_extract);
    					calendar.setTime(datextract);
    					semaine = calendar.get(Calendar.WEEK_OF_YEAR);//récupérer la semaine dans l'année pour faire la comparaison avec les onglet du fichier de destination
    					//System.out.println(calendar.get(Calendar.WEEK_OF_YEAR));
    					}
    				}
     
    				if(row.getCell(0) != null && row.getCell(0).getStringCellValue().startsWith("Agent")){//si les lignes de la colonne 0 ne sont pas null
    					prenom_agent=row.getCell(0).getStringCellValue();//on récupère notre agent
    				    //isub = nom_agent.indexOf(",");
    				    sub = prenom_agent.substring(prenom_agent.indexOf(",")+1).trim();//récupérer la chaine après la virgule, après l'espace mais sans l'espace à la fin
    				    //System.out.println(sub);
    				    a.setAgent(sub);//on récupère notre agent dans notre objet
    					//System.out.println(a.getAgent()); //on l'affiche
    				}
    				if(row.getCell(1) != null && row.getCell(1).getStringCellValue().startsWith("Validation")){// si les lignes de la colonne 2 ne sont pas null
     
    						valid++; //Nombre de validation détecter dans le fichier
    						n_l_valid = n; // on récupère le numéro de ligne de la Validation
    						//System.out.println(nom_agent);
    						n_l_valid--;//on décrémente pour récupérer la validation dans le fichier
    						//valid_recupere=sheet.getRow(n_l_valid).getCell(4);// on récupére la validation dans le fichier
    						//System.out.println("Validation: "+valid_recupere);//on l'affiche
    						a.setValidation((int)sheet.getRow(n_l_valid).getCell(4).getNumericCellValue());//on récupère notre agent dans notre objet sous forme d'entier
    						System.out.println("validation: "+a.getValidation());//on l'affiche
    				}
    				listAgent.add(a);
     
    			}//fin du for
    La ligne d'ou vient l'erreur est celle-ci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    wbd = new HSSFWorkbook(istr);

Discussions similaires

  1. Tester si un fichier est vide + recup valeur dans ce fichier
    Par Johann7751 dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 26/02/2009, 15h51
  2. [Shell] Tester si un fichier est vide
    Par Spitfire378 dans le forum Linux
    Réponses: 3
    Dernier message: 10/02/2008, 12h18
  3. [VB 6.0] Tester si un fichier est vide
    Par maxou75 dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 19/12/2006, 18h06
  4. Tester si un fichier est vide ?
    Par stepd dans le forum Réseau
    Réponses: 15
    Dernier message: 27/07/2006, 19h04
  5. Ksh - tester si un fichier est vide ou pas?
    Par mzt.insat dans le forum Linux
    Réponses: 1
    Dernier message: 25/04/2006, 14h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo