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.

War es hilfreich?

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
scroll top