h1

Mes 1ers pas avec ODS TAGSETS.EXCELXP (1/3)

mai 12, 2008

SAS propose une alternative au PROC EXPORT pour créer un fichier Excel à partir de données SAS. Il s’agit de l’ODS TAGSETS.EXCELXP. Celle-ci fait preuve de flexibilité tant pour ajouter les labels des variables, définir la largeur des colonnes qu’ajouter les filtres aux colonnes ou encore créer plusieurs feuilles par fichier Excel. Voici donc le premier des articles consacrées à mes découvertes de ces derniers jours sur le sujet : « syntaxe de base et options changeables au niveau de la procédure Proc Report ».

1. La syntaxe de base : tout d’abord, il s’agit d’encadrer la proc report, proc print, ou autre entre deux instructions ODS TAGSETS.EXCELXP. La première instruction servira en premier lieu à définir le nom et la destination du nouveau fichier Excel. La seconde instruction fermera le processus de création du fichier Excel.

ods tagsets.excelxp file=‘C:/excel/mon_nouveau_fichier.xls’;
   proc report data=resultats;
      columns pop grp subgrp check;
      define pop    / display ‘Pop’;
      define grp    / display ‘Pays’;
      define subgrp / display ‘Ville’;
      define check  / display ‘Check’;
      run;
ods tagsets.excelxp close;

Un premier essai au résultat et on se rendra compte de plusieurs « imperfections » que l’on souhaitera changer à commencer par la largeur des colonnes.

2. Changer la largeur des colonnes : avec un PROC REPORT, il est possible d’affiner l’apparence (le STYLE) des colonnes et notamment celui de la largeur des colonnes. Si on veut que toutes les colonnes soient de la même largeur, l’option STYLE(COLUMN) sera ajoutée dans l’instruction PROC REPORT, sinon elle sera ajoutée dans chaque instruction DEFINE. Si un grand nombre de colonnes doit avoir la même largeur, il est possible de combiner les deux méthodes. Tout d’abord, la largeur la plus fréquente dans l’instruction PROC REPORT est définie. Ensuite, les colonnes devant avoir une valeur différente sont actualisées dans leur instruction DEFINE.

proc report data=resultats style(column)=[cellwidth=3cm];
   columns pop grp subgrp check;
   define pop    / display ‘Pop’
                   style(column)=[cellwidth=5cm];
   define grp    / display ‘Pays’;
   define subgrp / display ‘Ville’;
   define check  / display ‘Check’;
run;

Note : Les options WIDTH= et FLOW des instructions DEFINE perdent ici leur utilisé puisque le texte n’est pas coupé.

3. Centrer ou aligner à gauche, à droite : de la même manière que définir la largeur des colonnes, changer l’alignement du texte (pas des nombres) est possible avec JUST=center (left ou right). Par défaut, les textes sont alignés à gauche et les nombres sont alignés à droite. On peut choisir de changer l’alignement :

  • soit au niveau des valeurs (style(column)),
  • soit au niveau du nom des variable (style(header)).

Gérer certains formatage avec TAGATTR= est un autre attribut possible de STYLE(COLUMN). Voici deux exemples d’application :

  • Sur le même principe que le format Zw., les zéros situées en entête d’une variable numérique sont conservés. On ajoutera autant de zéro que nécessaire.
  • Les variables numériques sont affichées comme du texte, si l’arobas @ est utilisé.
  • Mais il ne semble pas possible de combiner les deux notations. Mais corrigez-moi si je me trompe.

proc report …;
   define check    / display ‘Check’
                     style(column)=[tagattr=’format:000′];
   define check    / display ‘Check’
                     style(column)=[tagattr=’format:@’];
run;

4. Un nom de colonne commun à plusieurs colonnes : sous Excel, il est très simple de sélectionner deux cellules et de demander à ce qu’elles n’en forment plus qu’une seule. Pour faire la même chose en SAS, on fait appel à la syntaxe de PROC REPORT.

   columns pop (‘Zone géographique’) grp subgrp check;

Si on choisi de combiner des cellules, l’ajout d’un filtre sur les colonnes concernées peut paraître inapproprié. En effet, le filtre n’utilisera que les valeurs de la première colonne.

Dans la seconde partie (lundi prochain) sur ODS TAGSETS.EXCELXP, vous verrez comment modifier les couleurs, la police de caractère, etc. en créant un template.

Annexe : data set servant d’exemple

data resultats;
   input pop grp $2. subgrp $5. check $4.;
   datalines;
1 AL Alger 001A
1 AL Oran  003
1 MO Rabat 002
2 CH Bern  001A
2 NO Oslo  004
;
run;

7 commentaires

  1. […] TAGSETS.EXCELXP est une alternative au PROC EXPORT. Dans une première partie, vous avez vu comment modifier la largeur d’une colonne, gérer l’alignement des […]


  2. Bonjour,
    j’ai voulu essayer de créer un fichier Excel comme l’énonce la procédure ci-dessus mais cela ne fonctionne pas. Quelle version de SAS faut-il avoir ?
    Je travaille avec sas 9.1.

    Merci d’avance
    lc


  3. Après avoir discuté avec Laurence, nous avons trouvé que l’ouverture automatique de la fenêtre Report sous Windows posait problème. En ajoutant NOWD dans l’instruction PROC REPORT, le problème a été résolu.


  4. Bonjour
    J’utilise l’ODS TAGSETS.EXCELXP. mais avec un TEMPLATE. Je n’arrive pas à centrer le contenu de mes colonnes, l’instruction just=center n’est pas prise en compte.
    Avez-vous une solution?
    Merci


  5. Bonjour,

    Alors que le style cellwidth=2in fonctionne avec ods tagset.excelxp et ods rtf, l’option just=center ne fonctionne pas chez moi avec tagset.excelxp mais avec ods rtf. C’est probablement un des fixes qui viendront dans l’avenir.

    En effet, on remarque d’autres problèmes avec ods tagsets.excelxp : il faut utiliser des inches et non des centimètres alors qu’ods rtf accepte les deux.

    Je n’ai pas de solution dans l’immédiat pour centrer votre texte. Au mieux, je peux vous renvoyer au tagattr pour un alignement à gauche des nombres.

    Si par hazard, vous trouvez une solution, n’hésitez pas à la communiquer.

    Véronique


  6. […] lisible par Excel. Pour vous familiariser avec cette syntaxe, je vous invite à lire les articles : Mes premiers pas avec ODS TAGSETS.EXCELXP, partie 1, partie 2 et partie […]


  7. […] Mes premiers pas avec ODS TAGSETX.EXCELXP (1/3) […]



Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s

%d blogueurs aiment cette page :