Apache POI/ neue Reihe in Excel mit einem Button

Diskutiere Apache POI/ neue Reihe in Excel mit einem Button im Allgemeine Java-Themen Bereich.
N

N0Name

Hallo,

ich versuche derzeit ein Programm zu schreiben, mit dem man deine Arbeitszeiten besser organisieren kann. Daher benutze ich Apache POI um in eine Excel-Datei zu schreiben. Ich bin schon relativ weit, jedoch komme ich einem Punkt nicht weiter. Mein Problem ist, dass man seine Stunden pro Tag eingibt und das Programm diese in die entsprechende Excel-Datei einträgt. Wenn ich jedoch den nächsten Tag eintragen möchte, überschreibt mir das Programm die Excel-Datei und der vorherige Tag ist gelöscht.
Mein Problem ist also, das ich nicht weiß, wie ich in die unteren Reihen der Datei schreibe.
Ich hab es schon mit dem FileInputStream versucht, jedoch hat das nicht so recht funktioniert, da ich für jeden Monat eine neue Datei anlege.

Das ist mein Code für die Erstellung und das schreiben der Excel-Datei.

Code:
public void speichern(ActionEvent event) throws Exception {

            LocalDate localDate = date.getValue();
            datum = String.valueOf(localDate);

            do {
                if(btnNextMon.isArmed()){
                    monClick++;
                    System.out.println(monClick);
                }
                if (btnSave.isArmed()){
                    saveClick++;
                }

                try {
                    XSSFWorkbook workbook = new XSSFWorkbook();
                    XSSFSheet sheet = workbook.createSheet("Stundenabrechnung");
                    sheet.setDefaultColumnWidth(18);


                    Map<String, Object[]> data = new TreeMap<>();
                    data.put("1", new Object[]{"DATUM:", " INS. ABG. STUNDEN:", " ABGR. STUNDEN:", " BESCHREIBUNG:"});
                    data.put("2", new Object[]{datum, ergbnis + "0", LHabg.getText(), taBes.getText()});


                    Set<String> keyset = data.keySet();
                    int rownum = 0;
                    for (String key : keyset) {
                        XSSFRow row = sheet.createRow(rownum++);
                        Object[] objArr = data.get(key);
                        int cellnum = 0;
                        for (Object obj : objArr) {

                            XSSFCell cell = row.createCell(cellnum++);
                            CellStyle cellStyle = workbook.createCellStyle();
                            cellStyle.setAlignment(HorizontalAlignment.CENTER);
                            cellStyle.setVerticalAlignment(VerticalAlignment.TOP);
                            cell.setCellStyle(cellStyle);
                            if (obj instanceof String) {
                                cell.setCellValue((String) obj);
                            } else if (obj instanceof Integer) {
                                cell.setCellValue((Integer) obj);
                            }


                        }

                    }
                    FileOutputStream outputStream = new FileOutputStream("Stundenabrechnung" + monClick +".xlsx");
                    workbook.write(outputStream);
                    workbook.close();

                } catch (Exception e) {
                    e.printStackTrace();
                }
                System.out.println("ExcelFile is created succsessfully");
            }while (btnNextMon.isPressed());
    }

}
Danke für die Hilfe. :)
 
mihe7

mihe7

ich versuche derzeit ein Programm zu schreiben, mit dem man deine Arbeitszeiten besser organisieren kann.
Also meine Arbeitszeiten brauchst Du nicht besser zu organisieren :)

Mein Problem ist also, das ich nicht weiß, wie ich in die unteren Reihen der Datei schreibe.
Dein erstes Problem ist, dass Du jedesmal eine neue Datei anlegst, die natürlich die vorherige überschreibt.

Heißt:
1. Falls Datei bereits existiert -> füge Einträge ans Ende an
2. Sonst -> lege neue Datei mit den Einträgen an.

Bei 1. brauchst Du dann den Hinweis von @MoxxiManagarm - nachdem Du die bestehende Datei geöffnet hast.
 
Thema: 

Apache POI/ neue Reihe in Excel mit einem Button

Passende Stellenanzeigen aus deiner Region:
Anzeige

Neue Themen

Anzeige

Anzeige
Oben