Bonjour,
j'aimerai lire un fichier en format csv dans lequel je stocke la date.
Du genre:
ce fichier doit-être parcourue.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 01/01/2012; 02/01/2012;
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:
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
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(); }
La ligne qui lui pose problème, c'est celle-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)
A mon avis, POI ne doit pas géré les csv? non...?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 HSSFWorkbook wbd = new HSSFWorkbook(ist);
Partager