Comment placer un tableau excel dans un article

Ceci est une ARCHIVE, peut-être périmée. Vérifiez bien les compatibilités !

Une Boucle dans votre squelette pour afficher « facilement » un tableau Excel®

Mise à jour du 11 juin 2014 : cette contribution importe un document html complet dans un autre, ce qui produit un code pour le moins sale et laisse le navigateur se débrouiller pour la restitution. Par ailleurs l’inclusion brute d’un document html joint présente un sérieux risque pour la sécurité.

On préfèrera probablement utiliser Les modèles d’incrustation de documents et leurs filtres, disponibles depuis SPIP 2.0

Première étape : Préparation dans Excel

Enregistrez votre feuille excel en tant que page web (menu : fichier/enregistrer en tant que page web/). Dans la fenêtre de dialogue qui s’ouvre, pensez à cliquez sur « sélection:feuille » pour n’enregistrer que la feuille active et pas tout le classeur !!
Donnez un nom à votre page et enregistrez.

Deuxième étape : Modifier le squelette Spip article.html

Dans le squelette de vos articles, insérez simplement ce code là ou vous voulez voir apparaître le tableau :

<BOUCLE_tableau(DOCUMENTS) {id_article} {mode=document} {doublons} {"<br />"}>
<? 
require("#URL_DOCUMENT"); 
?>
</BOUCLE_tableau>

Troisième étape : Un nouvel article Spip

Dans spip, créez un nouvel article. Téléchargez la page précédement enregistrée en tant que document joint.

Visitez l’exemple ici

Discussion

5 discussions

  • J’ai fait un petit script php qui permet de « nettoyer » le contenu de html sorti d’un tableur ( pour ma part je trouve qu’avec OpenOffice le html est mieux généré). Celui-ci n’insère que le contenu compris entre les balises body du document html.

    Donc à la place de

    <?
    require("#URL_DOCUMENT");
    ?>

    Vous mettez

    <?php
    // $texte recoit le contenu du fichier inclus
    
    $texte = file_get_contents('#URL_DOCUMENT');
    
    // Le tableau $matches recoit les resultats de la regexp, qui est insensible a la casse (le 'i').
    // Elle est calculee sur toute la chaine $texte ( le 's')
    // La regexp cherche ce qui est entre les balises body quelque soit leur forme.
    
    preg_match_all('/<body[^>]*>(.*)<\/body[^>]*>/is',$texte,$matches,PREG_PATTERN_ORDER);
    
    //on renvoie le resultat sans les balises .
    echo $matches[1][0];
    ?>

    et ça roule

    Répondre à ce message

  • 1

    Que se passe-t-il si, au lieu d’un tableau Excel, un rédacteur joint du code php, avec pourquoi pas de mauvaises intentions ?

    Il me semble un peu dangereux d’utiliser la fonction « require » sur un fichier venant de l’extérieur.

    • Oui, sûrement. Mais en l’occurence, une seule personne s’occupe de ce site. Mais je reste ouvert à toute autre proposition.

    Répondre à ce message

  • 3
    klaus++

    Salut,
    cette contrib est un hack qui marche bien - en principe. Ce qu’il faudrait tester, c’est ce qui arrive une fois le code passé par tidy comme c’est fait sur spip.net.

    Voici ce qu dit tidy sur l’exemple http://www.alej.fr/article.php3?id_...(extrait) :

    line 48 column 2 - Warning: discarding unexpected <body>
    line 120 column 2 - Warning: discarding unexpected <html>
    line 124 column 1 - Warning: discarding unexpected <head>
    line 78 column 2 - Warning: <meta> isn't allowed in <div> elements
    line 78 column 2 - Warning: <meta> isn't allowed in <div> elements
    line 78 column 2 - Warning: <meta> isn't allowed in <div> elements
    line 78 column 2 - Warning: <link> isn't allowed in <div> elements
    line 78 column 2 - Warning: <style> isn't allowed in <div> elements
    line 1245 column 1 - Warning: discarding unexpected <body>
    line 1251 column 5 - Warning: adjacent hyphens within comment
    (etc.)
    line 129 column 1 - Warning: <style> inserting "type" attribute
    line 1256 column 1 - Warning: <div> proprietary attribute "x:publishsource"
    line 1261 column 1 - Warning: <table> proprietary attribute "x:str"
    line 1270 column 2 - Warning: <tr> proprietary attribute "height"
    (etc.)
    line 118 column 2 - Warning: trimming empty <p>
    0 error / 57 warnings
    • Il est certain que pour la pureté du code, il faudrait nettoyer le fichier html contenant le tableau excel. Mais le but étant de permettre à une secrétaire, sans connaissance au niveau du codage, d’introduire simplement les tableaux qu’elle avait l’abitude de faire avant d’avoir un site à s’occuper, ce n’est pas possible.

      Si quelqu’un à une solution pour rendre le code « propre », je suis preneur.

      Sky

    • Pour être non sexiste, dans la contribution précédente, on peut remplacer « une secrétaire » par « une personne » !
      C’est à petits pas, sans cesse relancés que le monde avance !!!

    • Désolé, mais le site à été fait en fonction des aptitude de LA secrétaire de l’établissement. Donc pas de sexisme, juste un cas particulier.

    Répondre à ce message

  • 1

    Je trouve cette fonction très intéressante, mais le problème est qu’après on ne peut plus joindre aucun document téléchargeable au milieu d’un article par exemple, sans avoir une erreur. Une solution ?

    • La solution employée sur le site d’exemple, est un squelette spécifique pour la rubrique nécéssitant l’insersion de tableau.
      L’autre solution serait, dans la mesure ou l’on aurait qu’un seul tableau par articles, serait de leur donner à tous le même nom ( par exemple « tableau ») et de faire une boucle spécifique pour ce nom de document et une deuxième pour le reste.
      Une dernière idée : les boucles document peuvent reconnaître et sélectionner un type de document en jpeg, gif ou png, est-ce que ça fonctionnerait pour un xls ?

    Répondre à ce message

  • 1

    Bonjour,

    ca marche a partir de quelle version de spip ça ?
    Par ailleurs, d’ou proviennent les couleurs du tableau ? CSS ?

    Merci

    • je pense que ça fonctionne sur toutes les version de spip, mais celle qui est en cours pour l’exemple est la 1.7.

      Pour les couleur, elle viennent du tableau excel.

    Répondre à ce message

Ajouter un commentaire

Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :

  • Désactiver tous les plugins que vous ne voulez pas tester afin de vous assurer que le bug vient bien du plugin X. Cela vous évitera d’écrire sur le forum d’une contribution qui n’est finalement pas en cause.
  • Cherchez et notez les numéros de version de tout ce qui est en place au moment du test :
    • version de SPIP, en bas de la partie privée
    • version du plugin testé et des éventuels plugins nécessités
    • version de PHP (exec=info en partie privée)
    • version de MySQL / SQLite
  • Si votre problème concerne la partie publique de votre site, donnez une URL où le bug est visible, pour que les gens puissent voir par eux-mêmes.
  • En cas de page blanche, merci d’activer l’affichage des erreurs, et d’indiquer ensuite l’erreur qui apparaît.

Merci d’avance pour les personnes qui vous aideront !

Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.

Qui êtes-vous ?
[Se connecter]

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document

Suivre les commentaires : RSS 2.0 | Atom