APACHE POI 3.5 - Lecture de fichier XLSX - InvalidFormatException !
ldavoine
Messages postés5Date d'inscriptionmercredi 27 mai 2009StatutMembreDernière intervention19 juin 2009
-
27 mai 2009 à 17:20
wijdani
Messages postés2Date d'inscriptionlundi 23 avril 2012StatutMembreDernière intervention 7 août 2012
-
7 août 2012 à 14:48
Bonjour à tous,
Je viens de récupérer la dernière 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:
________________________________________________________
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");
ldavoine
Messages postés5Date d'inscriptionmercredi 27 mai 2009StatutMembreDernière intervention19 juin 2009 11 juin 2009 à 15:49
Pour le moment je n'ai pas trouvé...
En dézippant un fichier XLSX (car en fait, ce n'est qu'une archive, il suffit de renommer le fichier en ".zip"), tu te rends compte qu'à la racine il y a un fichier "[Content_Types].xml" .
C'est ce fichier qui doit apparemment définir les différents types (Can't read content types part !).
Et bien POI ne le comprendrait pas ou ne le concidérerait pas comme valide (pourtant ce vient de MICROSOFT WORD lui-même...). De toute facon, le même probléme survient avec un fichier XLSX généré par POI.
Je pense donc tout simplement qu'il y a un sacré BUG dans POI...
maturin6666
Messages postés4Date d'inscriptionlundi 4 août 2008StatutMembreDernière intervention11 juin 2009 11 juin 2009 à 16:10
J'ai trouvé !!!
Mais j 'ai laché l'affaire pour modifier un fichier xlsx = xls (excel 2003) + xml
déja pour enlever l'erreur que tu as, il faut inclure dans ton projet touts les .jar contenu dans la version beta de POI.
Ensuite y va y avoir un nouveau message d erreur.
tu dois trouver ce fichier : log4j.properties
tu le copies dans ton projet et rajoute a la fin de ce fichier :
Quand tu as fini tu peux lire le fichier excel comme tu faisais, attention aux pointeurs nuls...javascript:Insert_Emoticon('/imgs2/smile_dissapprove.gif');
Par contre pour modifier un fichier xlsx c est trop compliquer il faut redéfinir le xml ....javascript:Insert_Emoticon('/imgs2/smile_clown.gif');
maturin6666
Messages postés4Date d'inscriptionlundi 4 août 2008StatutMembreDernière intervention11 juin 2009 11 juin 2009 à 16:37
avec ce que je t ai dit tu peux l ouvrir un .xlsx et afficher le fichier dans la console d'éclipse par exemple. Mais pour la modif c est autre chose... j y suis pas arrivé javascript:Insert_Emoticon('/imgs2/smile_sad.gif');
maturin6666
Messages postés4Date d'inscriptionlundi 4 août 2008StatutMembreDernière intervention11 juin 2009 11 juin 2009 à 17:03
pour les 4 poi j'ai les même. Ensuite j'ai : commons-logging-1.1.jar, junit-3.8.1.jar, log4j-1.2.13.jar qui sont dans lib. et j'ai aussi : dom4j-1.6.1.jar, jsr173_1.0_api.jar, ooxml-schemas-1.0.jar, xmlbeans-2.3.0.jar qui eux sont dans ooxml-lib. et c est tout j'avais aussi jxl.jar pour les .xsl mais je pense qu elle ne change rien.