代码之家  ›  专栏  ›  技术社区  ›  pomarc

导出到HTML的Excel工作表中的深度链接

  •  0
  • pomarc  · 技术社区  · 14 年前

    我正在做一个项目,在这个项目中我必须将很多Excel文件导出到HTML。使用自动化和保存为HTML非常简单。

    问题是这些工作表中的许多都有指向其他文件工作表的链接。我必须找到一种方法来编写指向单个内部工作表的链接。

    将多页Excel文件导出为HTML时,Excel将创建一个 main.htm 文件,一个名为 filename_file 在这个文件夹中,它写下几个文件:一个CSS、一个XML文件列表、一个创建选项卡栏的文件和几个名为 sheetxxx.htm ,每个代表一个工作表。

    打开主文件时,可以单击底部的菜单栏,以便选择适当的工作表。这实际上是一个链接,它用 片式XXX.HTM 文件。当加载此文件时,将调用一个选择正确选项卡的javascript函数。

    导出的文件将发布在网站上。我将不得不发布每个文件,并将其他XLS文件的每个链接替换为匹配的HTM文件,找到打开正确工作表的方法。

    我认为我可以向已处理的HTM文件链接URL添加一个参数,例如 myfile.htm?sh=sheet002.htm 如果我要链接到的第二个工作表 myfile.htm (例如) myfile.xls )在导出它们之后,我可以将一个简单的javascript注入到每个主文件中,加载它们时,这些主文件可以检索 sh 参数与jquery(这很容易)并使用它以某种方式替换 frSheet 框架内容(在其中加载工作表),打开右侧内部工作表而不是默认工作表(这是我所称的深度链接),模拟用户单击选项卡时所发生的情况。

    最后一步不见了…:)我正在考虑不同的选项,例如替换 $("frSheet") 帧后 document.ready .

    有没有其他方法来实现这一点?

    1 回复  |  直到 10 年前
        1
  •  0
  •   pomarc    14 年前

    嗯,也许我找到了一个可行的方法。 使用来自的一些代码 http://jquery-howto.blogspot.com/2009/09/get-url-parameters-values-with-jquery.html 为了获得传递的参数,我编写了一个非常简单的代码来替换fssheet frame src:

        function getUrlVars()
    {
        var vars = [], hash;
        var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
        for(var i = 0; i < hashes.length; i++)
        {
            hash = hashes[i].split('=');
            vars.push(hash[0]);
            vars[hash[0]] = hash[1];
        }
        return vars;
    }
    
    $().ready(function () {
    
        var id = getUrlVars()["id"];
    
        if (id != null) {
            //  document.location = id;
          var fr= $("frame")[0];
          fr.src=id;
        }
    
    });
    

    必须按如下方式调用文件:

    Cartel1.htm?id=cartel1_file/sheet003.htm
    

    选择第三张纸。这似乎适用于IE、FFOX和Chrome。

    如果你有更好的主意,请告诉我。