Javed Ahmed
Javed Ahmed

Reputation: 406

How to generate word document in windows server 2003?

I had written a function to generate a word document by using the Office Interop Word object. My code is as shown below. It is working fine in my local system. But when i try to run it from window server 2003 it is not working. It keeps loading at Word.Document wordDoc = wordApp.Documents.Open and doesn't do anything. Could you help me out?

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 [email protected] 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();}

Upvotes: 1

Views: 360

Answers (1)

Rikard Pavelic
Rikard Pavelic

Reputation: 496

MS office doesn't really work in server environment. Even MS says so.

We've made it work with LibreOffice. You can read it on our blog

Upvotes: 1

Related Questions