2009-10-14 2 views
0

Я новичок в OpenOffice и читаю много статей об этом. Мне нужно закодировать функциональность слияния на C#, чтобы дать команду OpenOffice выполнить слияние в поставляемом документе. Я видел множество примеров слияния с использованием VB.NET, но когда я конвертирую VB в C#, его компонент mailmerge всегда не удается создать правильно. Мой код выглядит следующим образом. Я прокомментировал код слияния, так как он не компилируется с ним. Как бы исправить код, чтобы он выполнял слияние?Слияние почты из набора данных в C# ASP.NET

public int InitialiseOpenOffice() 
{ 
    // This is the document with the mail merge tags in that I want to be used as the source. 
    string filePathStr = "file:///C:/DotNetDev/MailMerge//MailMergeSample.doc"; 

    Type openOffice; 
    openOffice = Type.GetTypeFromProgID("com.sun.star.ServiceManager"); 
    object objServiceManager = System.Activator.CreateInstance(openOffice); 

    // arguments for IDispatch-call 
    object[] parameters = new object[1]; 
    parameters[0] = "com.sun.star.frame.Desktop"; 

    // arguments for document 
    object[] args = new object[4]; 
    args[0] = "private:factory/swriter"; 
    args[1] = "_blank"; 
    args[2] = 0; 
    args[3] = new object[] { }; 

    // arguments for document 
    object[] existingargs = new object[4]; 
    existingargs[0] = filePathStr; 
    existingargs[1] = "_blank"; 
    existingargs[2] = 0; 
    existingargs[3] = new object[] { }; 

    object startdesktop; 
    object doc; 
    try 
    { 
     startdesktop = (object)openOffice.InvokeMember("createInstance", 
     BindingFlags.InvokeMethod, null, 
     objServiceManager, parameters); 
     doc = startdesktop.GetType().InvokeMember("loadComponentFromUrl", 
     BindingFlags.InvokeMethod, null, startdesktop, existingargs); 

     object openOfficeServiceManagerObj = System.Activator.CreateInstance(openOffice); 

     // arguments for MailMerge 
     object[] mailMergeParameters = new object[1]; 
     mailMergeParameters[0] = "com.sun.star.text.MailMerge"; 
     // 
     // 
     // All the code up to this point works, but the code below doesn't. At this 
     // point OponOffice is open with the document I want to use in the mailmerge. 
     // 
     // 
     //Type t_OOo; 
     //t_OOo = Type.GetTypeFromProgID("com.sun.star.ServiceManager"); 
     //objServiceManager = System.Activator.CreateInstance(t_OOo); 
     //object oMailMerge; 
     //oMailMerge = t_OOo.InvokeMember("createInstance", BindingFlags.InvokeMethod, null, objServiceManager, new Object[] { "com.sun.star.text.MailMerge" }); 
     //oMailMerge.DocumentURL = "file:///C:/Users/me/Desktop/OpenOffice Investigation/mail merged.odt"; 
     //oMailMerge.DataSourceName = "adds"; 
     //oMailMerge.CommandType = 0; 
     //oMailMerge.Command = "adds"; 
     //oMailMerge.OutputType = 2; 
     //oMailMerge.execute(new Object[] { }); 

     if (doc == null) 
     { 
     return 1; // error!! 
     } 

    } 
    catch (Exception e) 
    { 
     string s = e.Message; 
     return 1; 
    } 

    return 0; 

} 

ответ

0

Похоже, это было адресовано на Mailmerge using OpenOffice ...

+0

Я уже видел этот URL нигде не он расскажет вам, как сделать фактическое слияние почты это только кажется, юбка над предметом. –

Смежные вопросы