Можно ли определить, установлен ли Microsoft Excel из веб-приложения? - PullRequest
3 голосов
/ 23 декабря 2008

Я работаю над веб-приложением (ASP.NET), в котором есть некоторые функции, требующие установки Microsoft Excel на клиенте. Я хотел бы отключить эти функции, если Excel нет.

Подходят только для Windows / IE / Excel. Это не веб-приложение с несколькими браузерами и несколькими ОС.

Какой-нибудь умный JavaScript, чтобы достигнуть этого?

Ответы [ 6 ]

6 голосов
/ 23 декабря 2008

номер

Вы не можете погрузиться в клиентскую машину достаточно глубоко, чтобы понять эту часть. Лучшее, что вы можете сделать, - это предположить, что он установлен, и тщательно обдумать, что произойдет, если это не так, или просто спросить пользователя.

2 голосов
/ 23 декабря 2008

Вы можете сделать что-то подобное, но вы получите все виды предупреждений безопасности:

<script>
var excelInstalled;
try 
{
    var excel = new ActiveXObject("Excel.Application");
    excelInstalled = true;
}
catch(e)
{
    excelInstalled = false;
}
alert("excelInstalled: " + excelInstalled);
</script>
1 голос
/ 12 мая 2010
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, потому что объекты navigator.mimeTypes в IE всегда пусты.

Проверяется наличие плагина MS Office. Я не очень разбираюсь в этом плагине - вполне возможно, что он не всегда устанавливается вместе с офисом ... Но я думаю, что если вышеприведенное возвращает true, это довольно сильный сигнал, что Excel установлен. Конечно, это, вероятно, ограниченное использование, так как он не работает в IE, но, возможно, вы можете что-то с этим сделать ...

1 голос
/ 23 декабря 2008

Почему Excel? Что если у меня вместо этого OpenOffice.org?

Просто предупредите пользователя, что вы собираетесь отправить ему, пометьте ссылку "Excel-файлом", и пусть он решит.

0 голосов
/ 23 декабря 2008

Это плохая идея с самого начала. Что бы ты ни пытался сделать - пересмотреть.

Если вы все еще настаиваете:

Попробуйте создать ActiveXObject для Excel, а затем для OpenOffice. Если это не удалось, перенаправьте на NoExcel.html или отправьте XMLRequest на сервер.
Кроме того, вы можете попытаться узнать через JavaScritp, есть ли обработчик расширения файла XLS. И наконец, вы можете установить свой ActiveX, который проверяет, установлен ли Excel.

Это для окон. Не знаю, Mac, Linux, мобильный ... Вы можете поспорить, что любой способ заставить его работать, перестанет работать со следующим исправлением.

0 голосов
/ 23 декабря 2008

Вы не можете получить доступ к информации о клиенте вне контекста веб-браузера, используя стандартные технологии. но я вижу, что один из ответов использует какой-либо объект ActivX для обнаружения Excel. в любом случае эти виды технологий работают только на Internet Explorer на Windows. а как насчет Mac? а как насчет других браузеров, таких как Opera, Firefox или Chrome на Windows? Я думаю, что лучше позволить пользователю сообщить вам об этом. просто спросите пользователя, установлен ли он в Excel или нет:

var isExcel = window.confirm('dear user if you have Microsoft Excel installed please click on ok, otherwise click on cancel. thank you.');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...