Excel-Datei nicht speicherbar, da von Java zum Bearbeiten gesperrt.

Bitte aktiviere JavaScript!
Hallo Freunde der Sonne,

für ein Programm, dass ich in der Arbeit schreibe, habe ich folgende Aufgabe: Ich muss eine Excel-Datei öffnen, Daten aus dieser einlesen und in eine Datenbank schreiben. Das funktioniert soweit einwandfrei. Das einzige Problem: Selbst wenn der Task durchgelaufen ist und das Programm eigentlich mit der Excel-Datei fertig sein sollte: Öffne ich die Datei, nehme eine Änderung in dieser vor und möchte diese anschließend speichern, so bekomme ich eine Fehlermeldung, dass diese von einem anderen Benutzer (dem Programm) zum Bearbeiten gesperrt ist.

Mit Code sieht das wie folgt aus:

Zunächst öffne ich die Excel-Datei mit einem File-Chooser:

Code:
FileChooser chooserExcellist = new FileChooser();
chooserExcellist.setTitle("Datei auswählen");
chooserExcellist.setInitialDirectory(new File(System.getProperty("user.dir")));
chooserExcellist.getExtensionFilters().add(new ExtensionFilter("XLSX-Datei", "*.xlsx"));
File file = chooserExcellist.showOpenDialog(this.gui.getStage());
if (file != null) {
    setFile(file);
    gui.setExcelPasswordController(); *
}
*Da die Datei Passwort-geschützt ist, wurde ein weiteres Pane implementiert in welches man das Passwort zum entsperren eingeben kann. Vom Controller dieses Panes wird anschließend folgender Multithread gestartet

Code:
public void run() {
    try {
        this.workbook = (XSSFWorkbook) WorkbookFactory.create(gui.getRootPaneController().getFile(), Passwort, true);
        sheet = this.workbook.getSheetAt(0);
        Row Tabellenspalten = sheet.getRow(0);
        .
        .
        .
    }finally{
        if (workbook != null) {
                try {
                    this.workbook.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
    }
}
Sobald der Multithread durchgelaufen ist und ich anschließend versuche die gewählte Datei zu bearbeiten, bekomme ich dennoch folgende Fehlermeldung und das obwohl ich das Workbook eigentlich geschlossen habe:

Fehlermeldung.png

Wenn ich das Programm beende, dann kann ich die Excel-Datei wie gewohnt speichern. Laut meines Arbeitgebers soll man die Datei allerdings direkt bearbeiten können, ohne das Tool zu schließen. Kann mir jemand einen Hinweis geben, wie ich die Excel-Datei nach dieser Verwendung wieder zum Bearbeiten freigeben kann?

Ich danke euch bereits im Vorraus für eire Hilfe.

Liebe Grüße, Andy
 
A

Anzeige




Vielleicht hilft dir unser Kurs hier weiter —> (hier klicken)
Was sagt denn der Debugger, wenn er die Zeile this.workbook.close() durchlaufen hat? Gibt die Methode irgendwas zurück, was nach Fehler aussieht?
 
Hinzu kommt: nutze try-with-resources, außerdem stellt sich mir die Frage, wofür Du eine Instanzvariable für das workbook brauchst.
 
Passende Stellenanzeigen aus deiner Region:

Oben