2017-09-04 5 views
0

J'ai un haricot avec méthode pour générer un rapport fait avec jett:Comment résoudre InvalidFormatException dans un fichier xls généré par jett?

Map<String, Object> beans = new HashMap<String, Object>(); 

    beans.put("fichasTecnicasMateriaPrimaResumo", fichasTecnicasMateriaPrimaResumo); 

    try { 

     InputStream inPath = ProdutoManagedBean.class.getResourceAsStream("/template.xls"); 

     ExcelTransformer transformer = new ExcelTransformer(); 
     transformer.transform(inPath, beans); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } catch (InvalidFormatException e) { 
     e.printStackTrace(); 
    } 

Je vais avoir un InvalidFormatException dans transformer.transfom (...):

22:44:37,803 ERROR [stderr] (default task-28) org.apache.poi.openxml4j.exceptions.InvalidFormatException: Your InputStream was neither an OLE2 stream, nor an OOXML stream 

j'ai vu qu'il pourrait soit en ce qui concerne la compatibilité du fichier xls avec le libreoffice, ou quelque chose. Merci pour toute aide.

+1

L'erreur l'indique déjà: 'Votre InputStream n'était ni un flux OLE2, ni un flux OOXML'. Donc votre 'template.xls' n'est ni un fichier Excel binaire au format' BIFF', ni un fichier Office OpenXML. Donc votre 'template.xls' n'est pas un fichier qui peut être lu comme un fichier Excel. Peut-être que c'est un mauvais fichier CSV nommé? Ou un mauvais fichier XML nommé? Excel lui-même est peut-être capable de l'ouvrir mais le 'ExcelTransformer' ne l'est pas. –

+0

Eh bien, j'ai créé un xls et xlsx dans Microsoft Excel Excel 2007 lui-même et il donne toujours la même erreur ... sera-t-il encore que le fichier Excel de bureau serait mal créé? Suggérez-vous des changements au code? N'y a-t-il rien que vous puissiez faire dans le code? @AxelRichter – philabreu

+0

L'erreur provient de [WorkbookFactory] (https://svn.apache.org/viewvc/poi/tags/REL_3_14_FINAL/src/ooxml/java/org/apache/poi/ss/usermodel/WorkbookFactory.java?revision = 1732982 & view = markup # l196) et cela ne se produit que si les premiers octets du 'InputStream' sont faux. Donc, si vous doutez que votre fichier est faux, alors quelque chose avec 'InputStream' doit être faux. Mais que nous ne pouvons pas tester sans avoir votre environnement. –

Répondre

0

J'ai découvert que xls est réellement corrompu par maven ... quand j'essaye d'ouvrir le dossier qui est dans le dossier de déploiement de wildfly il a déjà été corrompu ... J'ai essayé quelques solutions pour résoudre ce problème de données la corruption mais je ne l'ai pas encore trouvé rien qui fonctionne, mais au moins je sais déjà ce qu'est la vraie erreur. Je vous remercie.