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:
*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
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:
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
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:
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