Lors de la lecture .xlsx fichier à l'aide de PI j'ai une erreur “le Fichier Zip est fermé”
public Sheet readExcel() throws Exception{
//File fi=new File(new File(System.getProperty("user.dir"))+"\\src\\testdata2.xls");
File fi=new File("C:\\Users\\admin\\workspace\\HMS\\src\\testdata\\testdata1.xlsx");
Workbook wb = new XSSFWorkbook(fi);
Sheet Sheet = wb.getSheetAt(0);
int rowCount = Sheet.getLastRowNum()-Sheet.getFirstRowNum();
for (int i = 1; i < rowCount+1; i++) {
Row row = Sheet.getRow(i);
if(row.getCell(0).toString().length()==0){
System.out.println(row.getCell(1).toString()+"----"+ row.getCell(2).toString()+"----"+
row.getCell(3).toString()+"----"+ row.getCell(4).toString());
}
}
return Sheet;
}
Par l'exécution de code ci-dessus obtiens l'erreur comme ceci........
Exception in thread "main" java.lang.IllegalStateException: Fichier Zip
est fermé
au org.apache.pi.openxml4j.util.ZipFileZipEntrySource.getEntries(ZipFileZipEntrySource.java:45)
au org.apache.pi.openxml4j.opc.ZipPackage.getPartsImpl(ZipPackage.java:186)
au org.apache.pi.openxml4j.opc.OPCPackage.getParts(OPCPackage.java:684)
au org.apache.pi.openxml4j.opc.OPCPackage.ouvert(OPCPackage.java:254)
au org.apache.pi.openxml4j.opc.OPCPackage.ouvert(OPCPackage.java:201)
au org.apache.pi.xssf.usermodel.XSSFWorkbook.(XSSFWorkbook.java:294)
au ExcelReader.readExcel(ExcelReader.java:16)
au ExcelReader.principale(ExcelReader.java:30)
Quelqu'un peut m'aider à tracer quel est exactement le problème.
J'ai Googlé, mais ne pouvait pas obtenir la solution!
OriginalL'auteur Purnima | 2015-05-24
Vous devez vous connecter pour publier un commentaire.
Pour lire un xslx l'utilisation du fichier de créer un objet de la classe FileInputStream
Espère que cette heps vous...
OriginalL'auteur Vicky
Essayez de raccourcir le nom de fichier et chemin d'accès du fichier. Regarde comme il y a une limite sur combien de temps les personnages peuvent être entre " et ". Il a travaillé pour moi!
OriginalL'auteur Nick
Vous n'avez pas nécessairement besoin de passer un FileInputStream lors de la création d'un XSSFWorkbook objet, vous pouvez aussi passer un absolu chemin+nom de fichier sous forme de Chaîne et il peut être assez long (fonctionne pour moi avec 101 caractères, 108 caractères avec le double slash, il pourrait sans doute être plus). Je viens d'écrire une petite application sous Windows 7 dont le seul argument est un fichier de propriétés contenant (entre autres propriétés) l'absolu chemin+nom de fichier de l' .xlsx fichier que je veux traiter (exemple de la propriété format :
datasetFile=C:\\Users\\jlm\\Documents\\Test Cases\\AAAS\\TestCase2JsonGenerator\\AAAS_g1.xlsx
). Je viens de passer le datasetFile de la propriété en tant que paramètre à la XSSFWorkbook constructeur (un exemple de code en ligne :wb = new XSSFWorkbook(tags.get("datasetFile"));
). Il fonctionne très bien, MAIS n'oubliez pas tout de la double slash sinon vous obtenez le "Fichier Zip est fermé" exception (environ 2 heures de perdues).OriginalL'auteur jlm1150