# editierbare Datei erstellen



## neela (15. Aug 2011)

Hallo

mir wurde die Aufgabe gestellt eine editierbare Datei zu erstellen.
Diese Datei besteht aus einen konstanten Teil und einen variablen Teil der aus einer XML abgeleitet wird.
Meine erste Idee war es eine .doc zuerstellen, aber wie ich mitbekommen habe ist das Package POI von Apache noch nicht sehr ausgereift.
Oder weis jmd was gegenteiliges zu berichten.

Meine zweiter Gedanke war eine rtf-Datei mit Hilfe von JasperReport zu erstellen. Wisst ihr da welche Klassen  ich von iReport dafür importieren muss? 

Und abschließend noch ein paar Fragen.
Was schätzt ihr wie lange würde die Umsetzung dafür dauern?
Oder wisst Ihr vlt andere Möglichkeiten um das Problem zu lösen.

Vielen Dank


----------



## Marcinek (15. Aug 2011)

Hallo,

was ist den eine  editierbare Datei???

Ich kann bei mir auf dem Rechner jede Datei edieren.

Wenn es ein Word - Dokument sein soll, dann würde ich Apache POI nehmen oder C#.NET.

Ich würde sagen abhängig von dem XML Teil => 2-3 Tage.

Gruß,

Martin


----------



## Gonzo17 (15. Aug 2011)

So genau kann ich mir darunter auch nichts vorstellen, denn wie Marcinek schon sagte, eigentlich ist doch jede Datei editierbar. Und das mit dem "konstanten Teil" und "variablen Teil" ist doch bei jeder Datei der Fall, nämlich in Form von Header und Inhalt (wenn ich mich nicht täusche).

Wie auch immer, bezüglich Apache POI kann ich nur sagen, dass mit 3.7 alles funktioniert hat im Bezug auf Word und Excel. Läuft bei uns ohne größere Probleme. Die neue Version 3.8 soll meines Wissens in einigen Wochen veröffentlicht werden, aktuell kannst du dir schon eine Beta-Version von 3.8 ziehen und die neuen Funktionen testen. Der Einstieg ist auch nicht wirklich schwer, es genügt die Bibliotheken zu laden und einfach mal den Beispiel-Code zu probieren und schon hast du ein .doc/.docx erstellt.


----------



## neela (15. Aug 2011)

na pdf- dateien kann man nur schwer verändert 

also ich meinte schon doc rtf und so etwas


----------



## Marcinek (15. Aug 2011)

Ich kann in PDF Dateien ganz normal rumschreiben ;D

Für RTF, Doc(x) ist Apache POI dein Ansprechpartner ..


----------



## r.w. (15. Aug 2011)

> ...
> mir wurde die Aufgabe gestellt eine editierbare Datei zu erstellen.
> ...



Also wenn das die einzige Vorgabe ist, 
wäre eine einfach Textdatei auch nicht verkehrt. ;-)

VG ROlf


----------



## AlexSpritze (15. Aug 2011)

Soll die Datei von Hand editierbar sein oder durch Programme manipuliert werden?

Eine Möglichkeit, die mir noch einfällt, wäre mit Hilfe von XSL-FO (Apache FOP) eine Struktur/ein Format in einer Datei anzulegen, und dann in eine zweite Datei die Daten zu schreiben. Wenn du die beiden Dateien mit XSL-FO zusammenführst, kommt z.B. ein PDF raus, oder RTF/Text, je nach Einstellung.


----------



## neela (15. Aug 2011)

jep die Datei soll der Nutzer von Hand anpassen können bsp in sein vorgeschriebenes Layout bringen


----------



## AlexSpritze (15. Aug 2011)

neela hat gesagt.:


> jep die Datei soll der Nutzer von Hand anpassen können bsp in sein vorgeschriebenes Layout bringen



XSL-FO würde sich anbieten, wenn du Layout von Inhalt trennen willst. Aber in deinem Fall scheint das nicht so notwendig?


----------



## neela (15. Aug 2011)

nein das Layout ist nich ganz so wichtig 
ich liefere im Prinzip den Nutzer nur einen Formatieren Text  den die dann für ihre Briefe entsprechenden Aufbereiten. Da ich ja schlecht 20 verschiedene layouts ( Kopfzeilen) etc mit einarbeiten kann. 
Bzw würde es dadurch sehr komplex werden und das is nicht gewünscht


----------



## neela (16. Aug 2011)

ermöglicht POI auch das Verändern vorhandener doc´s
z.B ich habe in einen Vorhanden doc Parameter wie beispielsweise *blubber* und möchte die nun mittels Java ersetzen? 
Geht dies? Wenn ja wie sucht man diese Parameter dann aus dem Text heraus und überschreibt sie ?
Habe bis jetzt keine wirkliche Lösung gefunden 

Danke für eure Hilfe


----------



## Gonzo17 (16. Aug 2011)

neela hat gesagt.:


> ermöglicht POI auch das Verändern vorhandener doc´s



Aber sicherlich. Ich meine, schon rein von der Logik. Du kannst damit .doc/.docx lesen und du kannst es schreiben. Zwischendrin kannst du damit tun, was du möchtest.



neela hat gesagt.:


> z.B ich habe in einen Vorhanden doc Parameter wie beispielsweise *blubber* und möchte die nun mittels Java ersetzen?



Ja klar mit Java, immerhin ist die Apache POI Bibliothek für Java.



neela hat gesagt.:


> Geht dies? Wenn ja wie sucht man diese Parameter dann aus dem Text heraus und überschreibt sie ?



Wie jetzt? Einen Parameter der Datei oder ein Stück Text in der Datei? Das macht schon nen Unterschied. Allerdings kann ich dir in beiden Fällen keine konkrete Antwort geben und nur sagen: versuch es. Lies eine Datei ein, schau was dir für Methoden zur Verfügung stehen und versuche dein Glück. Ein Blick in die Doku kann da sicherlich auch nicht schaden (falls es dort sowas gibt).


----------



## neela (17. Aug 2011)

Ich wollte mich nun mal in POI einarbeiten 
jedoch scheitere ich gerade bei dem einbinden in Eclipse 
ich habe mir von der Apacheseite den zipfile 3.7 gedownloadet da es ja kein .jar is muss ich nun alle .java die ich nutze selbst einbinden. 
Nun benötige ich für den Anfang  
org.apache.poi.hwpf.HWPFDocument;
org.apache.poi.hwpf.usermodel.Range;
org.apache.poi.hwpf.usermodel.CharacterProperties;

jedoch finde ich alle Dateiein nicht im archiv 

könnt ihr mir vlt weiter helfen ob es doch noch eine .jar dazu gibt damit ich nicht jede einzelnen .java einbinden muss 
oder könnt ihr mir sagen wo ich die fehlenden Dateien finde


----------



## Gonzo17 (17. Aug 2011)

???:L

Sorry, aber dann lade dir eben die Binary Distribution und nicht die Source Distribution.

Apache Download Mirrors

Da sind alle jars drin, die du brauchst. Da ist dann auch Dokumentation (wenn auch recht wenig) dabei. Schaus dir nochmal an. Ich denke wie man libs einbindet weißt du?


----------



## SlaterB (17. Aug 2011)

hier gehts weiter
http://www.java-forum.org/allgemeine-java-themen/123061-doc-text-aendern.html


----------

