2012-02-21 217 views
5

我已经通过我的ruby-on-rails应用程序在Excel电子表格中放置了超链接。链接是一些特权页面,需要登录后,我应该采取请求的页面。然而,发生什么事是登录后我在网站的主页上朗读。有趣的是,当我右键单击Excel中的链接并将链接粘贴到网页浏览器网址中时,它按预期工作。所以我不认为这是我的应用程序的错,而是我失踪的Excel中的某些东西?Excel链接不会加载页面,但是当链接粘贴到浏览器中时它就起作用。

我的情况是几乎相同的,因为这场景: http://www.geekstogo.com/forum/topic/289186-excel-2007-hyperlink-loads-web-login-screen-not-linked-urlplease-help-me/

+0

你确定的超级链接文字和网址AE相同?文本可能会显示完整地址(因此它在复制粘贴时起作用),但底层URL格式错误? – Widor 2012-02-21 11:06:01

+0

我复制它的方式是在excel表单中右键单击它,然后将地址字段中的所有内容复制到浏览器,该工作正常。 如果已经登录,粘贴链接会将我带到页面,但在Excel中单击相同的内容需要我一次登录页面(然后到主页)。 – 2012-02-21 11:10:01

回答

11

这个问题通常发生在IE和我也面临同样的问题。

解决方案是非常简单的

  1. 在您的公共文件夹中创建一个将redirect.html页面(公用文件夹,因为你正在使用ROR)
  2. 拷贝到你将redirect.html

<html> 
<body> 
Please wait, loading your page... 
<script type="text/javascript"> 
function getQuerystring(key) { 
key = key.replace(/[\[]/,"\\\[").replace(/ [\]]/,"\\\]"); 
var regex = new RegExp("[\\?&]"+key+"=([^&#]*)"); 
var query = regex.exec(window.location.href); 
return query[1]; 
} 
window.location = window.location.protocol + "//" + window.location.host + "/" + getQuerystring('page'); 
</script> 
</body> 
</html> 

  • 你在Excel中构建的联系应该被修改

    对于如旧的链接 - http://test.com/post/comments/1 新的链接应该是 - http://test.com/redirect.html?page=post/comments/1

  • 您需要通过URL的一部分(基本URL)为PARAM
  • 这是如何工作的。

    当用户点击excel中的链接时,它指向redirect.html并且javascript构造实际的URL并再次重定向到适当的页面,如果已经登录,用户将被导航到实际页面,否则重定向到登录/主页面。

    1

    不知道这是一个真正的答案,但我有我的应用程序有同样的问题。

    整个应用程序,包括主页,都受到保护(我正在使用Devise)。因此,无论何时用户想要访问http://myapp,它都会将其重定向到http://myapp/users/sign_in

    我认为设计使用301或302重定向到登录屏幕。

    我的发现是,在Office中点击链接并在IE中打开无法适应此重定向(当Chrome是默认浏览器时没有问题)。它与您的设置相匹配吗?

    最终,我发现没有其他解决方案,但直接链接到登录页面...也许有其他的选择,但我仍然在寻找他们。

    编辑:发现这篇文章(从2006)about a bug in Outlook这完全符合我们的情况。 同样,不是一个解决方案,但至少是一个解释。

    +1

    确实,Chrome是我的默认浏览器。这个错误在Firefox和Chrome上都是可重现的。虽然我没有在IE上检查过它。谢谢你的帮助!请张贴您提出的任何解决方案。 – 2012-02-22 05:38:27

    +0

    提到的错误与我们的情况完全吻合。我无法访问服务器,@Bharath提出的其他解决方案对我无效。所以这个答案不是答案,但至少它是一个解释,它应该被标记为有效的。感谢皮埃尔的研究。 – 2012-07-11 17:43:37

    +0

    MS质量保证并不是很容易达到。我尽了我最大的努力,并在[相关的论坛帖子]上发布了这个问题(http://forums.asp.net/t/1587925.aspx/2/10?Excel+Hyperlink+Session+Problem)。我希望这个错误能够从ASP.NET论坛走向Excel工程。如果你知道更好的方式联系他们,请随时这样做! – 2012-07-11 18:34:40

    0

    这是Excel的internal URL handling问题,它存在现代网页设计模式(例如会话+重定向)的问题。

    这是一个客户端解决方案,它绕过了Excel的内部机制,并使用操作系统默认的URL处理程序。请注意,由于它使用宏,因此此方法需要适当的安全设置。

    在工作表中的VBA模块,添加如下代码:

    Option Explicit 
    
    Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (_ 
        ByVal hWnd As Long, _ 
        ByVal Operation As String, _ 
        ByVal Filename As String, _ 
        Optional ByVal Parameters As String, _ 
        Optional ByVal Directory As String, _ 
        Optional ByVal WindowStyle As Long = vbMinimizedFocus _ 
    ) As Long 
    
    Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink) 
        ShellExecute 0, "Open", Target.Address 
    End Sub 
    

    这是基于twoother SO答案的答案。

    -1

    为了使这项工作简单地与您的网站的网址替换引号内的文字Target.Address这样

    ShellExecute 0, "Open","http://www.stackoverflow.com" 
    
    相关问题