Hallo liebe Java-Gemeinde!
Ich möchte gerne eine .txt/.doc-Datei erstellen, die als DatenGrundlage für einen Word-Serienbrief dient. Dabei sollen Datensätze aus meinem Prog ausgelesen werden und gerade in diese Datei geschrieben werden.
(Hinweis: ‚MeinDatenModell‘ ist eine Klasse, die meine DatenStruktur wiedergibt)
Exemplarisch habe ich mal 2 Beispieldatensätze direkt erzeugt.
//Methode zum Exportieren der Daten nach Word Serienbrief
public void doKlasseExport(){
MeinDatenModell Ueberschrift = new MeinDatenModell(100000, „Nachname“,„Vorname“);
MeinDatenModell Person1 = new MeinDatenModell(2,„Winzig“,„Werner“);
MeinDatenModell MeinExport = null;
Vector ExportListe = new Vector();
ExportListe.addElement(Ueberschrift);
ExportListe.addElement(Person1);
String ExportNachname;
String ExportVorname;
String GesamtExport ="";
int Vectorlaenge = ExportListe.size();
//GesamtExport-Zeichenkette erstellen
for (int j = 0; j
Moien
Ich möchte gerne eine .txt/.doc-Datei erstellen,
.txt geht, .doc wird mit den normalen java klassen nicht geht. Frag M$ wieso.
> ObjectOutputStream out = new ObjectOutputStream(
> new FileOutputStream("SerienbriefDaten.doc"));//\*\*\*\*
> out.writeObject(GesamtExport);
Die 2 Zeilen sind falsch. Du brauchst keinen ObjectOutputStream, du willst ja Text ausgeben und keine java-Objecte. Wenn du mit writeObject was schreibst kommt das java-Object raus, nicht sein Inhalt. Richtig ist:
FileOutputStream out = new FileOutputStream("SerienbriefDaten.doc");
out.write(GesamtExport.getBytes());
getBytes erzeugt ein byte-array das als Inhalt die Zeichenkette hat.
¬í |t ) „Nachname“ „Vorname“
„Winzig“ „Werner“
Ja, die ersten paar Zeichen sind die Identifikation für ein String.
Das habe ich doch gar nicht geschrieben!!
Doch!
cu
Hallo Oliver.
try {
ObjectOutputStream out = new ObjectOutputStream(
new FileOutputStream(„SerienbriefDaten.doc“));//****
out.writeObject(GesamtExport);
out.close();
}
catch (IOException e){
System.err.println();
}
Warum benutzt du einen ObjectOutputStream?
Für Dateiausgaben würde ich folgendes Konstrukt benutzen:
BufferedWriter bw = new BufferedWriter(new FileWriter("Datei.txt"));
Word Dokumente enthalten ausserdem noch eine Menge mehr Informationen als den reinen Textinhalt. Es wäre daher vielleicht sinnvoll, wenn du im Netz nach entsprechenden Bibliotheken suchst. Ich weiß, dass es sowas für Excel gibt, daher nehme ich mal stark an, dass es auch etwas entsprechendes für Word gibt.
Mithilfe dieser Bibliotheken kann man meistens (mehr oder weniger komfortabel) richtige Word Dokumente erstellen.
Gruss,
Chris
Jetzt Funktioniert’s!
Moien
Ich möchte gerne eine .txt/.doc-Datei erstellen,
.txt geht, .doc wird mit den normalen java klassen nicht geht.
Frag M$ wieso.
Doch, doch! DatenQuellen für Serienbriefe können sowohl in .txt. als auch in .doc sein! Die Felder orientieren sich nur nach den Anführugszeichen. Steuerzeichen sind NICHT notwendig!
Der Serienbrief selber MUSS natürlich nicht nur als .doc-Datei gespeichert sein, sondern auch das Format MIT Steuerzeichen haben.
ObjectOutputStream out = new ObjectOutputStream(
new FileOutputStream(„SerienbriefDaten.doc“));//****
out.writeObject(GesamtExport);
Die 2 Zeilen sind falsch. Du brauchst keinen
ObjectOutputStream, du willst ja Text ausgeben und keine
java-Objecte. Wenn du mit writeObject was schreibst kommt das
java-Object raus, nicht sein Inhalt. Richtig ist:
FileOutputStream out = new
FileOutputStream(„SerienbriefDaten.doc“);
out.write(GesamtExport.getBytes());
getBytes erzeugt ein byte-array das als Inhalt die
Zeichenkette hat.
Tja, aller Anfang ist schwer! Mir war leider nicht bewusst, dass das Einlesen eines Objects Steuerzeichen verursacht!! Aber zum Glück gibt es ja einen Pumpkin!!!
Die Lösung ist perfekt. Es funktioniert genau so wie es soll!!
Danke nochmals
Gruß
oliver
¬í |t ) „Nachname“ „Vorname“
„Winzig“ „Werner“
Ja, die ersten paar Zeichen sind die Identifikation für ein
String.
Das habe ich doch gar nicht geschrieben!!
Doch!
cu
Hi Chris,
danke für deine Antwort! Ich habe es so wie von pumpkin vorgeschlagen gemacht. Es funktioniert hervorragend!!
Danke nochmals
Gruß
Oliver
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]