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;
}
我已經看到了這個網址無處它告訴你該怎麼做實際的郵件合併似乎只是裙子拍攝對象。 – 2009-10-15 16:23:01