Hallo liebe Community,
ich möchte gerne eine xlsx-Datei in Java einlesen.
Für jede Zeile soll ein neues Objekt "Schueler" angelegt werden,
wobei die einzelnen Zellen als Attribute diesem Objekt zugeodnert werden soll.
Alle Schueler Objekte sollen schließlich in einer Liste gespeichert werden.
Die Exceltabelle ist wie folgt aufgebaut:
1 | Klasse 1 | Musterfrau | Eva
2 | Klasse 2 | Mustermann | Max
Die erste Spalte ist hierbei eine Id.
Die erste Spalte ist in der xlsx-Datei als Standard formatiert.
Wenn ich diese Spalte in Java als Double einlesen möchte, dann funktioniert dies auch.
Allerdings funktioniert es nicht, wenn ich sie als Integer einlesen möchte.
Kann mir jemand von euch sagen was ich falsch mache und es mir bitte richtig programmieren?
Mein Code für die Klasse Schueler
Meine Testklasse hat folgenden Code:
In der angefügten zip-Datei findet ihr die xlsx-Datei, die Klasse Schueler und eine Test-Main-Klasse. Das Attribut id ist in der Klasse Schueler noch als double deklariert.
Die einzelnen jar files kann man auf der Apache Webseite downloaden.
P.S.: die beiden Attribute geburtstag und berechtigt in der Klasse Schueler sollen erst später umgesetzt werden.
ich möchte gerne eine xlsx-Datei in Java einlesen.
Für jede Zeile soll ein neues Objekt "Schueler" angelegt werden,
wobei die einzelnen Zellen als Attribute diesem Objekt zugeodnert werden soll.
Alle Schueler Objekte sollen schließlich in einer Liste gespeichert werden.
Die Exceltabelle ist wie folgt aufgebaut:
1 | Klasse 1 | Musterfrau | Eva
2 | Klasse 2 | Mustermann | Max
Die erste Spalte ist hierbei eine Id.
Die erste Spalte ist in der xlsx-Datei als Standard formatiert.
Wenn ich diese Spalte in Java als Double einlesen möchte, dann funktioniert dies auch.
Allerdings funktioniert es nicht, wenn ich sie als Integer einlesen möchte.
Kann mir jemand von euch sagen was ich falsch mache und es mir bitte richtig programmieren?
Mein Code für die Klasse Schueler
Java:
package calc;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.*;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.*;
public class Schueler {
private double id;
private String name;
private String vorname;
private String klasse;
public double getId() {
return id;
}
public void setId(double d) {
this.id = d;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getVorname() {
return vorname;
}
public void setVorname(String vorname) {
this.vorname = vorname;
}
public String getKlasse() {
return klasse;
}
public void setKlasse(String klasse) {
this.klasse = klasse;
}
public Date getGeburtstag() {
return geburtstag;
}
public void setGeburtstag(Date geburtstag) {
this.geburtstag = geburtstag;
}
public String getBerechtigt() {
return berechtigt;
}
public void setBerechtigt(String berechtigt) {
this.berechtigt = berechtigt;
}
public Schueler(int id, String name, String vorname) {
super();
this.id = id;
this.name = name;
this.vorname = vorname;
//this.geburtstag = geburtstag;
//this.berechtigt = berechtigt;
}
public Schueler() {
super();
}
public String toString() {
return "Schueler [id=" + id + ", name=" + name + ", vorname=" + vorname + "]";
}
private Object getCellValue(Cell cell) {
switch (cell.getCellType()) {
case Cell.CELL_TYPE_STRING:
return cell.getStringCellValue();
case Cell.CELL_TYPE_BOOLEAN:
return cell.getBooleanCellValue();
case Cell.CELL_TYPE_NUMERIC:
return cell.getNumericCellValue();
}
return null;
}
public List<Schueler> readSchuelersFromExcelFile(String excelFilePath) throws IOException {
List<Schueler> listSchuelers = new ArrayList<>();
FileInputStream inputStream = new FileInputStream(new File(excelFilePath));
Workbook workSchueler = new XSSFWorkbook(inputStream);
Sheet firstSheet = workSchueler.getSheetAt(0);
Iterator<Row> iterator = firstSheet.iterator();
while (iterator.hasNext()) {
Row nextRow = iterator.next();
Iterator<Cell> cellIterator = nextRow.cellIterator();
Schueler aSchueler = new Schueler();
while (cellIterator.hasNext()) {
Cell nextCell = cellIterator.next();
int columnIndex = nextCell.getColumnIndex();
switch (columnIndex) {
case 0:
aSchueler.setId((double) getCellValue(nextCell));
break;
case 1:
aSchueler.setKlasse((String) getCellValue(nextCell));
case 2:
aSchueler.setName((String) getCellValue(nextCell));
break;
case 3:
aSchueler.setVorname((String) getCellValue(nextCell));
break;
}
}
listSchuelers.add(aSchueler);
}
workSchueler.close();
inputStream.close();
return listSchuelers;
}
}
Meine Testklasse hat folgenden Code:
Java:
package gui;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.*;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.*;
import calc.Schueler;
public class Test {
public static void main(String[] args) throws IOException{
String excelFilePath = "A://SchuelerListeTest.xlsx";
Schueler reader = new Schueler();
List<Schueler> listBooks = reader.readSchuelersFromExcelFile(excelFilePath);
System.out.println(listBooks);
}
}
In der angefügten zip-Datei findet ihr die xlsx-Datei, die Klasse Schueler und eine Test-Main-Klasse. Das Attribut id ist in der Klasse Schueler noch als double deklariert.
Die einzelnen jar files kann man auf der Apache Webseite downloaden.
P.S.: die beiden Attribute geburtstag und berechtigt in der Klasse Schueler sollen erst später umgesetzt werden.
Anhänge
Zuletzt bearbeitet: