1

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();}
4

1 に答える 1

1

MS Office は、サーバー環境では実際には機能しません。MSでさえそう言っている

LibreOffice で動作するようにしました。当ブログで読めます

于 2012-06-19T16:55:35.820 に答える