0

ASP.net MVC4 ビジュアル スタジオ 2012 で開発されたアプリケーションがあります。Word 文書を表示する必要があるページがあります。Word ドキュメントは、別のページからサーバーに既にアップロードされています。このページで、私のプログラムはそのドキュメントを読み込み、いくつかの変更を行い、更新されたワード ファイルを開いてプレビューを表示します。アプリケーションはビジュアル スタジオでは正常に動作しますが、展開後にクラッシュします。

filename = Request.PhysicalApplicationPath + branchP.OfferletterPath;
outfilename = Request.PhysicalApplicationPath + @"Temp\OfferLetter" + "_1";

object Missing = System.Reflection.Missing.Value;
            Application app = null;
            Document doc = null;

            app = new Microsoft.Office.Interop.Word.Application();
            doc = app.Documents.Open(filename, Missing, Missing, Missing, Missing, Missing, Missing, Missing, Missing, Missing);
            var salary = 0;

            WordUtils.FindReplaceAnywhere(app, "<mobileno>", jobCandidate.MobilePhoneNo);
            WordUtils.FindReplaceAnywhere(app, "<currentdate>", System.DateTime.Now.ToString("dd/MM/yyyy"));
            WordUtils.FindReplaceAnywhere(app, "<name>", jobCandidate.JobCandidateName);
            WordUtils.FindReplaceAnywhere(app, "<address>", jobCandidate.Address);
            WordUtils.FindReplaceAnywhere(app, "<designation>", jobCandidate.JobTitle);
            WordUtils.FindReplaceAnywhere(app, "<doj>", jobCandidate.EmpJoiningDate.ToString());
            WordUtils.FindReplaceAnywhere(app, "<salary>", salary.ToString());

            Object beforeRow = Type.Missing;
            int i = 2;
            double amt = 0;

            if (doc.Tables.Count > 0)
            {
                doc.Tables[1].Select();
                Table tbl = doc.Tables[1];
                foreach (var jc in _entities.JobCandidatePayStructures.Where(jc => jc.JobCandidateId == jobCandidate.Id))
                {
                    tbl.Rows.Add(beforeRow);
                    tbl.Cell(i, 1).Range.Text = jc.Code;
                    tbl.Cell(i, 1).Range.Bold = 0;

                    tbl.Cell(i, 2).Range.Text = jc.Amount.ToString();
                    tbl.Cell(i, 2).Range.Bold = 0;

                    amt = amt + jc.Amount;
                    i++;
                }
                tbl.Rows.Add(beforeRow);
                tbl.Cell(i, 1).Range.Text = "Gross Salary";
                tbl.Cell(i, 1).Range.Bold = 1;
                tbl.Cell(i, 2).Range.Text = amt.ToString();
                tbl.Cell(i, 2).Range.Bold = 1;
            }


            doc.SaveAs(outfilename, Missing, Missing, Missing, Missing, Missing, Missing, Missing, Missing, Missing);
            app.Visible = true;

上記のコードは Visual Studio で正常に動作していますが、デプロイ後に上記の関数を実行すると、次の例外がスローされます。

This command is not available because no document is open.
Exception occurred at Microsoft.Office.Interop.Word.ApplicationClass.get_ActiveDocument()
at HRIS.Models.WordUtils.FindReplaceAnywhere(Application app, String findText, String replaceText)

誰かが同様のアプリケーションに取り組んでいる場合は、今後の方法を提案してください。

前もって感謝します。

4

0 に答える 0