// Eine kleine Klasse zum einfachsten Handling von OpenOffice Dokumenten // Sollte noch um viele Funktionen erweiterbar sein // hab mal erst nur die Wichtigsten eingebaut // Diese Funktionen funktionieren auch mit Word .dot Files, // Das ersetzen geht sogar mit OpenOffice schneller als mit Word selbst.
interface uses Windows, SysUtils, comobj;
type TOLE_OpenOffice = class(TObject)
private // Da OpenOffice Pfadangaben im Unixstyle haben will werden Backslashes umgewandelt function ToOOPfad(Pfad:String):String;
protected // Das OLE-Objekt, die Desktopinstanz und das Dokument selbst.
Service, Desktop, Document : Variant; public // Erstellt ein OLE Objekt; function Connect: boolean; // Oeffnet eine neues Dokument function Open:boolean;OVERLOAD; // Laden eines forhandenen Dokuments function Open(datei:string):boolean;OVERLOAD; // Ein Bookmarkfeld ersetzen ( Nicht Case Sensitiv) function ErsetzeBookmark(name,inhalt:String):boolean; end;
implementation
function TOLE_OpenOffice.Connect:boolean; var
rueckgabe : boolean; begin try
Service := CreateOleObject('com.sun.star.ServiceManager');
Desktop := Service.createInstance('com.sun.star.frame.Desktop');
rueckgabe := true; except
rueckgabe := false; end;
result := rueckgabe; end;
function TOLE_OpenOffice.Open:boolean; var
rueckgabe : boolean; begin try
Document := Desktop.LoadComponentFromURL( 'private:factory/swriter', '_blank',
0,
VarArrayCreate([0, - 1], varVariant));
rueckgabe := true; except
rueckgabe := false; end;
result := rueckgabe; end;
function TOLE_OpenOffice.Open(datei:string):boolean; var
rueckgabe : boolean; begin
datei := ToOOPfad(datei); try
Document := Desktop.LoadComponentFromURL(
datei, '_blank',
0,
VarArrayCreate([0, - 1], varVariant));
rueckgabe := true; except
rueckgabe := false; end;
result := rueckgabe; end;
function TOLE_OpenOffice.ToOOPfad(Pfad:String):String; var
rueckgabe : string;
i : integer; begin
rueckgabe := 'file:///'; while (POS('\',pfad)>0) do begin
i := POS('\',pfad);
delete(pfad,i,1);
Insert('/',pfad,i); end;
rueckgabe := rueckgabe + pfad;
result := rueckgabe; end;
function TOLE_OpenOffice.ErsetzeBookmark(name,inhalt:String):boolean; var
objtext, tc, bm, li : Variant;
i : integer;
rueckgabe : boolean; begin
rueckgabe := false; try
objText := Document.getText;
tc := objText.createTextcursor;
li := Document.Bookmarks.getElementNames; for i := VarArrayLowBound(li,1) to VarArrayHighBound(li,1) do begin if (uppercase(li[i]) = uppercase(name)) then begin
bm := Document.Bookmarks.getbyName(li[i]);
tc := Document.Text.createTextCursorByRange(bm.Anchor);
tc.string := inhalt;
rueckgabe := true; end; end; except
rueckgabe := false; end;
result := rueckgabe; end;
end.
¤ Dauer der Verarbeitung: 0.0 Sekunden
(vorverarbeitet)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung ist noch experimentell.