Hallo,
ich versuche gerade ein Programm zu schreiben, welches Daten von einer Excel-Tabelle in eine Datenbank importieren kann. Dabei soll auch gleichzeitig noch in Echtzeit gezeigt werden, wie viel Prozent importiert wurden mit Hilfe eines ProgressBars.
Hier sind die zwei Methoden, die ich geschrieben habe (sind Teil eines großen Programms):
Die Import-Methode: (Sieht chaotisch aus, geht jetzt aber nur um das Problem)
Die showProgressStage()-Methode:
Das Problem ist, dass mein Stage zwar auftaucht, aber gar keine Nodes angezeigt werden.
Es scheint so zu sein, dass die Excel-Datei Verarbeitung zu viel Leistung abzieht, denn wenn ich das gleiche nur mit einem normalen Zahlencounter ohne Excel-Verarbeitung mache, wird die Stage samt Nodes angezeigt.
Habe ich irgendetwas wichtiges übersehen oder was kann man hier machen?
LG
Kenta1561
ich versuche gerade ein Programm zu schreiben, welches Daten von einer Excel-Tabelle in eine Datenbank importieren kann. Dabei soll auch gleichzeitig noch in Echtzeit gezeigt werden, wie viel Prozent importiert wurden mit Hilfe eines ProgressBars.
Hier sind die zwei Methoden, die ich geschrieben habe (sind Teil eines großen Programms):
Die Import-Methode: (Sieht chaotisch aus, geht jetzt aber nur um das Problem)
Java:
public void importData(File file, int dateColumn, int categoryColumn, int descriptionColumn, int incomeColumn,
int expenseColumn, int creditCardColumn, int startingRow, double endingRow) {
try {
//region Decrementation
dateColumn--;
categoryColumn--;
descriptionColumn--;
incomeColumn--;
expenseColumn--;
creditCardColumn--;
startingRow--;
endingRow--;
//endregion
Workbook workbook;
if(file.getName().endsWith(".xlsx")) {
workbook = new XSSFWorkbook(file);
} else if(file.getName().endsWith(".xls")) {
workbook = new HSSFWorkbook(new FileInputStream(file));
} else {
Main.showAlert(Alert.AlertType.ERROR, "Wrong file format", "Not a valid" +
" file format", "The file you have chosen has an invalid file format. Please make sure" +
" that the file format is .xlsx or .xls.");
return;
}
Sheet sheet = workbook.getSheetAt(0);
showProgressStage(); //Hier wird die Methode aufgerufen, die den progress stage zeigen soll
for(double rowCounter = startingRow; rowCounter <= endingRow; rowCounter++) {
//Progress indication
System.out.println(rowCounter / endingRow); //Nur zu Testzwecken geschrieben
progressBar.setProgress(rowCounter / endingRow); //Hier wird mein progress gesetzt
//Excel data processing
Row row = sheet.getRow((int)rowCounter);
LocalDate localDate = dateToLocalDate(row.getCell(dateColumn).getDateCellValue());
String category = row.getCell(categoryColumn).getStringCellValue();
String description = row.getCell(descriptionColumn).getStringCellValue();
double income = row.getCell(incomeColumn).getNumericCellValue();
income = Math.round(income * 100);
income = income / 100;
double expense = row.getCell(expenseColumn).getNumericCellValue();
expense = Math.round(expense * 100);
expense = expense / 100;
dbManager.addContentData(new ContentData(localDate, category, description, income, expense));
}
progressStage.close(); //Hier wird das progress Fenster geschlossen
workbook.close();
} catch (Exception e) {
e.printStackTrace();
}
}
Die showProgressStage()-Methode:
Java:
private void showProgressStage() {
//Components
Label importProgressLabel = new Label("Import Progress");
importProgressLabel.setLayoutX(88);
importProgressLabel.setLayoutY(30);
importProgressLabel.setTextFill(Paint.valueOf("#30ffa2"));
importProgressLabel.setFont(new Font("Microsoft YaHei UI Light", 24));
progressBar = new ProgressBar();
progressBar.setPrefWidth(300);
progressBar.setLayoutX(25);
progressBar.setLayoutY(80);
progressLabel = new Label();
progressLabel.setPrefSize(86, 19);
progressLabel.setLayoutX(132);
progressLabel.setLayoutY(115);
//Pane, Scene, Stage
Pane pane = new Pane(importProgressLabel, progressBar, progressLabel);
pane.setPrefSize(350, 150);
Scene scene = new Scene(pane);
progressStage = new Stage();
progressStage.setScene(scene);
progressStage.setTitle("Import Progress");
progressStage.show();
}
Das Problem ist, dass mein Stage zwar auftaucht, aber gar keine Nodes angezeigt werden.
Es scheint so zu sein, dass die Excel-Datei Verarbeitung zu viel Leistung abzieht, denn wenn ich das gleiche nur mit einem normalen Zahlencounter ohne Excel-Verarbeitung mache, wird die Stage samt Nodes angezeigt.
Habe ich irgendetwas wichtiges übersehen oder was kann man hier machen?
LG
Kenta1561