2010-06-01 8 views
0

Je travaille sur un projet où je dois exporter beaucoup de fichiers Excel en HTML. C'est assez simple en utilisant l'automatisation et l'enregistrement en html.Liens profonds dans les feuilles Excel exportés vers html

Le problème est que beaucoup de ces feuilles ont des liens vers des feuilles de calcul de certains autres fichiers. Je dois trouver un moyen d'écrire un lien vers une seule feuille de calcul interne.

Lorsque vous exportez un fichier Excel de plusieurs feuilles au format html, Excel crée un fichier main.htm, un dossier nommé filename_file, et dans ce dossier, il écrit vers le bas plusieurs fichiers: un css, une liste XML des fichiers, un fichier qui crée la barre d'onglets et plusieurs fichiers html nommés sheetxxx.htm, chacun représentant une feuille de calcul. Lorsque vous ouvrez le fichier principal, vous pouvez cliquer sur la barre de menu en bas de l'écran pour sélectionner la feuille appropriée. Il s'agit en fait d'un lien qui remplace un contenu de cadre par le fichier sheetxxx.htm. Lorsque ce fichier est chargé, une fonction JavaScript qui sélectionne l'onglet droit est appelée.

Les fichiers exportés seront publiés sur un site Web. Je devrai post-traiter chaque fichier et remplacer chaque lien vers les autres fichiers xls par le fichier htm correspondant, en trouvant un moyen d'ouvrir la bonne feuille de calcul.

Je pense que je pourrais ajouter un paramètre sur le lien fichier htm traité URL, comme myfile.htm?sh=sheet002.htm si je veux faire un lien vers la deuxième feuille de myfile.htm (par exemple myfile.xls). Après les avoir exportés, je pourrais injecter un simple JavaScript dans chacun des fichiers principaux qui, une fois chargés, pourraient récupérer le paramètre sh avec jQuery (c'est facile) et l'utiliser pour remplacer en quelque sorte le contenu du cadre frSheet (où les feuilles sont chargées), ouvrant la feuille intérieure droite et non la feuille par défaut (c'est ce que j'appelle la liaison profonde), imitant ce qui se passe quand un utilisateur clique sur un onglet.

Cette dernière étape est manquante ... :) Je considère différentes options, telles que le remplacement de la source de l'$("frSheet") après document.ready.

Existe-t-il d'autres façons de l'implémenter?

Répondre

0

mmh peut-être que j'ai trouvé un moyen qui fonctionne, après tout. en utilisant un code de http://jquery-howto.blogspot.com/2009/09/get-url-parameters-values-with-jquery.html pour obtenir le paramètre passé, j'ai écrit un code très simple de remplacer le cadre 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; 
    } 

}); 

le fichier doit être appelé comme dans:

Cartel1.htm?id=cartel1_file/sheet003.htm 

à sélectionnez la troisième feuille. cela semble fonctionner dans IE, FFox et Chrome.

Si vous avez une meilleure idée, s'il vous plaît faites le moi savoir.

Questions connexes