Excel Tabelle über java manipulieren

Snickers

Grünschnabel
Hallo!

Welche ist die geeigneste Möglichkeit, um Exceldateien zu manipulieren. Ich habe vier prinzipielle Lösungen gefunden.

1. Die Jakarta API von Apache
Habe gelesen, dass Jarkata Tabellen für die Excelversionen 97-2002 erstellen kann. Was ist mit neueren Versionen? Kann man hier auch existierende Tabelle ändern, ohne dass die Formatierung verlohren geht? Habe schon ein bisschen getestet und bis jetzt nur eine Lösung gefunden, bei der das ganze sheet überschrieben wird.

2. JavaExcel API
Habe ich noch keinen Plan voll.

3. JDBC
Mit JDBC habe ich schon ein paar Erfahrungen gemacht. Kann mir aber nicht vorstellen, wie man z.B. einzelne Zellen einer Exceltabelle schreiben kann. Jemand einen Plan?

4. OLE mittels SWT
Hier habe ich schon ein Beispiel aus dem Forum getestet, welches eine Exceldiagramm einbindet. Nur weiß ich auch hier nicht, wie ich einzelne Zellen verändern kann.

Also wenn ihr mir bei einer Lösung helfen könntet, wäre das super. Wie, ist nicht so wichtig. Ich mag nur keine Probleme bekommen, wenn dem nächst eine neue Excel oder Javaversion rauskommt und das halbe Programm nicht mehr läuft. Von daher finde ich die Variante mittels OLE oder JDBC vielleicht am besten.

Vielen dank schon mal!
Grüße an alle!
 
Hallo!

1. Die Jakarta API von Apache
Habe gelesen, dass Jarkata Tabellen für die Excelversionen 97-2002 erstellen kann. Was ist mit neueren Versionen? Kann man hier auch existierende Tabelle ändern, ohne dass die Formatierung verlohren geht? Habe schon ein bisschen getestet und bis jetzt nur eine Lösung gefunden, bei der das ganze sheet überschrieben wird.
Ich habs fuer einen Excel Import/Export von Excel 2002 Daten verwendet und das hat einwandfrei funktioniert. Da die neuen Versionen in der Regel abwärtskompatibel sind sollte das auch gehen. (Wenn auch mit kleinen Einschränkungen)

3. JDBC
Mit JDBC habe ich schon ein paar Erfahrungen gemacht. Kann mir aber nicht vorstellen, wie man z.B. einzelne Zellen einer Exceltabelle schreiben kann. Jemand einen Plan?

Ein Beispiel, wie man per JDBC Excel Daten auslesen kann findest du hier:
http://www.tutorials.de/tutorials201081.html&highlight=Beispiele+Workshop
Schreiben kannst du dann ganz easy mit update ... set foo=78127 where nr = 32
Du kannst allerdings (IMHO) per JDBC/ODBC nur auf Zellen zugreifen, die eine Spaltenüberschrift besitzen, bzw. innerhalb eines Benannten-Datenbereichs existieren.

4. OLE mittels SWT
Hier habe ich schon ein Beispiel aus dem Forum getestet, welches eine Exceldiagramm einbindet. Nur weiß ich auch hier nicht, wie ich einzelne Zellen verändern kann.
Dass ist imho die mächtigste Variante, da du per SWT/OLE Combo Excel komplett automatisieren kannst. (Ist jedoch nicht ganz einfach...)

Gruss Tom
 
Danke Für deine schnelle Antwort!

Ich habe gehört, dass Mircosoft das Dateiformat ihrer Officedateien auf einen XML kompatibelen Standard umstellt. Aus diesem Grund bin ich hier ein bisschen am zweifeln. Aber mal prinzipiell gefragt. Du hast ein Excel Sheet mit Formatierung ausgelesen, deine Daten gesetzt und dann das Sheet überschrieben oder gibt es hier auch die Möglichkeit Daten direkt zu verändern ähnlich wie die update- Funktion bei sql?

Würde gerne SWT verwenden, um Excel via ActiveX bzw. OLE zu steuern. Kennt jemand vielleicht ein Tutorial für diesen Zweck?

Grüße!
 
Hallo nochmal!

Ich habe jetzt versuch mein Problem mit JDBC zu lösen. So richtig funktioniert mein Programm aber nicht. Ich kann zwar mit insert into ein Feld schreiben aber wenn ich eine zweite Zeile schreiben will, verschiebt sich die Zellenbezeichnung in meinem Exceldokument. Vielleicht fällt ja jemand was an meinem Code auf?
Code:
public void insert() {
		try {
			Statement stmt = dbCon.createStatement();
			try {
				stmt.executeUpdate("INSERT INTO test VALUES ('test')");
			} catch (SQLException sqle) {
				sqle.printStackTrace();
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}

Eine Zelle updaten geht gar nicht. Frage mich auch wie das gehen soll? Eine Update Anweisung sieht meiner Meinung nach immer wie folgt aus:
Code:
stmt.executeUpdate("UPDATE Tabelle SET Spalte1='test' WHERE Key=1");
Das Problem ist, wie komme ich an die richitige Bezeichnung für die Zeile bzw. den richtigen Key?

Hoffentlich könnt ihr mir helfen... Danke schon mal!

Grüße!
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück