2010-06-01 72 views
0

我正在开发一个项目,我必须将很多Excel文件导出为html。这是非常简单的使用自动化和保存为HTML。在Excel工作表中的深度链接导出为html

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

当您导出多页Excel文件为HTML,Excel创建一个main.htm文件,名为filename_file文件夹,这个文件夹里面写下几个文件:一个css,文件的XML列表,创建一个文件标签栏和几个名为sheetxxx.htm的html文件,每个文件都代表一张工作表。

当您打开主文件时,您可以单击底部的菜单栏,让您选择适当的工作表。这实际上是一个链接,用sheetxxx.htm文件替换帧内容。当这个文件被加载时,一个选择正确选项卡的JavaScript函数被调用。

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

我认为我可以一个参数添加到加工的htm文件链接的URL,如myfile.htm?sh=sheet002.htm如果我想链接到的myfile.htm(例如myfile.xls)第二个工作表。在导出它们之后,我可以在每个主文件中插入一个简单的JavaScript文件,这些文件在加载时可以使用jQuery检索sh参数(这很容易),并用它来取代frSheet帧内容(其中表单被加载),打开右侧内部表单而不是默认表单(这就是我称之为深度链接),模仿用户点击选项卡时发生的情况。

最后一步丢失了...... :)我正在考虑不同的选项,例如在document.ready之后替换$("frSheet")帧的来源。

还有其他方法可以实现吗?

回答

0

mmh也许我找到了一种方法,毕竟。 利用http://jquery-howto.blogspot.com/2009/09/get-url-parameters-values-with-jquery.html一些代码来获取传递的参数,我写了一个非常简单的代码来替代fsSheet框架源:

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。

如果您有什么更好的想法,请让我知道。