簡體   English   中英

來自C#ASP.NET中的數據集的郵件合並

[英]Mail Merge from a dataset in C# ASP.NET

我是OpenOffice的新手,已經閱讀了很多有關它的文章。 我需要在C#中編碼郵件合並功能,以指示OpenOffice對提供的文檔執行郵件合並。 我已經看到了許多使用VB.NET進行郵件合並的示例,但是當我將VB轉換為C#時,其郵件合並組件始終無法正確創建。 我的代碼如下。 我已經注釋掉了郵件合並代碼,因為它沒有與其一起編譯。如何糾正該代碼,以便它執行郵件合並?

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; 

}

看起來這已經在使用OpenOffice的Mailmerge中解決了...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM