2017-02-07 4 views
1

Ich möchte eine Excel-Datei überschreiben, aber die überschriebene Datei wird beschädigt. Ich arbeite mit Android Studio und ich möchte Informationen in einzelne Excel-Datei speichern. Unten ist mein Code:Excel-Datei wird nach dem Überschreiben in Android mit Apache POI beschädigt

private void saveIntoExcel(String fileName, String[] data) { 
    try { 
     String path = Environment.getExternalStorageDirectory().getAbsolutePath() + "/" + getString(R.string.app_name) + "/" + fileName; 

     InputStream inp = new FileInputStream(new File(path)); 

     HSSFWorkbook workbook = new HSSFWorkbook(inp); 
     HSSFSheet sheet = workbook.getSheetAt(0); 
     HSSFRow row; 

     row = sheet.createRow(sheet.getLastRowNum() + 1); 
     for (int i = 0; i < data.length; i++) { 
      HSSFCell cell = row.createCell(i); 
      cell.setCellValue(data[i]); 
     } 

     FileOutputStream fos = null; 
     File file; 

     file = new File(path); 
     fos = new FileOutputStream(file); 

     workbook.write(fos); 
     fos.close();   

     showToast(str_success); 
    } catch (Exception e) { 
     showToast(e.getMessage()); 
    } 
} 

ich diesen Code mit Excel-Dateien auf dem PC getestet und funktioniert einwandfrei, aber beschädigt in Android bekommt die Dateien.

+1

Können Sie den Fehler, den Sie auf Android sehen, einbeziehen? Wenn ja, editiere dein Q und füge es ein. – xlm

+0

@xlm Code läuft ohne Fehler auf logcat, das Programm läuft wie wenn alles in Ordnung ist, aber wenn ich versuche, die Datei im PC zu öffnen, sagen Sie mir, dass die Datei korrupt ist –

Antwort

1

Apache POI unterstützt das direkte Schreiben der geänderten Datei nicht so, wie Sie es versuchen.

Es gibt Diskussionen darüber, dies über eine neue write() -Methode bereitzustellen, aber derzeit müssen Sie in eine andere Datei schreiben, um zu vermeiden, dass Dinge beim Schließen der Objekte beschädigt werden. Nachdem die Arbeitsmappe geschlossen wurde, können Sie bei Bedarf die neue Datei über die alte verschieben.

Siehe some related discussion und .