APACHE POI 3.5 - Lecture de fichier XLSX - InvalidFormatException !
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:
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 ??? :calim2:
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.