Error "This command is not available because no document is open" on Server

AmirHossein picture AmirHossein · Apr 18, 2012 · Viewed 10.5k times · Source

I use this code to send data to a Word Template and send to client.

        protected void Button1_Click(object sender, EventArgs e)
    {
        object missing = System.Reflection.Missing.Value;
        Microsoft.Office.Interop.Word.Application WordApp = new Microsoft.Office.Interop.Word.Application();

        string DocFilePath = "";
        //string FilePath = System.Windows.Forms.Application.StartupPath;
        object fileName = Server.MapPath(@"~\asset\wordtemplates\Estelam.dot");
        DocFilePath = fileName.ToString();

        FileInfo fi = new FileInfo(DocFilePath);
        if (fi.Exists)
        {
            object readOnly = false;
            object isVisible = true;

            object LetterNo = "LetterNo";
            object LetterDate = "LetterDate";
            object Attachment = "Attachment";

            object To = "To";
            object From = "From";

            object Fname = "Fname";
            object Lname = "Lname";
            object FatherName = "FatherName";
            object IDNumber = "IDNumber";
            object BirthDate = "BirthDate";
            object BirthLocation = "BirthLocation";
            object PersonelID = "PersonelID";
            object MembershipDate = "MembershipDate";
            object Membership = "Membership";

            object Degree = "Degree";
            object Level = "Level";
            object Guild = "Guild";
            object Janbazi = "Janbazi";
            object Esarat = "Esarat";
            object Education = "Education";
            object Field = "Field";
            object Education2 = "Education2";
            object DocLocation = "DocLocation";

            Microsoft.Office.Interop.Word.Document aDoc = WordApp.Documents.Open(ref fileName, ref missing, ref readOnly,
               ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing,
               ref isVisible, ref isVisible, ref missing, ref missing, ref missing);

            //Microsoft.Office.Interop.Word.Document aDoc = WordApp.Documents.Open(ref fileName);

            WordApp.ActiveDocument.FormFields.get_Item(ref LetterNo).Result = TextBox_LetterNo.Text;

this code work in local good and correct,but when I publish this site and put to my Server I get this error run time.

This command is not available because no document is open. Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. Exception Details: System.Runtime.InteropServices.COMException: This command is not available because no document is open.

Source Error:An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.

why it can't open in server? How to solve this Error?

I use Windows7 , VS2010 , SQLServer2008, office2010 and in Server use Windows Server 2008, IIS7,office2010.

What I should to do for this error on server?

Answer

Kiru picture Kiru · Apr 28, 2012

You are missing Desktop folder for OfficeAutomation, check here

You should also need to configure OfficeAutomationUser account (if you haven't done) for automating Office applications, check this

Note: It is not advised to have Office automation on your server. Try using Open Xml sdk to automate office application.