Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 实例化Microsoft.Office.Interop.Word对象时出错_C#_.net_Asp.net Mvc 5_Office Interop - Fatal编程技术网

C# 实例化Microsoft.Office.Interop.Word对象时出错

C# 实例化Microsoft.Office.Interop.Word对象时出错,c#,.net,asp.net-mvc-5,office-interop,C#,.net,Asp.net Mvc 5,Office Interop,我目前正在检索文件系统上的word文件,以便在.NET的MVC5Razer视图中显示它。现在,在测试和使用我的本地计算机时,该文件正确地显示在我的本地IIS上。我还将该文件保存在本地计算机上以供测试 在本地机器上测试时,一切正常。然后,我将更改发布/部署到远程服务器的IIS,并检查站点是否正常工作。当我转到显示Word文件的页面时,会收到一条错误消息“处理您的请求时出错” 代码如下 public ActionResult GetChapterContent() { Str

我目前正在检索文件系统上的word文件,以便在.NET的MVC5Razer视图中显示它。现在,在测试和使用我的本地计算机时,该文件正确地显示在我的本地IIS上。我还将该文件保存在本地计算机上以供测试

在本地机器上测试时,一切正常。然后,我将更改发布/部署到远程服务器的IIS,并检查站点是否正常工作。当我转到显示Word文件的页面时,会收到一条错误消息“处理您的请求时出错”

代码如下

public ActionResult GetChapterContent()
    {
        StringBuilder text = new StringBuilder();
        Microsoft.Office.Interop.Word.Application word = new Microsoft.Office.Interop.Word.Application();
        object miss = System.Reflection.Missing.Value;
        object path = @"/Books/1/Chapters/1/chapter-1.docx";
        //object path = @"/Books/1/Chapters/1/chapter-1.docx";
        object readOnly = true;
        Microsoft.Office.Interop.Word.Document docs = word.Documents.Open(ref path, ref miss, ref readOnly, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss);

        var y = false;
        for (int i = 0; i < docs.Paragraphs.Count; i++)
        {

            if(docs.Paragraphs[i + 1].Range.Text.Contains("***")) {
                if (y == false)
                {
                    text.Append("<span class='ci'>" + docs.Paragraphs[i + 1].Range.Text.ToString().Substring(3));
                    y = true;
                }
                else
                {
                    text.Append(docs.Paragraphs[i + 1].Range.Text.ToString().Remove(docs.Paragraphs[i + 1].Range.Text.ToString().Length - 4, 3) + "</span>");
                    y = false;
                }
            }
            else {
                text.Append("" + docs.Paragraphs[i + 1].Range.Text.ToString());
            }
        }
        return Content("DF");
    }

仅使用这两行代码就会导致错误。如果我删除它-一切都会好的。

也许你可以尝试NPOI,它可以在没有office的情况下操作你的excel和word。

也许你可以尝试NPOI,它可以在没有office的情况下操作你的excel和word。

这里有两件事,因为
Microsoft.office.Interop
需要在你的系统上安装有效的office软件包

1) 使用

它不需要系统上的有效office pack,您可以将其用于读写等

2) 使用

用于字处理、样式表和单元格处理

他们每个人都会到达理想的地点问题是,什么最适合你的需要


第三种选择是在远程服务器上安装office pack

这里有两件事,因为
Microsoft.Office.Interop
需要在您的系统上安装有效的Office软件包

1) 使用

它不需要系统上的有效office pack,您可以将其用于读写等

2) 使用

用于字处理、样式表和单元格处理

他们每个人都会到达理想的地点问题是,什么最适合你的需要


第三种选择是在远程服务器上安装office pack

确保word应用程序是您的服务器,并且具有足够的权限我认为我的服务器也需要word。。但这是真的吗?我不能安装一些轻量级的东西而不是完全安装Office吗?Office不是一个安装在服务器上的小程序…不。。要使word互操作发挥作用,您需要在服务器上安装microsoft word。另一种替代方法是使用OpenXml,而不是HeadInterop。使用OpenXml。确保word应用程序是您的服务器,并且具有足够的权限我认为我的服务器也需要word。。但这是真的吗?我不能安装一些轻量级的东西而不是完全安装Office吗?Office不是一个安装在服务器上的小程序…不。。要使word互操作发挥作用,您需要在服务器上安装microsoft word。另一种替代方法是使用OpenXml,而不是HeadInterop。使用OpenXml。
StringBuilder text = new StringBuilder();
Microsoft.Office.Interop.Word.Application word = new Microsoft.Office.Interop.Word.Application();