我目前遇到一个问题,我想在我们的内联网中放置一个共享Excel工作表的链接。不幸的是,正常的href="http:..."
链接会自动打开并将其保存到本地计算机,而不是在服务器本身的共享工作表上启用工作。
我在这里读了一下,找到了像file://///SERVER/PATH/Excel.xls
这样的解决方案,但遗憾的是解决方案没有做任何事情。
如果相关:我的服务器版本是Windows Server 2012
HTTP是无状态协议。这对您来说意味着当您的用户通过http从Intranet下载文件时,他们正在下载副本,而不是原始副本。他们所做的任何更改只会出现在他们的副本中,然后您最终会获得同一工作簿的大量副本,这些副本具有不同的,可能重叠的更改。你不希望这样!
而且......您的用户甚至会如何上传他们的更改?
您需要在网络上创建共享文件夹并将工作簿放在那里。然后,您可以在Intranet上的file:///SERVER/PATH/FILE.xls
链接中使用<a />
格式,以将用户定向到服务器上的实际文件。
我建议您首先在桌面上创建一个简单的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"
您可以通过添加ms-excel:ofe | u |告诉浏览器使用Excel(如果已安装)打开在您的Excel文件Url前面。
<a href="ms-excel:ofe|u|http:...xls">Open in Excel</a>