2011-10-18 19 views
5

मेरे डेल्फी एप्लिकेशन में मैं वर्तमान में खोज कर रहा हूं & कार्यालय ओले स्वचालन का उपयोग करके डॉक्टर और डॉक्क्स शब्द दस्तावेज़ों के लिए प्रोग्रामेटिक रूप से बदलें। क्या किसी के पास ओपनऑफिस में ऐसा करने के लिए कोड है (डॉक्टर, दस्तावेज़, ओडीटी के लिए)?ओपन ओपन ऑफिस दस्तावेज़ में कैसे खोजें और बदलें?

मैंने related question on saving to pdf से भी पूछा।

+0

क्या डॉक्क्स दस्तावेजों में हेरफेर करने के लिए एक डेल्फी कोड है? – none

+1

हां, आपको ओएलई स्वचालन (एक्टिवएक्स) का उपयोग करना चाहिए उदाहरण के लिए http://stackoverflow.com/questions/5484721/delphi-convert-doc-to-pdf-using-word-activex – LaBracca

उत्तर

7

आपको 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 के लिए विकल्प बदलें।

+0

ग्रेट, केवल एक का उपयोग करना चाहिए // के बजाय // लेकिन यह बहुत अच्छा काम करता है! – LaBracca