WriterAutomation/de
From Lazarus wiki
Jump to navigationJump to search
Dieser Artikel behandelt ausschließlich Windows.
Siehe auch: Multiplatform Programming Guide/de
│
Deutsch (de) │
Zurück zur Office Automation.
Writer
Benötigte Units
uses
..., ComObj, Variants, LazUtf8, ...;
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;
strDateiname: shortstring; // nur Literale und Shortstrings sind automatisierbar
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);
...
// Variante 1:
// Speichert das Dokument unter einem neuen Namen
varDokument.StoreAsURL('file:///D:/test.odt', varLoadParams);
// Variante 2:
// Speichert das Dokument mit Umlauten im neuen Dateinamen
strDateiname := 'file:///D:/' + Utf8ToSys('täst.odt');
varDokument.StoreAsURL(strDateiname, 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 Office-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');
// Bestimmt 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;