Глубокие ссылки в листах Excel, экспортируемых в HTML - PullRequest
0 голосов
/ 01 июня 2010

Я работаю над проектом, в котором я должен экспортировать много файлов Excel в html. Это довольно просто, используя автоматизацию и сохраняя как HTML.

Проблема в том, что многие из этих листов имеют ссылки на рабочие листы некоторых других файлов. Я должен найти способ написать ссылку на один внутренний лист.

Когда вы экспортируете многослойный файл Excel в HTML, Excel создает файл main.htm, папку с именем filename_file, и внутри этой папки записывает несколько файлов: CSS, список файлов XML, файл, который создает панель вкладок и несколько html-файлов с именем sheetxxx.htm, каждый из которых представляет рабочий лист.

Когда вы открываете основной файл, вы можете щелкнуть строку меню внизу, которая позволяет вам выбрать соответствующий лист. На самом деле это ссылка, которая заменяет содержимое фрейма файлом sheetxxx.htm. Когда этот файл загружается, вызывается функция JavaScript, которая выбирает правую вкладку.

Экспортированные файлы будут опубликованы на веб-сайте. Мне придется опубликовать обработку каждого файла и заменить каждую ссылку на другие xls-файлы на соответствующий htm-файл, чтобы найти способ открыть правильный лист.

Я думаю, что я мог бы добавить параметр к обработанному URL-адресу ссылки на файл htm, например myfile.htm?sh=sheet002.htm, если я хочу связать со вторым рабочим листом myfile.htm (например, myfile.xls). После того, как я их экспортировал, я мог бы вставить простой JavaScript в каждый из основных файлов, который при загрузке мог бы получить параметр sh с помощью jQuery (это легко) и использовать его для какой-то замены frSheet содержимое кадра (где загружаются листы), открывающий правый внутренний лист, а не лист по умолчанию (это то, что я называю глубокими связями), имитирующее то, что происходит, когда пользователь нажимает на вкладку.

Этот последний шаг отсутствует ... :) Я рассматриваю различные варианты, такие как замена источника кадра $("frSheet") после document.ready.

Есть ли другие способы реализовать это?

1 Ответ

0 голосов
/ 01 июня 2010

ммч, может быть, я нашел способ, который работает, в конце концов. используя некоторый код из http://jquery -howto.blogspot.com / 2009/09 / get-url-parameters-values-with-jquery.html , чтобы получить переданный параметр, я написал очень простой код для замены кадра fsSheet 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.

Если у вас есть идея получше, пожалуйста, дайте мне знать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...