WriterAutomation/de
From Free Pascal wiki
Revision as of 19:24, 14 March 2013 by Olaf (talk | contribs) (→Öffnen eines vorhandenen Dokuments und das Verwenden von Bookmarks)
Dieser Artikel behandelt ausschließlich Windows.
Siehe auch: Multiplatform Programming Guide/de
│
Deutsch (de) │
Zurück zur Office Automation.
Writer
Benötigte Units
Unit ..., ComObj, Variants, ...;
Aufbau einer Steuerung für die Anwendung Writer
Erstellen eines neuen Dokuments und es unter einem neuen Namen speichern
...
var
// Reservieren des Speichers
varOfficeApp: olevariant;
varDesktop: olevariant;
varLoadParams: olevariant;
varDokument: olevariant;
varBookmark: olevariant;
varTextCursor: olevariant;
begin
// Erstellt das OleObjekt und erstellt den Zeiger darauf
varOfficeApp := CreateOleObject('com.sun.star.ServiceManager');
// Erstellt den Zeiger auf den Officedesktop
varDesktop := varOfficeApp.createInstance('com.sun.star.frame.Desktop');
// Erstellt ein leeres Array das für die Dokumentenerstellung benötigt wird
varLoadParams := VarArrayCreate([0, -1], varVariant);
// Erstellt ein neues (leeres) Dokument (Workbook) und setzt den Zeiger darauf
varDokument := varDesktop.LoadComponentFromURL('private:factory/swriter', '_blank', 0, varLoadParams);
...
// Speichert das Dokument unter einem neuen Namen
varDokument.StoreAsURL('file:///D:/test.odt', varLoadParams);
// Wird nicht zwischen dem Speichern und dem schliessen des Dokuments gewartet, dann stürzen
// unter Umständen Star-, Open- und LibreOffice ab.
// Beim Speichern auf Notebooks oder in Netzwerken empfehlen sich höhere Wartezeiten.
Sleep(1000);
// Schliesst das Dokument
varDokument.close(True);
// Beendet die Anwendung
varDesktop.terminate;
// Freigabe des Speichers
varDesktop := UnAssigned;
varDokument := UnAssigned;
varLoadParams := UnAssigned;
varOfficeApp := UnAssigned;
end;
Öffnen eines vorhandenen Dokuments und Speichern des Dokuments
...
var
// Reservieren des Speichers
varOfficeApp: olevariant;
varDesktop: olevariant;
varLoadParams: olevariant;
varUrl: variant;
varDokument: olevariant;
begin
// Erstellt das OleObjekt und erstellt den Zeiger darauf
varOfficeApp := CreateOleObject('com.sun.star.ServiceManager');
// Erstellt den Zeiger auf den Officedesktop
varDesktop := varOfficeApp.createInstance('com.sun.star.frame.Desktop');
// Erstellt ein leeres Array das für die Dokumentenerstellung benötigt wird
varLoadParams := VarArrayCreate([0, -1], varVariant);
// Öffnet ein neues vorhandenes Dokument (Workbook) und setzt den Zeiger darauf
varDokument := varDesktop.LoadComponentFromURL('file:///D:/Test.odt', '_blank', 0, varLoadParams);
// Speichert das Dokument
varDokument.Store;
...
// Wird nicht zwischen dem Speichern und dem schliessen des Dokuments gewartet, dann stürzen
// unter Umständen Star-, Open- und LibreOffice ab.
// Beim Speichern auf Notebooks oder in Netzwerken empfehlen sich höhere Wartezeiten.
Sleep(1000);
// Schliesst das Dokument
varDokument.Close(True);
//Beendet die Anwendung
varDesktop.terminate;
// Freigabe des Speichers
varDesktop := UnAssigned;
varDokument := UnAssigned;
varLoadParams := UnAssigned;
varOfficeApp := UnAssigned;
end;
Öffnen eines vorhandenen Dokuments und das Verwenden von Bookmarks
Bevor mit Bookmarks gearbeitet werden kann muss ein Dokument als Vorlage erstellt werden.
Diese Vorlage müssen Sie an den entsprechenden Stellen mit den benötigten Bookmarks versehen.
Beispiel:
...
var
// Reservieren des Speichers
varOfficeApp: olevariant;
varDesktop: olevariant;
varLoadParams: olevariant;
varDokument: olevariant;
varBookmark: olevariant;
varTextCursor: olevariant;
// Benötigte Hilfsvariable
varUebergabe: variant;
begin
// Erstellt das OleObjekt und erstellt den Zeiger darauf
varOfficeApp := CreateOleObject('com.sun.star.ServiceManager');
// Erstellt den Zeiger auf den Officedesktop
varDesktop := varOfficeApp.createInstance('com.sun.star.frame.Desktop');
// Erstellt ein leeres Array das für die Dokumentenerstellung benötigt wird
varLoadParams := VarArrayCreate([0, -1], varVariant);
// Öffnet ein neues vorhandenes Dokument (Workbook) und setzt den Zeiger darauf
varDokument := varDesktop.LoadComponentFromURL('file:///D:/Test.odt', '_blank', 0, varLoadParams);
...
// Holt die Adresse der Bookmark
varBookmark := varDokument.BookMarks.getByName('txtTest');
// Holt die Adresse des Cursors
varTextCursor := varBookmark.Anchor.Text.createTextCursorByRange(varBookmark.Anchor);
// Weist der Hilfsvariablen einen UTF16 codierten Text zu
// Der Text sollte immer UTF16 codiert sein, das die Office-Anwendungen nur UTF16 beherrschen
varUebergabe := Utf8ToUtf16('Hallo Welt');
// Übergibt die Hilfsvariable an den textCursor der Office-Anwendung
varTextCursor.SetString(varUebergabe);
...
// Speichert das Dokument
varDokument.store;
// Wird nicht zwischen dem Speichern und dem schliessen des Dokuments gewartet, dann stürzen
// unter Umständen Star-, Open- und LibreOffice ab.
// Beim Speichern auf Notebooks oder in Netzwerken empfehlen sich höhere Wartezeiten.
Sleep(1000);
// Schliesst das Dokument
varDokument.Close(True);
// Beendet die Anwendung
varDesktop.terminate;
// Freigabe des Speichers
varUebergabe := Unassigned;
varTextCursor := Unassigned;
varBookmark := Unassigned;
varDokument := Unassigned;
varLoadParams := Unassigned;
varDesktop := Unassigned;
varOfficeApp := Unassigned;
end;
--Olaf 06:46, 11 March 2013 (UTC)