从Asp.net应用程序打开客户端的Word文档

时间:2012-07-04 20:29:07

标签: c# asp.net document

我们需要使用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 个答案:

答案 0 :(得分:2)

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

此外,FYI, 从不 从ASP.NET应用程序中使用Office Automation。这些API旨在用于桌面应用程序。它们将无法正常运行,不受支持,甚至可能违反您的Office许可证。

答案 1 :(得分:0)

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

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

答案 2 :(得分: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>

答案 3 :(得分:0)

您可以使用DocX类创建word文档。然后使用Response.Write()方法(确切地说文档扩展名为.docx)在您的机器中下载文档