Worddokumente mit RichEdit, Memo, etc. öffnen



  • Hallo Leute,

    Ich weiß, dass man mit einer RichEdit oder einer Memo keine Bilder, Tabellen, etc. darstellen kann. Jedoch wollte ich fragen, ob jemand eine Möglichkeit kennt beispielsweise den Text aus einem Worddokument herauszuziehen und so darzustellen, wie er in dem Worddokument dargestellt wird (Formatierung, richtige Position, ...).

    Es wäre toll, wenn ihr mir etwas Code senden könntet.

    Vielen Dank,
    Euer Entertainer



  • ja geht du musst das word document aber als rtf (rich text format) speichern dann kanst du einfach mit einem OpenDialog die Daten in ein RichEdit laden.

    void __fastcall TForm1::oeffnenClick(TObject *Sender)
    {
    OpenDialog1->InitialDir = "c:\\";
    OpenDialog1->Filter = "Textdateien, RichTextFormat (*.txt;*.rtf)|*.TXT;*.RTF";
    if (OpenDialog1->Execute())
    RichEdit1->Lines->LoadFromFile(OpenDialog1->FileName);
    }
    

    gruss titanico



  • Hallo Titanico,

    Ich möchte mich bei dir für deine Antwort bedanken, doch das ist nicht mein Problem. Ich möchte die Inhalte, beispielsweise den Text, aus einem *.doc -Dokument herausziehen.

    Kennt hierfür jemand eine Lösung???

    Vielen Dank,
    Euer Entertainer



  • Hallo Entertainer!

    Hast du es mal mit den Komponenten zue Ansteuerungs von MS Office auf der Registerkarte "Servers" versucht?
    Da das etwas kompliziert ist, kann ich dir jetzt keinen Code geben, aber du kannst ja mal in die Borland-Hilfe oder im Internet (->Google) gucken.
    Ich weiß allerdings nicht, ob man damit auch die Formatierung aus Worddokumenten übernehmen kann (müsste aber eigentlich irgendwie gehen).

    Gruß m-hoeppner



  • Danke für die Antwort,

    Aber gibt es auch einen Weg ohne diese Office- Komponenten?

    Somit könnte ich nämlich noch etwas über den allgemeinen Umgang mit solchen Dokumenten lernen.

    Vielen Dank,
    Euer Entertainer



  • Mit den Komponenten der VCL geht das sicher nicht.

    Gruß m-hoeppner



  • Entertainer,

    Entertainer schrieb:

    Aber gibt es auch einen Weg ohne diese Office- Komponenten?

    die Komponente TRichView kapselt irgendwie die Text-Konverter-Funktionen ohne Word öffnen zu müssen. Man kann also z.B. rtf in doc umwandeln lassen. Aber das währe ein wenig wie mit Kanonen auf Spatzen zu schiessen und das Prinzip ist letztlich das selbe.
    Ich würde es vorziehen, per OLE-Automation im Hintergrund ein Word-Dokument zu öffen und dann ein SaveAs-RTF ausführen zu lassen (die Office-Komponenten arbeiten vermutlich nach dem selben Prinzip).
    Zu beachten ist weiterhin, daß das bloße Umwandeln einer doc-Datei in rtf nicht sicherstellt, daß sämtliche Inhalte auch 1:1 in Deiner RTF-Komponente auftauchen.



  • dschensky schrieb:

    Ich würde es vorziehen, per OLE-Automation im Hintergrund ein Word-Dokument zu öffen und dann ein SaveAs-RTF ausführen zu lassen [...]

    Was natürlich voraussetzt, dass Word auf dem Zielrechner installiert ist. Und wenn das so ist dann macht ein Konverter auch nicht wirklich Sinn, da könnte der User doch gleich Word benutzen, oder?



  • Jansen schrieb:

    Was natürlich voraussetzt, dass Word auf dem Zielrechner installiert ist. Und wenn das so ist dann macht ein Konverter auch nicht wirklich Sinn ...

    OLE-Automation setzt natürlich ein installiertes Word voraus. Was den Konverter betrifft, könnte ich mir vorstellen, daß sich die Bibliotheken auch ohne Word installieren und verwenden lassen - ist aber, wie gesagt, nur eine dreiste Vermutung.

    Jansen schrieb:

    ...da könnte der User doch gleich Word benutzen, oder?

    Naja, das hängt ein wenig davon ab, wofür Entertainer das eigentlich braucht. Wenn es z.B. so etwas wie ein Dateibetrachter werden soll, würde ich versuchen das Hochfahren von Word zu vermeiden.

    Entertainer schrieb:

    Ich weiß, dass man mit einer RichEdit oder einer Memo keine Bilder, Tabellen, etc. darstellen kann.

    Hier wollte ich noch anmerken, daß das mit RTF prinzipiell alles geht. Und wenn nicht, liegt das tatsächlich nur an der verwendeten Komponente.

    ----Edit--------
    Konverter ohne Word scheint möglich zu sein



  • dschensky schrieb:

    Konverter ohne Word scheint möglich zu sein

    Hmm, der Satz "uses the converters installed on your system to convert to and from RTF" deutet für mich darauf hin, dass hier irgendwelche durch MS Word installierten Konverter gemeint sind, eine Installation desselben also weiter notwendig ist.

    versuchen das Hochfahren von Word zu vermeiden
    

    Das lässt sich bei OLE-Automation doch auch nicht vermeiden, oder?
    Ich denke, allenfalls das UserInterface bleibt versteckt, das Programm wird im Hintergrund trotzdem geladen.

    Aber natürlich kann man Word-Dokumente auch komplett ohne Word auf dem Rechner konvertieren, siehe OpenOffice. Vielleicht gibt's da ja eine entsprechende Lib.



  • Wenn es eine Möglichkeit gibt vielleicht sogar Bilder, Tabellen, etc. darzustellen wäre dies natürlich noch besser. Ich wollte mich jedoch nur zuerst mit dem Text beschäftigen um später zu weiteren Dingen zu kommen. Ich hatte vor mit einem RichEdit den Text darzustellen und diesen RichEdit als Parent für andere Komponenten beispielsweise TImage für Bilder, TStringGrid für Tabellen ... zu nutzen.

    Mir kommt es besonders darauf an, dass man etwas handfestes, also einen Sourcecode, hat und eben nicht auf andere Programme, wie bei OLE, angewiesen ist.

    Wie ich sehe beschäftigen sich auch andere mit diesem Problem und ich freue mich sehr, dass einige mir versuchen zu helfen, um das Problem zu lösen.

    Ich habe schon sehr veiele Suchbegriffe bei Google eingegen, bis jetzt jedoch noch nichts gefunden. Daher hoffe ich, dass die Diskussionen um dieses Thema weitergeführt werden.

    Falls wir gemeinsam zu einer Lösung kommen ist diese Diskussion mit Sicherheit auch einen Eintrag in der FAQ wert.

    Schon jetzt möchte ich mich bei allen recht herzlich bedanken,
    Euer Entertainer



  • Entertainer schrieb:

    Ich hatte vor mit einem RichEdit den Text darzustellen und diesen RichEdit als Parent für andere Komponenten beispielsweise TImage für Bilder, TStringGrid für Tabellen ... zu nutzen.

    Das wäre aber ein extremer Aufwand und am Ende doch nur eine Bastellösung. Besser wäre es wohl, eine der vorhandenen RichEdit2.0 oder 3.0-Komponenten zu verwenden und den eigenen Programmieraufwand auf die DOC-RTF-Konvertierung zu beschränken. Falls es da nicht doch schon irgendwo eine fertige Lösung gibt.

    Aber was mir bei deiner Beschreibung immer noch fehlt ist, was dein Programm am Ende eigentlich können bzw. machen soll. Willst du einfach einen unabhängigen Viewer oder Editor für Word-Dokumente schreiben?



  • Ich verfolge im Moment kein bestimmtes Ziel. Mich interessiert einfach das Öffnen eines derart weit verbreiteten Foramts wie das *.doc -Dateiformat eines ist. Zunächst einmal würde natürlich ein Viewer ausreichen. Das angestrebte Ziel ist jedoch natürlich auf dem Viewer aufbauend die Möglichkeit die Einträge des Dokuments verändern zu können.

    Es wäre natürlich super, wenn es, wie du sagst, eine fertige Lösung schon geben würde, doch bisher habe ich noch nichts passendes gefunden.

    Dennoch vielen Dank,
    Dein Entertainer



  • naja, gehn muss es irgendwie. OpenOffice und Staroffice können die Formate ja auch übernehmen.

    Frag mich aber nicht wie.
    Ist Staroffice oder eventuell OpenOffice nicht OpenSource ? dann würd ich da mal reinschauen.....



  • Jansen schrieb:

    Das lässt sich bei OLE-Automation doch auch nicht vermeiden, oder?

    Nein, bei OLE-Automation wird immer ein Word gestartet, aber die Text-Konverter funktionieren vielleicht auch ohne Word. Das ist es, was man herausbekommen muß.

    AndreasW schrieb:

    naja, gehn muss es irgendwie. OpenOffice und Staroffice können die Formate ja auch übernehmen.

    Frag mich aber nicht wie.

    Ich denke, nachdem Microsoft die Spezifikationen für das DOC-Format freigegeben hat, haben sich bei StarOffice einfach ein paar Leute hingesetzt und mühevoll das Einlesen dieses Formates implementiert. Deswegen ist ein "handfestes" (Entertainer) Stückchen Quellcode, das mal so eben das Word-Format einliest, vermutlich auch nur eine Illusion. Dafür ist das Format einfach zu komplex.
    Die Text-Konverter kommen von Microsoft und damit eben auch von Leuten, die das DOC-Format aus dem ff kennen (sollten).



  • Jansen schrieb:

    Da könnte der User doch gleich Word benutzen, oder?

    Das ist die Idee, wenn man voraussetzt, dass MSWord installiert ist, kann man doch gleich ShellExecute() nehmen.


Log in to reply