org.apache.pi.openxml4j.des exceptions.InvalidOperationException: impossible d'ouvrir le fichier spécifié
Mon code ne fonctionne pas, il indique toujours l'exception mentionnée ci-dessus.
mais je vois toujours le tmp fichier généré.
voici le code, quelqu'un peut s'il vous plaît suggérer quelque chose:
FileInputStream fis =null;
try{
fis= new FileInputStream(new File("/home/amar/Desktop/new/abc.xls"));
Workbook wb = new org.apache.poi.xssf.usermodel.XSSFWorkbook(fis);
int numOfSheets = wb.getNumberOfSheets();
System.out.println("bhargo num of sheets is " + numOfSheets);
for(int i=0; i<numOfSheets; i++){
org.apache.poi.ss.usermodel.Sheet sheet = wb.getSheetAt(i);
Iterator<Row> rowIterator = sheet.iterator();
while (rowIterator.hasNext())
{
Row row = rowIterator.next();
Iterator<Cell> cellIterator = row.cellIterator();
while (cellIterator.hasNext()) {
Cell cell = (Cell) cellIterator.next();
if (cell.getCellType() == cell.CELL_TYPE_STRING) {
System.out.println("bhargo cell value is " + cell.getStringCellValue().trim());
}
}
}
}
} catch (Exception e) {
//TODO Auto-generated catch block
e.printStackTrace();
}
finally{
System.out.println("bhargo, closing the stream");
try {
fis.close();
} catch (IOException e) {
//TODO Auto-generated catch block
e.printStackTrace();
}
}
Vous devez vous connecter pour publier un commentaire.
Il y a un certain nombre de questions se posent ici:
Tout d'abord, comme expliqué dans la documentation Apache POI, ne pas utiliser un InputStream si vous avez un fichier! C'est plus lent et utilise plus de mémoire
Deuxièmement, XSSF est le code pour travailler avec
.xlsx
fichiers, mais votre fichier est un.xls
, ce qui ne fonctionne pas.Troisièmement, Apache POI a code qui fonctionnera automatiquement à quel type de fichier est le vôtre, et de créer le classeur approprié pour vous
Votre code doit donc plutôt être
Cela va créer le bon type de classeur, en direct du fichier
wb = new XSSFWorkbook(spreadSheetFileName);
tout aussi bon, oùspreadSheetFileName
est unString
?.xlsx
fichier, et non pas un par exemple renommé. À l'aide deWorkbookFactory
prend soin d'identifier le type de fichier et la création de la bonne pour vousJ'ai pu résoudre mon problème.
Je suis en train de travailler sur linux, donc c'était d'enregistrer le fichier dans une version antérieure d'excel