是否可以检测是否从Web应用程序安装了Microsoft Excel

时间:2008-12-23 18:51:59

标签: asp.net javascript excel web-applications

我正在开发一个Web应用程序(ASP.NET),它具有一些需要在客户端上安装Microsoft Excel的功能。如果Excel不存在,我想禁用这些功能。

仅Windows / IE / Excel解决方案很好。这不是一个多浏览器,多操作系统的Web应用程序。

任何聪明的JavaScript都可以实现这一目标吗?

6 个答案:

答案 0 :(得分:6)

没有

您不能深入潜入客户端计算机以找出该部分。您可以做的最好的事情就是假设它已经安装,并且如果没有安装会发生什么,或者只是询问用户。

答案 1 :(得分:2)

你可以这样做,但你会得到各种安全警告:

<script>
var excelInstalled;
try 
{
    var excel = new ActiveXObject("Excel.Application");
    excelInstalled = true;
}
catch(e)
{
    excelInstalled = false;
}
alert("excelInstalled: " + excelInstalled);
</script>

答案 2 :(得分:1)

为何选择Excel?如果我有OpenOffice.org会怎么样?

只需警告用户您要发送的内容,请使用“Excel文件”标记该链接,然后由他决定。

答案 3 :(得分:1)

function hasOfficePlugin() {
var toCheckExt = ['', '12', '13', '14', '15'], i, n, mt;
    for (i = 0, n = toCheckExt.length; i < n; i++) {
        mt = navigator.mimeTypes['application/x-msoffice' + toCheckExt[i]];
        if (mt && mt.enabledPlugin && mt.enabledPlugin.name) {
            return true;
        }
    }
    return false;
}

我已经使用Office 11(2003)和Office 12(2007)测试了上述内容,它似乎在Firefox,Safari,Chrome和Opera中运行良好。虽然它在IE中不起作用,因为IE中的navigator.mimeTypes对象总是空的。

它正在检查是否存在MS Office插件。我不太了解这个插件 - 很可能并不总是安装办公室...但我认为,如果上面的内容返回true,那么安装Excel是一个非常强烈的信号。当然它可能用途有限,因为它在IE中不起作用,但也许你可以用它做点什么......

答案 4 :(得分:0)

您无法使用标准技术访问Web浏览器上下文之外的客户端信息。但我看到其中一个答案是使用一些ActivX对象来检测Excel。无论如何,这些技术仅适用于Windows上的Internet Explorer。那Mac呢?那些其他浏览器如Opera或firefox或者Chrome上的浏览器呢? 我认为最好让用户告知您这件事。只要询问用户是否安装了excel:

var isExcel = window.confirm('dear user if you have Microsoft Excel installed please click on ok, otherwise click on cancel. thank you.');

答案 5 :(得分:0)

这在开始时是个坏主意。你想做什么 - 重新考虑。

如果你仍然坚持:

尝试创建用于Excel的ActiveXObject,然后用于OpenOffice。 如果失败,请重定向到NoExcel.html或将XMLRequest发送到服务器 此外,如果有XLS文件扩展名处理程序,您可以尝试通过JavaScritp查找。 最后,您可以安装ActiveX来检查是否安装了Excel。

这是针对Windows的。不知道mac,linux,mobile ...... 您可以打赌,任何使其工作的方式都将停止使用下一个修补程序。