Wie suche und ersetze ich im ODT Open Office -Dokument?
-
25-10-2019 - |
Frage
In meiner Delphi -Anwendung suche und ersetze ich derzeit programmgesteuert für DOC- und DOCX -Word -Dokumente mithilfe der OLE -Automatisierung von Office Ole. Hat jemand den Code, um dasselbe zu tun (für Doc, Docs, ODT) in OpenOffice?
Ich fragte auch a Verwandte Frage zum Speichern von PDF.
Lösung
Sie sollten sich darauf konzentrieren Xreplacacableable Schnittstelle. Hier ist das Beispiel. Bitte beachten Sie, dass es keine Fehlerbehandlung gibt. Ich habe es mit LibreOffice Writer getestet und es funktioniert gut für mich.
uses
ComObj;
procedure OpenOfficeReplace(const AFileURL: string; ASearch: string; const AReplace: string);
var
StarOffice: Variant;
StarDesktop: Variant;
StarDocument: Variant;
FileReplace: Variant;
FileParams: Variant;
FileProperty: Variant;
begin
StarOffice := CreateOleObject('com.sun.star.ServiceManager');
StarDesktop := StarOffice.CreateInstance('com.sun.star.frame.Desktop');
FileParams := VarArrayCreate([0, 0], varVariant);
FileProperty := StarOffice.Bridge_GetStruct('com.sun.star.beans.PropertyValue');
FileProperty.Name := 'Hidden';
FileProperty.Value := False;
FileParams[0] := FileProperty;
StarDocument := StarDesktop.LoadComponentFromURL(AFileURL, '_blank', 0, FileParams);
FileReplace := StarDocument.CreateReplaceDescriptor;
FileReplace.SearchCaseSensitive := False;
FileReplace.SetSearchString(ASearch);
FileReplace.SetReplaceString(AReplace);
StarDocument.ReplaceAll(FileReplace);
ShowMessage('Replace has been finished');
StarDocument.Close(True);
StarDesktop.Terminate;
StarOffice := Unassigned;
end;
Und die Verwendung des Beispiels
procedure TForm1.Button1Click(Sender: TObject);
begin
OpenOfficeReplace('file:///C:/File.odt', 'Search', 'Replace');
end;
Es gibt auch mehrere Such-/Ersetzungsoptionen für SearchDescriptor.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow