आपको XReplaceable इंटरफ़ेस पर फ़ोकस करना चाहिए। उदाहरण यहाँ है। कृपया ध्यान दें, कि कोई त्रुटि प्रबंधन नहीं है। मैंने इसे लिबर ऑफिस लेखक के साथ परीक्षण किया है और यह मेरे लिए ठीक काम करता है।
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;
और उदाहरण
procedure TForm1.Button1Click(Sender: TObject);
begin
OpenOfficeReplace('file:///C:/File.odt', 'Search', 'Replace');
end;
के उपयोग भी कई खोज रहे हैं/SearchDescriptor के लिए विकल्प बदलें।
क्या डॉक्क्स दस्तावेजों में हेरफेर करने के लिए एक डेल्फी कोड है? – none
हां, आपको ओएलई स्वचालन (एक्टिवएक्स) का उपयोग करना चाहिए उदाहरण के लिए http://stackoverflow.com/questions/5484721/delphi-convert-doc-to-pdf-using-word-activex – LaBracca