通过普通的HTML链接打开Excel文件

6
我目前遇到的问题是,我想在我们的企业内部网站上放置一个指向共享Excel表格的链接。不幸的是,普通的“href =”http:...“”链接会自动打开并将其保存到本地计算机,而不能在服务器上进行共享表格的工作。
我已经阅读了一些资料,发现了一些解决方案,例如:“file://///SERVER/PATH/Excel.xls”,但很遗憾这个解决方案无济于事。
如果有相关信息的话:我的服务器版本是Windows Server 2012。
3个回答

10

如果已安装Excel,您可以通过在Excel文件网址前面添加ms-excel:ofe|u|来告诉浏览器用Excel打开。

<a href="ms-excel:ofe|u|http:...xls">Open in Excel</a> 

1
我无法在本地运行它 - Excel 抛出“找不到文件...”(目录是100%准确的,文件与 index.html 在同一个文件夹中)。这个设计只能通过 http 工作吗? - Rafał
能否以这种方式在Excel中打开OData数据源? - gtu

8
HTTP是一种无状态协议。这意味着当用户通过http从内网下载文件时,他们下载的是副本而不是原始文件。任何更改只会出现在他们的副本中,这可能导致许多副本包含不同但有重叠更改。您肯定不希望出现这种情况!
而且...你的用户如何上传他们的更改呢?
您需要在网络上创建一个共享文件夹,并将工作簿放在其中。然后,在内部网络的链接中使用file:///SERVER/PATH/FILE.xls格式来指向服务器上实际的文件。
我建议您首先在桌面上创建一个简单的HTML文档,以了解file:///路径格式。例如:
<html>
    <head />
    <body>
        <a href="file:///SERVER/PATH/FILE.xls">Click</a>
    <body>
 <html>

请将此文本保存在记事本中,并将扩展名从.txt改为.html

您也可以直接在Windows资源管理器的地址栏中键入file:///路径,以便测试路径,而不需要使用上述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"

非常感谢您的详细回复。我已经尝试过了,但是它并没有起作用,虽然我忘记检查是否有任何控制台日志记录该错误。我在控制台中得到了以下输出:不允许加载本地资源:file:///SQL/inetpub/wwwroot/tabellen/omv/2015-OMV-Anmeldung.xls。 这对我来说很奇怪,因为所有用户都有权访问和更改该文件。 - noa-dev
我在网站架构之外创建了一个文件夹并共享给所有人 - 结果是相同的:每个人都可以手动访问它,但单击链接会打印出相同的错误。 - noa-dev
1
你试过将文件复制到本地机器上,然后使用类似 file:///c:/Excel.xls 这样的方式吗?这样你就可以找出是网络还是浏览器引起了问题。 - 3-14159265358979323846264
看这里...http://stackoverflow.com/questions/5615321/is-it-possible-to-open-an-excel-file-in-its-current-location-not-download-it ...和这里...http://superuser.com/questions/676087/force-ie-to-open-local-files-in-the-intranet-zone-trusted-sites ...似乎你需要跳过一些障碍。我能想到的一种方法是,假设您允许运行内部网js并访问本地资源,那么可以通过运行打开文件的脚本的链接来实现。似乎默认下载是有意为之以保护用户。 - 3-14159265358979323846264
1
更新了我的答案,展示了如何通过脚本来实现这个。 - 3-14159265358979323846264
显示剩余3条评论

2

如果您尝试在Excel中打开本地文件,请使用以下链接。

<a href="ms-excel:ofe|u|file:///d:/folder/aaa.xlsx">Open in Excel</a>

注意:文件路径应该使用正斜杠(/)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接