Hi,
seit Wochen versuche ich eine RTF in ein OpenOffice einzufügen.
Das heißt in einem bestehenden Dokument eine RTF Datei an eine bestimmte Stelle,
per "StarBasic" einzufügen. Alle Lösungen die gefunden habe, sind in anderen Programmiersprachen verfasst.
Irgendwie komme ich über die letzte Hürde nicht hinweg.
Ich erzeuge den Textcursor:
tc := Document.Text.createTextCursorByRange(bm.Anchor);
Dann einen Poperty:
Delphi-Quellcode:
VariantArr := VarArrayCreate([0, 0], varVariant);
VariantArr[0] := MakePropertyValue('FilterName','Rich Text Format');
Dann sollte das Dokument geladen werden:
tc.InsertDocumentFromUrl(rtfFile,VariantArr);
Geht aber nicht !!! Da passiert gar nix.
Das Dokument liegt aber wirklich an der Stelle !
Ich hab einen
C-Source gefunden da werden einfach statt VariantArr 'ne Klammer übergeben: "()" (für leer
)
Code:
cursor.insertDocumentFromURL(fileUrl, ())
Ein Delphi-Source-Schnipsel den ich nicht verstehe lößt es folgendermaßen:
Delphi-Quellcode:
theTextCurser := Document.Text.CreateTextCursor;
theTextCurser.insertDocumentFromURL(ooFileName, VarArrayCreate([0, - 1], varVariant) );
Ich weiß aber nicht was hinter: VarArrayCreate([0, - 1], varVariant) steht.
Aber ich habs probiert und hat auch nix genützt.
Ein
Makro meint das es folgendermaßen geht:
Code:
Dim Dummy as Object
oCursor.InsertDocumentFromUrl("agb.sxw",Dummy)
Ich dachte ein leeres Variant würde auch funktionieren, tut es aber auch nicht.
Wäre ja toll, dann müsste man das Format gar nicht erst angeben und Open Office könnte einfach "alles" (was es kennt) laden/importieren.
Weiß jemand Abhilfe ? Oder meinen "Hirn-Bug".
euer Andreas
PS: die Funktion MakePropertyValue:
Delphi-Quellcode:
function TOLE_OpenOffice.MakePropertyValue(PropName, PropValue:
string):variant;
var Struct: variant;
begin
Struct := Service.Bridge_GetStruct('
com.sun.star.beans.PropertyValue');
Struct.
Name := PropName;
Struct.Value := PropValue;
Result := Struct;
end;
PPS: auch wenn OpenOffice schwieriger anzucoden ist, ich steig um