# Mit Java in eine Excel Datei schreiben



## bestron (6. Oktober 2008)

Hallo, ich bin neu im Forum und hoffe ich habe den Thread ins richtige Unterforum getan.

Ich suche schon seit ein paar Tagen eine API um mit Java in Excel-Files zu schreiben. Ich will bloss in etwa 30 Felder reinschreiben, nichts auslesen und auch kein neues File erstellen.

Ich habe unter anderem hier im Forum die POI-HSSF Java-API (http://poi.apache.org/hssf/index.html) gefunden. Ich hab mir mal hier die ZIP-Datei runtergeladen und dann die 3 JAR-Files aus dem "lib" Ordner meinem Projekt hinzugefügt. Danach habe ich z.B. versucht auf die Klasse HSSFWorkbook zuzugreifen, die war aber laut Eclipse unbekannt und ich konnte sie auch nicht importieren.
Kann es nun sein, dass ich eine falsche Datei heruntergeladen oder die falschen libs hinzugefügt habe?

Jedenfalls habe ich es noch mit jexcel(http://jexcelapi.sourceforge.net/) probiert. Damit konnte ich auch neue Excel-Files erstellen und bereits existierende verändern. Meine Excel-Datei ist aber relativ gross und ich bekomme immer die Meldung "java.lang.OutOfMemoryError" da jexcel erst eine Kopie der Datei erstellen muss, um sie zu verändern.

Als letztes habe ich noch Jxcell (http://www.jxcell.net/) gefunden - jedoch keine Anleitung dazu.

Gut nun zurück zur eigentlichen Frage: Kann mir gerade noch jemand eine andere API nennen die nur in Excel-Files schreibt und am besten sehr klein ist. Ich brauche wirklich nur die Funktion zum Schreiben und keine sonstige.
Wenn nicht, könnte mir jemand mit der POI-HSSF helfen?

Bin noch relativ neu in der Javaprogrammierung, ich hoffe ich habe die richtigen Begriffe verwendet.


Gruss bestron


----------



## Andibert (7. Oktober 2008)

Exel stellt eine COM (Component Objekt Moddel) Schnittstelle zur Verfügung.

Da die aber eine native Bibliothek ist musst du über eine Bridge dran.
Am besten für dich dürfte com4j passen. Damit kannst du dir für die dll Wrapperklassen generieren und wie eine normale java Bibliothek verwenden.

MfG

Andibert


----------



## joschi70 (7. Oktober 2008)

Hi,

mit POI kenn ich mich nicht wirklich aus, aber ich versuch mal zu helfen 

Für POI sollte eigentlich die Datei _poi-3.1-FINAL-20080629.jar_ in Deinem Classpath ausreichend sein.
Die Datei befindet sich im POI ZIP File. Das File kannst Du hier herunterladen: 
http://mirror.valtech.de/apache/poi/release/bin/poi-bin-3.1-FINAL-20080629.zip.

Beispiele gibt's hier: http://poi.apache.org/hssf/quick-guide.html.

Gruß
joschi


----------



## bestron (7. Oktober 2008)

Danke euch beiden. Ich habe mich für die Variante von joschi entschieden, bei der anderen habe ich nicht wirklich durchgeblickt.
Das Schreiben in eine bereits existierende Datei funktioniert ganz gut, nur die Excel-Datei in die ich schreiben will, ist 15000kb gross und ich erhalte immer den Fehler "java-lang.OutOfMemoryError" was auch verständlich ist bei einer solchen Grösse.
Als Lösung habe ich gedacht, ich schreibe die Daten in eine andere Datei und hole sie dann mittels Makro, das beim öffnen der Arbeitsmappe ausgeführt wird, aus der Datei, sofern das möglich ist.
Oder gibt es da noch eine andere Möglichkeit?


----------



## Thomas Darimont (8. Oktober 2008)

Hallo,

zum JExcel OutOfMemoryError schau mal hier:
http://www.tutorials.de/forum/java/309925-jexcel-outofmemory-bei-ca-25-000-zeilen.html

WorkbookSettings setting = new WorkbookSettings(); 
setting.setArrayGrowSize( 5 * (int)Math.pow( 1024, 2) ); 

Gruß Tom


----------



## bestron (10. Oktober 2008)

Unterdessen habe ich alles mit diese HSSF-POI Api gemacht und es funktioniert auch ganz gut, nur halt das Schreiben in die 15MB grosse Excel-Datei klappt verständlicherweise nicht.

Gibt es sowas wie Thomas für JExcel gepostet hat auch bei HSSF-POI?
Ich habe die Quick Guide und das HOWTO (http://poi.apache.org/hssf/index.html angeschaut, jedoch nichts dazu gefunden, bloss das die Performance bezüglich RAM-Verbraucht bald verbessert werden soll.

Trotzdem schonmal danke für die Hilfe.


----------

