我们需要使用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();
答案 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)在您的机器中下载文档