Fichier Excel à Partir de Apache POI Cant Ouvert par Ms Excel (fichier corrompu)
Je ne sais pas pourquoi le fichier que j'ai écris à l'aide de PI ne peut pas être ouvert par Ms Excel 2013, mais le fichier est toujours lisible par POI. (valeur de la cellule peut être changé)
cette est l'erreur de fichier
voici le code
FileInputStream fis = null;
try {
fis = new FileInputStream(fileUri); //not error at fileUri
} catch (FileNotFoundException e) {
//TODO Auto-generated catch block
e.printStackTrace();
}
String urii = fileUri.replace(".xls", "0.xls"); //not error
File fisx = new File(urii);
Workbook workbook = null;
workbook = new HSSFWorkbook(fis);
Sheet sheet = workbook.getSheetAt(0);
Row row = sheet.getRow(0);
Cell cell = row.getCell(0);
String p = cell.getStringCellValue();
TextView a = (TextView) findViewById(R.id.txtUri);
cell.setCellValue(new String("popo"));
String x = cell.getStringCellValue();
TextView b = (TextView) findViewById(R.id.txtFile);
a.setText(p);
b.setText(x);
OutputStream fos = null;
fos = new FileOutputStream(fisx);
workbook.write(fos); //main problem
fos.flush();
fos.close();
Merci pour votre aide!!
OriginalL'auteur ketelagoreng | 2015-05-22
Vous devez vous connecter pour publier un commentaire.
Il y a deux problèmes avec votre code. Tout d'abord cela:
Comme expliqué dans la Apache POI Docs, ne pas utiliser un InputStream si vous avez un Fichier!
Deuxièmement, ce:
Qui ne fonctionne que pour
.xls
fichiers, pas pour.xlsx
. Au lieu de cela, vous devez utiliser WorkbookFactory qui identifie le type et vous donne le droit de classeur pour le formatChangez votre code
Assurez-vous que vous êtes en train d'enregistrer dans un fichier différent. PI n'est pas (pour l'instant) de soutien en place à l'écrit, donc il doit être un fichier différent
Chaîne urii = fileUri.replace(".xls", "0.xls"); cette ligne pour modifier l'url et le nom de fichier, s'il vous plaît aider meeeeeee..... :((
J'ai essayer le code dans le projet en java, il fonctionne très bien, mais lorsque j'utilise ce code pour android projet (à l'aide de bluestack émulateur) donner la sortie d'erreur (fichier corrompu)
bug de l'émulateur (peut-être), en utilisant de vrais appareil android ne me donne pas d'erreur de fichier de sortie, j'ai été en utilisant bluestack émulateur
OriginalL'auteur Gagravarr
Le problème majeur que je vois ici est:
Au lieu de cela, vous devez utiliser:
POUR être lisible par MS EXCEL 2013.
oui..mais pour être en mesure d'être ouvert sur MS Excel 2013, vous devez utiliser...XSSFWorkbook
mon fichier d'entrée est xls type et la sortie est xls type trop.. Aussi, j'ai essayé de télécharger le fichier de sortie à google docs, et impossible de télécharger (je pense que parce que le fichier de sortie est corrompu)
J'ai besoin d'écrire le type de fichier comme xlsx pour laquelle j'utilise de la classe FileOutputStream. Pouvez-vous suggérer la façon d'écrire le fichier en utilisant le droit de classeur de la classe
OriginalL'auteur Akash Rajbanshi
Résolu :
par l'utilisation de vrai appareil android au lieu de bluestack émulateur,
Je ne sais pas pourquoi, mais ça marche!!!!
Merci à tous 😀
OriginalL'auteur ketelagoreng
Vous appelez getSheetAt(0), mais vous n'avez pas créer une feuille avant (classeur.createSheet(“nom”)
OriginalL'auteur Kerem Kulak
La solution est d'utiliser l' .extension xls et PAS .xlsx, comme indiqué dans ce réponse
OriginalL'auteur Daniil Shevelev