Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Word auslesen (https://www.delphipraxis.net/192875-word-auslesen.html)

juelin 29. Mai 2017 17:16

Word auslesen
 
Hi zusammen,
habe jetzt den ganzen Tag nach einer Lösung im Forum gesucht, aber nix gefunden.
Ich habe Delphi XE5
Ich möchte ein Wordfile (Word 2003) unsichtbar auslesen und den Text weiter verarbeiten.
Benutze ein OLEContainer dazu.

Code:
OleContainer1.CreateObjectFromFile(h2, False);
OleContainer1.Run;
OleContainer1.Align := alClient;
OleContainer1.SizeMode:= smScale;
Word:=OleContainer1.OleObject;

.......

OleContainer1.Close;
OleContainer1.DestroyObject;

h2 enthält Pfad und Wordfilename.
WOrd ist vom Typ OleVariant.

Soweit klappt auch alles.
Aber wie lese ich jetzt den Text aus dem Wordfile aus?
Wenn geht Beispiel geben.

Danke und Gruß
Jürgen

Luckie 29. Mai 2017 19:34

AW: Word auslesen
 
Bitte setz deinen Code in entsprechende Code-Tags zur besseren Lesbarkeit.

p80286 29. Mai 2017 22:39

AW: Word auslesen
 
Versuch es mal mit
.Range.WholeStory oder range=wholeStory
ich hab gerade leider kein Word zur Verfügung um dort in die Hilfe zu schauen.

Gruß
K-H

Bernhard Geyer 30. Mai 2017 06:26

AW: Word auslesen
 
Ich speicher das immer als Textdatei und lese dann den Text von dort.

HolgerX 30. Mai 2017 07:45

AW: Word auslesen
 
Hmm..

(Wieso OleContainer? :? )

Mach es einfach so:

Delphi-Quellcode:
uses
  ComObj;

const
  wdDoNotSaveChanges = $00000000;
  wdSaveChanges = $FFFFFFFF;
  wdPromptToSaveChanges = $FFFFFFFE;

function GetWordText(AFileName : string):string;
var
  WordApp : OleVariant;
  Doc : OleVariant;
  SaveChanges: OleVariant;
  tmpStr : string;
begin
  WordApp := CreateOLEObject('Word.Application'); // Word-Verbindung zu neuem Word
  try
    WordApp.Documents.Open(AFileName);           // Datei laden
    try
      WordApp.Visible := false;                  // Unsichtbar machen
      Doc := WordApp.ActiveDocument;
      Doc.ActiveWindow.Selection.WholeStory;     // Alles Markieren

      tmpStr := Doc.ActiveWindow.Selection.Text; // Markierten Text lesen
      Result := StringReplace(tmpStr,#13,#13#10,[rfReplaceAll]); // Zeilenumbrüche korrigieren

      SaveChanges := wdDoNotSaveChanges;
      WordApp.Quit(SaveChanges, EmptyParam, EmptyParam); // Word Schließen ohne speichern
    except
      WordApp.Visible := true;                   // Auf jedenfall sichtbar machen, wenn ein Fehler auftritt
    end;
  finally
    WordApp := Unassigned;                       // Verbindung lösen
  end;
end;

Alles hierzu habe ich aus den ersten Hits zu 'Delphi Word Text' googlen entnommen. ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:10 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz