Guten Tag liebe Experten,
mein Ziel besteht darin, eine GUI in Java zu programmieren. Beim Klicken eines Buttons sollen Strings, die zuvor in Textfeldern /ComboBoxen eingegeben worden sind, in bestimmte Zellen einer Excel-Datei übernommen werden, die als ganz einfache „Datenbank“ dient. Pro Button-Click soll eine ZEILE der Excel-Datei (konkret: die Spalten B, C, D) mit 3 Werten gefüllt werden. Bei erneutem Klicken sollen die entsprechenden Strings in der nächsten (also darunterliegenden) ZEILE (wieder die Spalten B, C, D) gespeichert werden. Ich verwende dafür die POI von Apache.
Alles klappt auch wunderbar, bis auf das Einfügen der Strings in die Excel-Datei. Prinzipiell funktioniert das Einfügen schon, allerdings befülle ich nicht die von mir gewünschten Zellen.
Das ist mein Code dazu:
[JAVA=42]
detailsPanel.addDetailListener(new DetailListener() {
public void detailEventOccurred(DetailEvent event) {
String bezeichnung = event.getText();
String art = event.getText();
String material = event.getText();
//textArea.append(name);
try {
FileInputStream myInput = new FileInputStream("C:/Users/max/Desktop/Max/Studium/Master/00_Hiwi/20140307_Eclipse/140405_ActionListener/Excel.xls");
POIFSFileSystem fileSystem = new POIFSFileSystem(myInput);
HSSFWorkbook workbook = new HSSFWorkbook(fileSystem);
HSSFSheet sheet = workbook.getSheetAt(0);
System.out.println(sheet.getPhysicalNumberOfRows()); //return anzahl gefüllte Reihen
int rows = sheet.getPhysicalNumberOfRows();
HSSFRow row = sheet.createRow(rows);
HSSFCell cell = row.createCell(1); //soll Zelle in Spalte 1 erstellen
cell.setCellValue(bezeichnung); //Wert der gesetzt werden soll.
//HSSFCell cell1 = row.createCell(2); //soll Zelle in Spalte 2 erstellen
//cell1.setCellValue(art); //Wert der gesetzt werden soll.
//HSSFCell cell2 = row.createCell(3); //soll Zelle in Spalte 1 erstellen
//cell2.setCellValue(material); //Wert der gesetzt werden soll.
FileOutputStream myOutput = new FileOutputStream(new File("C:/Users/max/Desktop/Max/Studium/Master/00_Hiwi/20140307_Eclipse/140405_ActionListener/Excel.xls"));
workbook.write(myOutput);
myOutput.close();
} catch (Exception ex) {
};
[/code]
Diese Stelle ist glaube ich auch noch wichtig:
[JAVA=42]
JButton addBtn = new JButton("Hinzufügen");
addBtn.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
final String bezeichnung = bezeichnungField.getText();
final String art = artField.getText();
final String selectedItem = (String)materialAuswahl.getSelectedItem();
String text = bezeichnung + "; " + art + "\n";
fireDetailEvent(new DetailEvent(this, bezeichnung));
fireDetailEvent(new DetailEvent(this, art));
fireDetailEvent(new DetailEvent(this, selectedItem));
[/code]
Falls es Euch hilft:
Ausgegangen bin ich dabei von diesem Code, den ich im Netz gefunden habe: Java Swing: Events (Video Tutorial Part 5) | Cave of Programming
Konkret stellt sich das beim Ausführen bei mir folgendermaßen dar:
Eingabe:
bezeichnung: Blechverschnitt
art: V(erschnitt)
selectedItem: DC01
Nach Klicken des „Hinzufügen“-Buttons sieht die Excel so aus:
Blechverschnitt
V(erschnitt)
DC01
(die Werte werden untereinander in Spalte B geschrieben)
Ich möchte aber, dass er die Strings in folgende Zellen schreibt :
Blechverschnitt V(erschnitt) DC01
(sprich, in die erste leere Zeile und dort in die Zellen B bis D)
Hoffe, das Problem ist verständlich beschrieben.
Es ist an und für sich ein recht kleiner Fehler, ich sitze allerdings schon 4 Tage davor und bekomme es einfach nicht hin. Ich krieg die Krise.
Ich muss dazu sagen, dass ich blutiger Anfänger bin. Wenn ihr helfen wollt/könnt, antwortet bitte möglichst ausführlich, damit ich folgen kann.
Vielen, vielen Dank schonmal.
Tinga
mein Ziel besteht darin, eine GUI in Java zu programmieren. Beim Klicken eines Buttons sollen Strings, die zuvor in Textfeldern /ComboBoxen eingegeben worden sind, in bestimmte Zellen einer Excel-Datei übernommen werden, die als ganz einfache „Datenbank“ dient. Pro Button-Click soll eine ZEILE der Excel-Datei (konkret: die Spalten B, C, D) mit 3 Werten gefüllt werden. Bei erneutem Klicken sollen die entsprechenden Strings in der nächsten (also darunterliegenden) ZEILE (wieder die Spalten B, C, D) gespeichert werden. Ich verwende dafür die POI von Apache.
Alles klappt auch wunderbar, bis auf das Einfügen der Strings in die Excel-Datei. Prinzipiell funktioniert das Einfügen schon, allerdings befülle ich nicht die von mir gewünschten Zellen.
Das ist mein Code dazu:
[JAVA=42]
detailsPanel.addDetailListener(new DetailListener() {
public void detailEventOccurred(DetailEvent event) {
String bezeichnung = event.getText();
String art = event.getText();
String material = event.getText();
//textArea.append(name);
try {
FileInputStream myInput = new FileInputStream("C:/Users/max/Desktop/Max/Studium/Master/00_Hiwi/20140307_Eclipse/140405_ActionListener/Excel.xls");
POIFSFileSystem fileSystem = new POIFSFileSystem(myInput);
HSSFWorkbook workbook = new HSSFWorkbook(fileSystem);
HSSFSheet sheet = workbook.getSheetAt(0);
System.out.println(sheet.getPhysicalNumberOfRows()); //return anzahl gefüllte Reihen
int rows = sheet.getPhysicalNumberOfRows();
HSSFRow row = sheet.createRow(rows);
HSSFCell cell = row.createCell(1); //soll Zelle in Spalte 1 erstellen
cell.setCellValue(bezeichnung); //Wert der gesetzt werden soll.
//HSSFCell cell1 = row.createCell(2); //soll Zelle in Spalte 2 erstellen
//cell1.setCellValue(art); //Wert der gesetzt werden soll.
//HSSFCell cell2 = row.createCell(3); //soll Zelle in Spalte 1 erstellen
//cell2.setCellValue(material); //Wert der gesetzt werden soll.
FileOutputStream myOutput = new FileOutputStream(new File("C:/Users/max/Desktop/Max/Studium/Master/00_Hiwi/20140307_Eclipse/140405_ActionListener/Excel.xls"));
workbook.write(myOutput);
myOutput.close();
} catch (Exception ex) {
};
[/code]
Diese Stelle ist glaube ich auch noch wichtig:
[JAVA=42]
JButton addBtn = new JButton("Hinzufügen");
addBtn.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
final String bezeichnung = bezeichnungField.getText();
final String art = artField.getText();
final String selectedItem = (String)materialAuswahl.getSelectedItem();
String text = bezeichnung + "; " + art + "\n";
fireDetailEvent(new DetailEvent(this, bezeichnung));
fireDetailEvent(new DetailEvent(this, art));
fireDetailEvent(new DetailEvent(this, selectedItem));
[/code]
Falls es Euch hilft:
Ausgegangen bin ich dabei von diesem Code, den ich im Netz gefunden habe: Java Swing: Events (Video Tutorial Part 5) | Cave of Programming
Konkret stellt sich das beim Ausführen bei mir folgendermaßen dar:
Eingabe:
bezeichnung: Blechverschnitt
art: V(erschnitt)
selectedItem: DC01
Nach Klicken des „Hinzufügen“-Buttons sieht die Excel so aus:
Blechverschnitt
V(erschnitt)
DC01
(die Werte werden untereinander in Spalte B geschrieben)
Ich möchte aber, dass er die Strings in folgende Zellen schreibt :
Blechverschnitt V(erschnitt) DC01
(sprich, in die erste leere Zeile und dort in die Zellen B bis D)
Hoffe, das Problem ist verständlich beschrieben.
Es ist an und für sich ein recht kleiner Fehler, ich sitze allerdings schon 4 Tage davor und bekomme es einfach nicht hin. Ich krieg die Krise.
Ich muss dazu sagen, dass ich blutiger Anfänger bin. Wenn ihr helfen wollt/könnt, antwortet bitte möglichst ausführlich, damit ich folgen kann.
Vielen, vielen Dank schonmal.
Tinga