Bonjour à tous,
Je viens de récupérer la dernier version du module POI d'Apache (poi-3.5-beta5-20090219.jar) afin de lire et d'écrire des fichiers EXCEL 2007 (.xlsx), mais je n'arrive même pas à faire fonctionner un exemple tout simple...
J'ai investigué tout l'après-midi et je ne trouve pas pourquoi. Voici l'exception générée lorsque j'essaye de lire un fichier ".xlsx":
Exception in thread "main" org.apache.poi.openxml4j.exceptions.InvalidFormatException: Can't read content types part !
Que ce soit un fichier issu directement d'EXCEL 2007 ou un fichier généré par POI lui-même, l'exception est levée...
Voici le code source de ma classe qui essaye de lire un fichier, rien de plus simple:
________________________________________________________
________________________________________________________
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 import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.xssf.usermodel.*; public class Toto { public static void main(String[] args) { try { XSSFWorkbook wb= new XSSFWorkbook("c:\\DemoCell.xlsx"); XSSFSheet sheet=(XSSFSheet)wb.getSheetAt(0); int lastRowNum=sheet.getLastRowNum(); for(int i=0;i<lastRowNum;i++) { XSSFRow row=sheet.getRow(i); int lastCellNum=row.getLastCellNum(); System.out.println("\n => LIGNE "+i+"\n"); for(int j=0;j<lastCellNum;j++) { XSSFCell cell=row.getCell(j); String s1=cell.getRawValue(); System.out.println(s1+";"); } } } catch(Exception e) { e.printStackTrace(); } } }
C'est l'instanciation new XSSFWorkbook("c:\\DemoCell.xlsx"); qui plante.
En regardant sur le net, je vois en effet qu'un document OPEN XML doit avoir un type reconnu, par exemple:
* docx : application/vnd.openxmlformats-officedocument.wordprocessingml.document
* xlsx : application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
etc...
Dans mon cas (Can't read content types part !), l'API n'arrive pas à reconnaitre le type de contenu de mon fichier xlsx, mais pourquoi ???
Avez-vous une idée ? Avez-vous déjà rencontré ce probléme ? Et si oui comment l'avez-vous résolu ?
J'ai cherché sur plusieurs forum US, l'exception InvalidFormatException a déjà été rencontrée, mais sans réponse satisfaisante...
Vous m'aideriez beaucoup si vous aviez la solution, car la je sèche...
Merci d'avance.
Partager