Bonjour,

j'aimerai lire un fichier en format csv dans lequel je stocke la date.
Du genre:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
01/01/2012; 02/01/2012;
ce fichier doit-être parcourue.
on fait une comparaison avec une date.
si on ne trouve pas la date, il devra écrire la date que je récupère.
si on trouve la date, il affichera qu'on a trouver la date dans le fichier.

je fais ceci:
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
 
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
					InputStream ist = new FileInputStream("C:/Donnees/Aide_Manager/date_extract1.csv");
					HSSFWorkbook wbd = new HSSFWorkbook(ist);
					HSSFSheet sheetd = wbd.getSheetAt(0);
					HSSFRow rowd = null;
					HSSFCell celld = null;
 
					for (Iterator r = sheetd.rowIterator(); r.hasNext();){
						rowd = (HSSFRow) r.next();
						celld = rowd.getCell(0);
						if(celld != null ){
							if(celld.getCellType()==0){
							System.out.println("c'est un nombre: "+celld.getNumericCellValue()+" index: "+celld.getRowIndex());
							}else{
								System.out.println("c'est une chaine: "+celld.getStringCellValue());
								if(celld.getStringCellValue().equals(date_extract)){
									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;
								}
							}
 
						}
					}
 
					if(date_stockee_trouvee==false){//si la date n'est pas trouvée dans le fichier
						//retrouver la dernière ligne du fichier pour y ecrire la date
							System.out.println("retrouver la dernière ligne du fichier: "+rowd.getLastCellNum());
							//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(rowd.getLastCellNum());
							celld = rowd.createCell(0);
						    celld.setCellValue(date_extract);
						    //pour ecrire dans le même fichier
							FileOutputStream fileOutd = new FileOutputStream("C:/Donnees/Aide_Manager/date_extract1.csv");
							wbd.write(fileOutd);
						    fileOutd.close();
}
Mais il m'affiche cette erreur-ci:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
date_extract: 25/01/2012
java.io.IOException: Unable to read entire header; 2 bytes read; expected 32 bytes
	at org.apache.poi.poifs.storage.HeaderBlockReader.alertShortRead(HeaderBlockReader.java:176)
	at org.apache.poi.poifs.storage.HeaderBlockReader.<init>(HeaderBlockReader.java:103)
	at org.apache.poi.poifs.filesystem.POIFSFileSystem.<init>(POIFSFileSystem.java:153)
	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)
La ligne qui lui pose problème, c'est celle-ci:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
HSSFWorkbook wbd = new HSSFWorkbook(ist);
A mon avis, POI ne doit pas géré les csv? non...?