Откройте файл excel по обычной html-ссылке

В настоящее время я сталкиваюсь с проблемой, когда я хотел бы разместить ссылку на общий лист Excel в нашей интрасети. К сожалению, обычная ссылка href="http:..." автоматически открывается и сохраняет ее на локальном компьютере вместо того, чтобы разрешить работу с общим листом, который находится на самом сервере.

Я немного прочитал здесь и нашел такие решения, как: file://///SERVER/PATH/Excel.xls но, к сожалению, это решение ничего не делает.

Если это актуально: моя версия сервера — Windows Server 2012.


person noa-dev    schedule 17.07.2015    source источник


Ответы (2)


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

А также… как ваши пользователи вообще собираются загружать свои изменения?

Вам нужно создать общую папку в вашей сети и поместить туда книгу. Затем вы можете использовать формат file:///SERVER/PATH/FILE.xls в своих ссылках <a /> в интрасети, чтобы направить пользователя к фактическому файлу на сервере.


Я бы порекомендовал вам начать с создания простого HTML-документа на рабочем столе, чтобы ознакомиться с форматом пути file:///. Например

<html>
    <head />
    <body>
        <a href="file:///SERVER/PATH/FILE.xls">Click</a>
    <body>
 <html>

сохраните это в блокноте и переименуйте расширение с .txt на .html.

Вы также можете ввести file:/// пути прямо в адресную строку проводника Windows, что позволяет тестировать пути, не прибегая к упомянутому выше html-документу.

К СОЖАЛЕНИЮ! Похоже, что поведение браузера по умолчанию заключается в том, чтобы всегда загружать ссылку, а не открывать ее (даже если это локальный ресурс), поэтому, если вы действительно хотите ее открыть, вы должны прибегнуть к изменению разрешений интрасети вашего браузера, чтобы разрешить JS доступ локальные ресурсы, что позволит вам использовать описанную ниже технику.


Эта статья (http://www.codeproject.com/Articles/113678/How-to-execute-a-Local-File-using-HTML-Application) использует

<script type="text/javascript" language="javascript">
    function RunFile() {
    WshShell = new ActiveXObject("WScript.Shell");
    WshShell.Run("c:/windows/system32/notepad.exe", 1, false);
    }
</script>

чтобы открыть блокнот. Вы можете использовать аргументы командной строки с Excel.exe (https://support.office.com/en-za/article/Command-line-switches-for-Excel-321cf55a-ace4-40b3-9082-53bd4bc10725), чтобы сообщить это какой путь к файлу...

Excel.exe "C:\PATH\Excel.xls"
person 3-14159265358979323846264    schedule 17.07.2015
comment
Спасибо за ваш подробный ответ. Я уже пробовал это, и это не сработало, хотя я забыл проверить, есть ли какие-либо журналы консоли для этой ошибки. Я получаю следующий вывод в консоли: Не разрешено загружать локальный ресурс: файл:///SQL/inetpub/wwwroot/tabellen/omv/2015-OMV-Anmeldung.xls Что для меня неверно, поскольку у всех пользователей есть право доступа и изменения файла - person noa-dev; 17.07.2015
comment
Не помещайте файл в файловую структуру вашего сайта! Поместите его в другую папку, не имеющую отношения к вашему веб-сайту, и поделитесь ею. Управление разрешениями уже достаточно плохо, когда в дело вступает IIS! - person 3-14159265358979323846264; 17.07.2015
comment
создал папку за пределами архитектуры моего веб-сайта и поделился ею со всеми - тот же результат: каждый может получить к ней доступ вручную, но при нажатии на ссылку выводится та же ошибка - person noa-dev; 17.07.2015
comment
В порядке. Вы должны сделать это в любом случае :0)! Но это также могут быть разрешения безопасности в вашем браузере... на самом деле это более важная информация... stackoverflow.com/questions/5074680/ - person 3-14159265358979323846264; 17.07.2015
comment
Вы пытались скопировать файл на локальный компьютер, а затем сделать что-то вроде file:///c:/Excel.xls? Таким образом, вы можете выяснить, является ли причиной проблемы сеть или браузер. - person 3-14159265358979323846264; 17.07.2015
comment
Теперь я сделал :) - локально файл загружается, когда я нажимаю на ссылку, ошибка не возникает. Но я тоже не хочу скачивать файл. Я хочу, чтобы пользователь мог ОТКРЫТЬ общий файл excel, работать в нем и сохранять его, чтобы все изменения были внесены в один файл, а не каждый из них имел свой собственный файл. - person noa-dev; 17.07.2015
comment
Посмотрите здесь... stackoverflow.com/questions/5615321/... и здесь... superuser.com/questions/676087/ ... похоже, вам придется пройти через некоторые препятствия. Я могу придумать один из способов, предполагая, что вы разрешаете запуск js в интрасети и доступ к локальным ресурсам, это ссылка, которая запускает скрипт, открывающий файл. Кажется, что загрузка по умолчанию преднамеренна, чтобы защитить пользователей. - person 3-14159265358979323846264; 17.07.2015
comment
Обновлен мой ответ, чтобы показать, как это сделать с помощью сценариев. - person 3-14159265358979323846264; 17.07.2015

Вы можете указать браузеру открывать Excel (если он установлен), добавив ms-excel:ofe|u| перед URL-адресом вашего файла Excel.

<a href="ms-excel:ofe|u|http:...xls">Open in Excel</a> 
person user916867    schedule 24.10.2018
comment
Я не могу запустить его локально - excel не может найти файл... (каталог точен на 100%, файл находится в той же папке, что и index.html). Этот дизайн работает только через http? - person Rafał; 18.03.2019
comment
Можно ли таким образом открыть источник данных OData в Excel? - person gtu; 18.03.2021