WriterAutomation/de
From Free Pascal wiki
Jump to navigationJump to searchThe printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
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;