# Excel Datei in einem Java Programm mit GUI darstellen



## Blackkeeper (2. Jul 2010)

Guten Tag,

Hab mich schon ein wenig durch das Forum gelesen, bisher aber nix passendes gefunden.

Ich möchte in meinem Programm direkt eine excel tabelle darstellen. Weiss jedoch nicht wie.
Hab viele Codes gesehen, aber das hat meisst nur das Excel Programm geöffnet.

Später hätte ich dann noch vorgehabt eine kleine Suche dort einzubauen nach speziellen Werten.


Habt ihr vielleicht eine Ahnung wie ich das am besten anstellen könnte ? Gibt es vielleicht eine leichtverständliche Doku zum Thema Excel und Java (bisher hab ich nur Bahnhof verstanden)

Mfg Blackkeeper


----------



## agentone (2. Jul 2010)

Zunächst müsstest du die Datei als Tabelle einlesen. 
Excel Sheet lesen und schreiben - Java - administrator
Es gibt also eigenständige libs und solche, die auf jdbc-odbc aufbauen.

Danach kannst du die Tabelle in Swing darstellen:
How to Use Tables (The Java™ Tutorials > Creating a GUI With JFC/Swing > Using Swing Components)


----------



## Astroid (2. Jul 2010)

Hallo,

wenn die Daten in der Exceltabelle nicht formatiert sein müssen und du nur ein Tabellenblatt benötigst, reicht es eventuell auch, wenn du diese in eine CSV-Datei schreibst. Diese kann Excel ohne Probleme öffnen und darstellen.

--> http://de.wikipedia.org/wiki/CSV_(Dateiformat)


----------



## alderwaran (2. Jul 2010)

java kann tabellen darstellen, die felder einer java tabelle kannst du frei gestalten - also es kann außer einem string z.b. auch eine grafik angezeigt werden, oder ein feld dessen wert sich aus den werten anderer felder errechnet.
was java nicht nativ unterstützt ist die anzeige von excel dokumenten, also dem proprietären microsoft format - das ist dann auch der grund warum meißt microsoft excel gestartet wird um diese dateien anzuzeigen.

eine möglichkeit, die hier auch schon vorgeschlagen wurde, ist das geschlossene format .xls in eines umzuwandeln mit dem dein programm etwas anfangen kann - csv z.b., dabei gehen naturlich spezielle formatierungen und funktionen verloren, formeln, bilder, schriftarten etc.


mit etwas glück hat aber vielleicht jemand sich die arbeit gemacht einen xls-renderer in java implementiert den du in ein eigenes programm einbauen kannst.. schließlich kann openoffice auch einigermaßen mit xls umgehen, also reverse engineered wurde das schon 


edit:
"Apache POI - the Java API for Microsoft Documents" ist vielleicht was.


----------



## Gast2 (2. Jul 2010)

POI taugt eigentlich ganz gut. Solange man nichts zu exotisches mit Excel gemacht hat ist .xls lesen und schjreiben eigentlich ganz alltagstauglich.

Ich würde mit POI die .xls lesen und den Inhalt in einer JTable darstellen - und anders herum halt JTable wieder in ein .xls schreiben. Einen .xls Renderer hat POI auch nicht.


----------



## Blackkeeper (2. Jul 2010)

```
JTable jTable = new JTable();
String excelFileName = "excelFileName.xls";
File file = new File(excelFileName );  
JProgressBar progressBar = new JProgressBar(); 
JTableReadTableModelTask task = new JTableReadTableModelTask(file, null, progressBar, jTable);
task.execute();
```

Hab den code hier gefunden, Netbeans meckert soweit auch nicht,
außer das er den Befehl execute nicht erkennt.


----------



## alderwaran (2. Jul 2010)

joa. da brauchst du halt das JComponentPack von Java Component Vendor - Extreme Component.
eval version downloaden, eval code anfordern... dann kennt dein c&p beispiel auch die entsprechenden klassen.


----------



## Blackkeeper (2. Jul 2010)

er erkennt das execute trotzdem noch nicht -.-


----------



## alderwaran (2. Jul 2010)

hast du das jar file als library eingebunden?
tools->librarys->new library (namen angeben) -> add jar/folder (das gedownloadete jar-file angeben)
dann
rechtsklick auf dein projekt->properties->libraries->add library (oben angegebenen namen aus der liste angeben)

jetzt hast du die library netbeans bekannt gemacht und deinem projekt diese lib zugeordnet, also sollte dein quellcode die klassen und ihre methoden nun kennen. zum schluss check noch mal deine import liste.


----------



## Blackkeeper (2. Jul 2010)

Hab es so gemacht wie du beschrieben hattest, danke nochmal.
Jedoch wird die Methode execute() immernoch nicht erkannt in dem Code.

Zum Thema imports, dort kamen keine hinzu. Weiss leider den Namen nicht um die manuell reinzuschreiben.


----------

