【问题标题】:Is it possible to detect if Microsoft Excel is installed from a Web Application是否可以检测是否从 Web 应用程序安装了 Microsoft Excel
【发布时间】:2008-12-23 18:51:59
【问题描述】:

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

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

有什么聪明的 JavaScript 可以完成这个吗?

【问题讨论】:

  • 该死的我正在度假,但无法访问我的 PC。在工作中,我有 Javascript 代码,它会告诉您是否安装了 Excel(当然只有 IE)以及许多其他应用程序。你能等到 1 月 5 日吗? ;-)
  • 我很想看看你有什么。所以请在你回来时发布它。

标签: asp.net javascript excel web-applications


【解决方案1】:

没有。

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 谢谢。我会试试看,我对安全警告很好奇。
    【解决方案3】:

    为什么选择 Excel?如果我改为使用 OpenOffice.org 会怎样?

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

    【讨论】:

    • 如果您安装了 OpenOffice.org,您将不会使用此 Web 应用程序。我将编辑问题以更好地反映 Windows/IE/Excel 要求。
    【解决方案4】:
    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 插件。我对这个插件知之甚少——很可能它并不总是随office一起安装......但我认为,如果上面的结果为真,那就是安装了Excel的一个非常强烈的信号。当然它的用途可能有限,因为它在 IE 中不起作用,但也许你可以用它做点什么......

    【讨论】:

      【解决方案5】:

      您无法使用标准技术访问 Web 浏览器上下文之外的客户端信息。但我看到答案之一是使用一些 ActivX 对象来检测 Excel。无论如何,这些技术仅适用于 Windows 上的 Internet Explorer。麦克呢? Windows 上的其他浏览器,如 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.');
      

      【讨论】:

        【解决方案6】:

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

        如果你还坚持:

        尝试为 Excel 和 OpenOffice 创建 ActiveXObject。 如果失败,请重定向到 NoExcel.html 或发送 XMLRequest 到服务器。
        此外,您可以尝试通过 JavaScritp 找出是否存在 XLS 文件扩展处理程序。 最后,您可以安装 ActiveX,它会检查是否安装了 Excel。

        这适用于窗户。不知道Mac,Linux,移动...... 你可以打赌,任何你让它工作的方式都会在下一个修补程序中停止工作。

        【讨论】:

          猜你喜欢
          • 2014-09-03
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-09-29
          • 2012-04-02
          • 1970-01-01
          相关资源
          最近更新 更多