我编写了一个函数来使用 Office Interop Word 对象生成 Word 文档。我的代码如下所示。它在我的本地系统中运行良好。但是当我尝试从window server 2003 运行它时它不起作用。它一直在 Word.Document wordDoc = wordApp.Documents.Open 处加载并且不执行任何操作。你能帮帮我吗?
private void GenerateEmploymentCertificate()
{
object Nothing = System.Reflection.Missing.Value;
object format = Word.WdSaveFormat.wdFormatDocument;
Word.Application wordApp = new Word.ApplicationClass();
object srcFileName = Server.MapPath(ResolveUrl(@"~/HRLetter\Arabia\Templates\Employment Certificate.doc"));
Word.Document wordDoc = wordApp.Documents.Open
(ref srcFileName, ref format, ref Nothing, ref Nothing,
ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing,
ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing,
ref Nothing, ref Nothing);
try
{
object bookmarkDate = "Date";
wordDoc.Bookmarks.get_Item(ref bookmarkDate).Select();
wordApp.Selection.Text = string.Format("{0:MM/dd/yyyy}", lblRequestdate.Text);
object bookmarkEmployeeName = "EmployeeName";
wordDoc.Bookmarks.get_Item(ref bookmarkEmployeeName).Select();
wordApp.Selection.Text = lblEmployeeName1.Text;
object bookmarkCompany = "Company";
wordDoc.Bookmarks.get_Item(ref bookmarkCompany).Select();
wordApp.Selection.Text = lblCompanyName1.Text;
object bookmarkJoiningDate = "JoiningDate";
wordDoc.Bookmarks.get_Item(ref bookmarkJoiningDate).Select();
wordApp.Selection.Text = string.Format("{0:MM/dd/yyyy}", lblJoiningDate1.Text);
object bookmarkDesignation = "Designation";
wordDoc.Bookmarks.get_Item(ref bookmarkDesignation).Select();
wordApp.Selection.Text = lblDesignation1.Text;
string DocName;
DocName = string.Format("{0}_employment_certificate", lblRequestNo.Text);
hFilename.Value = DocName;
wordDoc.SaveAs(Server.MapPath(ResolveUrl(@"~/HRLetter\Arabia\Letters\" + DocName + ".doc")));
}
catch (Exception exp)
{
Session["generalError"] = null;
Session["generalError"] = "There was an error at generating the letter. Please send email to unify.admin@unilever.com with this screen shot.<br /><br /><br />Request No:" + lblRequestNo.Text + "<br />Action:Submit<br />" + exp.StackTrace.ToString();
LogManager logHelper = new LogManager(Request.PhysicalApplicationPath.Trim(), "Leave System - Malaysia");
logHelper.LogError("[btnSubmit_Click - ]" + exp.Message + ".StackTrace - " + exp.StackTrace.ToString());
Response.Redirect(ResolveUrl("~/Error/ErrorHandler.aspx"));
}
finally
{
// Close wordDoc2
wordDoc.Close(ref Nothing, ref Nothing, ref Nothing);
if (wordDoc != null)
{
System.Runtime.InteropServices.Marshal.ReleaseComObject(wordDoc);
wordDoc = null;
}
// close wordApp
wordApp.Quit(ref Nothing, ref Nothing, ref Nothing);
if (wordApp != null)
{
System.Runtime.InteropServices.Marshal.ReleaseComObject(wordApp);
wordApp = null;
}
}
GC.Collect();}