0

我有一个在 ASP.net MVC4 Visual Studio 2012 中开发的应用程序。我有一个页面,我必须在该页面上显示一个 Word 文档。word 文档已经从不同的页面上传到服务器。在此页面上,我的程序加载该文档进行一些更改并通过打开更新的 Word 文件显示预览。该应用程序在 Visual Studio 中运行良好,但在部署后崩溃。

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