PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [Java] Tabelle abspeichern



Sym
15-02-2004, 15:10
Hallo,

ich möchte den Inhalt einer JTable in eine Datei schreiben. Möglichst schön formatiert. Allerdings finde ich dazu keine elegante Lösung.

Meine Idee:

Die einzelnen Zellen mit Leerzeichen bis zu einer gewissen Grenze auffüllen und dann nacheinander in eine Datei schreiben.

Doch es muss auch schöner gehen, oder?

peschmae
15-02-2004, 18:06
Nicht unschön wäre natürlich HTML oder XML.

Allerdings solltest du noch ein bisschen genauer erläutern was du mit schön meinst. Tabs könnten eventuell einfacher (aber auch schwieriger) werden als Leerzeichenfüllen.

MfG Peschmä

Sym
15-02-2004, 18:11
Hi,

also, ich habe (bis auf die Spaltennamen) nur Double-Werte verschiedener Länge im DefaultTableModel.

Mein Programm ist schon etwas größer und das sind die Ergebnisse.

Jetzt kommt es halt zum speicher, damit man es später wieder vorrätig hat. Ist ja auch sinnvoll. :)

Nun ja, mit XML und HTML kenne ich mich leider noch nicht wirklich aus. Ich weiß, es soll nicht sehr schwer sein, aber bisher bin ich immer drumrum gekommen.

Das Ergebnis soll also ein Document sein, welches (ohne zu großen Aufwand für mich) eine leserliche Tabelle beinhaltet.

peschmae
15-02-2004, 18:58
Musst du die Tabelle nachher wieder mit dem Programm einlesen können? Wenn nein, dann denke ich ist HTML die einfachste und beste Lösung.

MfG Peschmä

Sym
15-02-2004, 19:04
Nein, einlesen muss ich die nicht.

Wonach muss ich denn suchen, wenn ich sie als HTML abspeichern möchte. Die Klasse JTable bringt sowas von Haus aus leider nicht mit.

sixfriends
15-02-2004, 19:11
Sollte relativ schön mit der Klasse StringBuffer gehen. Im Zweifelsfall: Länge des längsten Eintrags pro Spalte speichern und dann bei der Ausgabe sowas:



int max_len = Anzahl_Zeichen_Spalte;
String current = Aktuell_zu_schreibender_Eintrag.toString();
for (int i=0;i < max_len - current.length();i++) {
stdout.write(" ");
}
stdout.write(current);


Nicht schön, aber selten.... :rolleyes:

EDIT: Für HTML musst du einfach den Quelltext in eine Textdatei schreiben. Die Datei ist Plaintext, muss halt nur mit entsprechenden Befehlen formatiert werden --> selfhtml.teamone.de

Sym
15-02-2004, 19:28
Danke,

diese Art wäre meine Wahl gewesen. Aber ich dachte, dass es evtl. auch mit "richtiger" Formatierung ginge.

HTML ist eine tolle Sache, aber nur dafür es zu lernen vielleicht doch ein wenig overclocked.

Dann schaue ich mal...

sixfriends
15-02-2004, 20:40
Wenn ich dich richtig verstanden habe, ist das hier das einzige was du brauchst:


<html>
<head>
<title>Das, was in der Titelleiste des Fensters angezeigt wird</title>
</head>
<body>
<table border="1">
<tr>
<td align="right">Zelle 1.1</td>
<td>Zelle 1.2</td>
<td>Zelle 1.3</td>
</tr>
<tr>
<td>Zelle 2.1</td>
<td>Zelle 2.2</td>
<td>Zelle 2.3</td>
</tr>
usw.....
</table>
</body>
</html>

table definiert eine Tabelle, border gibt die Stärke des Rahmens an, align die Ausrichtung einer Zelle(left, right, center). Der Tag <tr> leitet eine neue Zeile ein, der Tag <td> eine neue Zelle in der aktuellen Zeile. Sollte das hier rauskommen (ungefähr):
______________________________
| Zelle 1.1 | Zelle 1.2 | Zelle 1.3 |
|--------------+---------------+--------------|
| Zelle 2.1 | Zelle 2.2 | Zelle 2.3 |
|--------------+---------------+--------------|
usw....

Sym
15-02-2004, 20:47
Original geschrieben von sixfriends
Wenn ich dich richtig verstanden habe, ist das hier das einzige was du brauchst:


<html>
<head>
<title>Das, was in der Titelleiste des Fensters angezeigt wird</title>
</head>
<body>
<table border="1">
<tr>
<td align="right">Zelle 1.1</td>
<td>Zelle 1.2</td>
<td>Zelle 1.3</td>
</tr>
<tr>
<td>Zelle 2.1</td>
<td>Zelle 2.2</td>
<td>Zelle 2.3</td>
</tr>
usw.....
</table>
</body>
</html>

table definiert eine Tabelle, border gibt die Stärke des Rahmens an, align die Ausrichtung einer Zelle(left, right, center). Der Tag <tr> leitet eine neue Zeile ein, der Tag <td> eine neue Zelle in der aktuellen Zeile. Sollte das hier rauskommen (ungefähr):
______________________________
| Zelle 1.1 | Zelle 1.2 | Zelle 1.3 |
|--------------+---------------+--------------|
| Zelle 2.1 | Zelle 2.2 | Zelle 2.3 |
|--------------+---------------+--------------|
usw....

That's nice. Thank's a lot. Dann werde ich das so noch einbringen. HTML ist ja was feines ;)

anda_skoa
16-02-2004, 18:37
Für Plaintextausgaben bzw die Formatierung der Zahlen im HTML könnte man sich die Klasse java.text.DecimalFormat ansehen.

Bei Plaintext, wo einzelne Spalten mit einem bestimmten Trennzeichen (meistens , oder ; aber auch tab) getrennt sind, hat man eine leichte Importmöglichkeit in Tabellenkalkulationen erreicht, sogenannte CSV (Comma separated values) Dateien

Ciao,
_

peschmae
16-02-2004, 20:49
An die Tabellenkalkulation als Möglichkeit hab ich noch gar nicht gedacht :(

Ist aber ne gute Idee - am besten implementierst du beides. :D

MfG Peschmä

Sym
16-02-2004, 23:14
Original geschrieben von anda_skoa
Für Plaintextausgaben bzw die Formatierung der Zahlen im HTML könnte man sich die Klasse java.text.DecimalFormat ansehen.

Bei Plaintext, wo einzelne Spalten mit einem bestimmten Trennzeichen (meistens , oder ; aber auch tab) getrennt sind, hat man eine leichte Importmöglichkeit in Tabellenkalkulationen erreicht, sogenannte CSV (Comma separated values) Dateien

Ciao,
_

Jupp,

darauf bin ich heute auch gestoßen und habe nun alle drei Möglichkeiten eingebaut. HMTL, CSV und formatiertes PlainText.

Danke, ihr habt mir sehr geholfen.