unit OpenOffice;
// 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.23 Sekunden
(vorverarbeitet)
¤
|
Haftungshinweis
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.
|