1

我们需要使用 Microsoft Word 打开位于客户端计算机上的服务器上的 Word 文档。该解决方案在本地工作,但是当部署在服务器上时,唯一发生的事情是 winword.exe 在服务器上启动。这可以使用互操作或javascript吗?

这是到目前为止的代码

Microsoft.Office.Interop.Word.ApplicationClass wordApp = new Microsoft.Office.Interop.Word.ApplicationClass();

object file = FilePath + FileName;
lblError.Text = lblError.Text + file.ToString(); 
object readOnly = false;
object objTrue = true;
object missing = System.Reflection.Missing.Value;
object emptyData = string.Empty;
wordApp.Visible = true;
Microsoft.Office.Interop.Word.Document aDoc                         =
wordApp.Documents.Open(ref file,
         ref missing, ref readOnly,
         ref missing, ref missing, ref missing,
         ref missing, ref missing, ref missing,
         ref missing, ref missing, ref objTrue);

aDoc.Activate();
4

4 回答 4

2

您必须记住,客户端和服务器运行在两台不同的机器上。服务器无法启动在客户端计算机上运行的程序。

此外,仅供参考,切勿使用 ASP.NET 应用程序中的 Office 自动化。这些 API 专为在桌面应用程序中使用而设计。它们将无法正常工作、不受支持,甚至可能违反您的 Office 许可证。

于 2012-07-04T20:31:34.523 回答
0

它在本地工作的原因是因为它不是。发生的事情是服务器正在打开文档,但是由于您的本地计算机正在充当服务器,因此它看起来好像文件已打开。

一种简单的解决方案是让用户下载文件,对其进行编辑并将其上传回给您。

于 2012-07-04T20:32:17.120 回答
0
<script language="javascript" type="text/javascript"> 
    function openDokument(dokument){ 
        var objAppl;

        try{ 
            objAppl = GetObject("","Word.Application"); 
            objAppl.Documents.open(dokument); 
        } 
        catch(exception){ 
            objAppl = new ActiveXObject("Word.Application");
            objAppl.Visible = true;
            alert(dokument);
            objAppl.Documents.open(dokument);
            objAppl.Activate(); 
        }    
        objAppl = null;           
    }
</script>
于 2012-07-05T07:45:12.393 回答
0

您可以使用 DocX 类来创建您的单词文档。然后使用 Response.Write() 方法(确切地说 doxument 扩展名是 .docx)将文档下载到您的机器中

于 2015-02-22T10:04:35.827 回答