Fernsteuerung des Openoffice
-
Hallo zusammen!
Hier im Forum habe ich den Beitrag über die Fernsteuerung des Excel gelesen, der mir sehr gut gefallen hat. Ich stelle mir aber jetzt die Frage, ob vielleicht auch eine Möglichkeit für die Fernsteuerung des Openoffice besteht?Kennt jemand irgendwelche Bibliotheken, die für diesen Zweck eingesetzt werden können?
MfG
coder24h
-
Klar geht das
Ich glaub hier im Forum sind schon ein paar Beiträge dazu zu finden. Komponenten bzw. Bibliotheken dafür hab ich noch keine gefunden.
Dieser Link hatte mir allerdings bei meinem vorhaben sehr weiter geholfen:
http://www.codenet.ru/progr/bcb/Open-Office-Calc-Automation.php
ich kann zwar kein russisch, aber der Quelltext war mir Aussagekräftig genugmfg
xXx
-
Super! Besten Dank X
-
Das Thema ist hoch interessant es scheint aber so, dass nur wenige die Fernsteuerung interessiert? Bevor das Ganze im Forum untergeht, möchte ich etwas konkreter werden:
**
Was genau versuche ich zu erreichen:**
Unter OpenOffice genau so wie unter Excel besteht die Möglichkeit sich die Eingabefelder bzw. Textmarken anzulegen. Diese Eingabefelder sind in der Lage Text aufzunehmen und genau das würde ich gerne hinbekommen. Also noch mal in Klartext in ein Eingabefeld unter OpenOffice.org gezielt Text rein schreiben.Kennt jemand eine Möglichkeit, die man dazu einsetzen kann?
-
Hallo
Das Thema ist hoch interessant es scheint aber so, dass nur wenige die Fernsteuerung interessiert?
Das scheint auf dem ersten Blick so. Doch es gibt Haken bei solchen Fernsteuerungen von Office-Anwendungen, egal ob MS oder Open : man ist damit auf bestimmte externe Programme angewiesen, die Verbindung ist langsam und fehleranfällig, und mit jeder neuen Version des Zielprogramms kann sich das Interface ändern.
Deshalb sind entweder reine Text-Exporte (csv) oder gleich richtige Reporting-Software die bessere Wahl.bis bald
akari
-
Damit schreibe ich Text an eine Textmarke in OO-Writer:
void __fastcall OOWriteAuto::WriteToPlace(WideString Place, WideString Text) { oBookmarks.OleFunction("getByName",Place).OleFunction("getAnchor").OleFunction("setString",Text); }
fast vergessen
das Öffen des Dokuments:bool __fastcall OOWriteAuto::connect() { try { ServiceManager = CreateOleObject("com.sun.star.ServiceManager"); if (VarType(ServiceManager) == varDispatch) { Desktop = ServiceManager.OleFunction("createInstance","com.sun.star.frame.Desktop"); } return true; } catch (...) { return false; } } //--------------------------------------------------------------------------- bool __fastcall OOWriteAuto::loadDocument(bool isHiddenMode, WideString FileName) { try { if (FileExists(FileName)) { Variant VariantArray; if (isHiddenMode) { int Bounds[2] = {0,0}; VariantArray = VarArrayCreate(Bounds, 1, varVariant); Variant MyStruct = ServiceManager.OleFunction("Bridge_GetStruct","com.sun.star.beans.PropertyValue"); MyStruct.OlePropertySet("name","Hidden"); MyStruct.OlePropertySet("value",true); VariantArray.PutElement(MyStruct, 0); } else { int Bounds[2] = {0,-1}; VariantArray = VarArrayCreate(Bounds, 1, varVariant); } Filename = convertToURL(FileName); Document = Desktop.OleFunction("LoadComponentFromURL", Filename, "_blank", 0, VariantArray ); oBookmarks = Document.OleFunction("getBookmarks"); VariantArray = Unassigned(); } return true; } catch(...) { return false; } }
Und die .h Datei:
class OOWriteAuto : public TObject { private: Variant ServiceManager; Variant Desktop; Variant Document; Variant oBookmarks; WideString Filename; WideString __fastcall convertToURL(WideString FileName); public: bool __fastcall connect(); bool __fastcall loadDocument(bool isHiddenMode, WideString FileName); void __fastcall WriteToPlace(WideString Place, WideString Text); }; //---------------------------------------------------------------------------
mfg
xXx
-
Hei X,
ich sehe du hast dich mit der Materie beschäftigt, es ist auf jeden Fall mehr als ich erhofft habe!
Danke noch einmal für die tatkräftige Unterstützung, das hat mich echt weiter gebracht!