Créer en 5 minutes un nouveau style pour vos
Transcription
Créer en 5 minutes un nouveau style pour vos
www.programmeur-pro.com Créer en 5 minutes un nouveau style pour vos fichiers générés avec ODS! ! Le sorties par défaut de ods rtf, ods pdf et ods tagsets.excelxp sont loin d’être utilisable de prime abord à cause des couleurs et de la police de caractère utilisé. Testez par vous même avec cet exemple. ! data one; length client $50 dob $10 city $50; client='Michel'; dob='1975-09-14'; city='Cap Town'; output; client='Hugues'; dob='1964-11-30'; city='Tokyo'; output; run; ! ods listing close; ods rtf file='C:/…./mesclients.rtf'; proc print data=one noobs; run; ods rtf close; ods listing; ! Avec peu d’efforts vous pouvez créez un style à partir d’un style existant en modifiant quelques paramètres. C’est ce que je vous explique dans ce document. www.programmeur-pro.com 1 www.programmeur-pro.com Quels sont les styles de templates à disposition par défaut ?! ! Pour le savoir, utilisez le code suivant : ! proc template; list styles; run; ! Une cinquantaine de styles apparaissent. ! Pour utiliser un de ces styles, ajoutez l’option style. ! ods listing close; ods rtf file='C:/…./mesclients.rtf' style=styles.sasweb; proc print data=one noobs; run; ods rtf close; ods listing; ! Parmi ces styles on trouve styles.default, styles.printer, styles.rtf et aussi styles.sasweb qui est beaucoup plus sympathique. ! Voir le code source des styles! ! Pour voir le code source de ces styles dans la log, utilisez le code suivant : ! proc template; source styles.default; *source styles.printer; *source styles.rtf; run; ! En regardant de plus près vous verrez que styles.default est celui qui a le plus d’information. Toutes les paramètres y sont définis explicitement. ! styles.printer utile comme source styles.default et effectue quelques changements sur certains paramètres. ! Enfin, styles.rtf utilise comme source styles.printer et effectue aussi quelques changements. ! Créer votre propre style! ! Le code suivant crée un nouveau style, que nous appelleront mycompany à partir du style default. Copiez ce code et changez les valeurs à votre convenance. ! ! www.programmeur-pro.com 2 www.programmeur-pro.com proc template; Define Style styles.mycompany; parent = styles.default; ! ! ! ! ! ! style SystemTitle from SystemTitle / background = _undef_ font_face = 'Arial, Courier New' font_style = roman /*par défaut foreground = black /*par défaut font_weight = medium /*par défaut font_size = 14pt /*par défaut : italic bleu foncé : bold : 16pt */ */ */ */; style SystemFooter from SystemFooter / background = _undef_ font_face = 'Arial, Courier New' font_style = roman /*par défaut foreground = black /*par défaut font_weight = medium /*par défaut font_size = 14pt /*par défaut : italic bleu foncé : bold : 16pt */ */ */ */; style Body from Body / leftmargin = _undef_ rightmargin = _undef_ topmargin = _undef_ bottommargin = _undef_; style Header from Header / background = _undef_ font_face = 'Arial, Courier New' font_style = roman /*par défaut : roman foreground = black /*par défaut bleu foncé font_weight = medium /*par défaut : bold font_size = 10pt /*par défaut : 14pt just = left /*par défaut : center */ */ */ */ */; style Data from Data / background = _undef_ font_face = 'Arial, Courier New' font_style = roman foreground = black /*par défault : black font_weight = medium /*par défault : medium font_size = 10pt /*par défault : 12pt just = left /*par défault : left */ */ */ */; style Table from Table / rules = group frame = hsides bordercolor = grey borderwidth = .2cm; End; run; ! www.programmeur-pro.com 3 www.programmeur-pro.com ! Maintenant utilisons ce template avec ods ! tagsets.excelxp. ods listing close; ods tagsets.excelxp file='C:/…./mesclients.xls' style=mycompany; proc print data=one noobs; run; ods tagsets.excelxp close; ods listing; ! Une fois que vous n’avez plus besoin de votre template, vous pouvez le supprimer. ! proc template; delete mycompany; run; ! Les mots-clés! ! Voici des exemples de valeurs possibles pour les paramètres cités plus haut. ! Mot-Clé Exemple de valeur background _undef_, white, … font_face 'Arial, Verdana, Helvetic, Courier New' font_style roman, italic foreground black, … font_weight medium, bold (gras) font_size 10pt, 12pt, 14pt,… just (alignement horizontal) left, right, center ! Personnalisez la sortie sans utiliser un nouveau style! ! Vous pouvez d’apporter de légères modifications au style existant sans passer par la création d’un template. Voici un exemple avec proc report. ! ! www.programmeur-pro.com 4 www.programmeur-pro.com proc format; picture tt_hhmm other='%0H%0M' (datatype=time); run; ! ods listing close; ods tagsets.excelxp file='C:/…./clients_%sysfunc(today(),yymmddn.)_ %sysfunc(time(),tt_hhmm4.).xls' options(frozen_headers = '1' autofilter = 'all' autofit_height = 'yes' embelled_titles = 'yes' embelled_footnotes = 'yes' autofit_height = 'yes'); ! ! ods tagsets.excelxp options(sheet_name='Par défaut'); proc report data=one nowd split='/' style(column)=[cellwidth=3cm]; columns client dob city; define client / display 'Client' style(column)=[cellwidth=5cm]; define dob / display 'Date of/Birth’; define city / display 'City'; run; ods tagsets.excelxp options(sheet_name='Avec changement'); proc report data=one nowd split='/' style(report)=[rules = group frame = hides bordercolor = gray borderwidth = .2cm] style(header)=[background = _undef_ foreground = black font_weight = medium font_size = 12pt font_face = 'Arial, Courier New' just = left] style(column)=[font_weight = medium font_size = 12pt font_face = 'Arial, Courier New' just = left cellwidth = 3cm]; columns client dob city; define client / display 'Client' style(column)=[cellwidth=5cm]; define dob / display 'Date/of Birth’; define city / display 'City'; run; ods close; ods listing; ! www.programmeur-pro.com 5 www.programmeur-pro.com Dans la zone au fond coloré vous retrouvez les options présentent dans proc template pour Table, Header et Data. ! J’ai eu envie de vous donner ici un exemple un peu plus riche que vous pourrez utiliser avec vous. !! Ajouterz le jour et l’heure dans le nom du fichier! ! Au niveau de l'instruction ods tagsets.excelxp, j’ai personnalisé le nom du fichier. J’ai ajouté le jour et l’heure avec les fonctions today() et time() et les formats yymmddn et un picture format nouvellement créé. ! Figez la ligne des noms de colonnes et ajouter des filtres! ! Au niveau de l'instruction ods tagsets.excelxp, je vous ai ajouté des options pour figer la première ligne, celle contenant le nom des colonnes (frozen_headers), pour ajouter des filtres aux colonnes (autofilter). De plus, je vous montre aussi comment créer deux feuilles de calculs en utilisant à chaque fois l’option sheet_name. ! Définissez de manière globale la longueur et ensuite changez là au cas par ca! ! Avec le paramètre cellwidth=, j’ai voulu vous montrer que vous pouvez définir la largeur de toutes les colonnes en l’ajoutant dans l’instruction proc report ; puis vous pouvez changer cette valeur pour une colonne en particulier au niveau de l’instruction define. Cette méthode s’applique également aux autres options de style(column) ou encore de style(header). ! Mettez le nom de la colonne sur plusieurs ligne! ! La dernière option que j’ai ajouté est l’option split de proc report. Dans l’exemple, le libellé « Date of Birth » est coupé en deux. Sur la première ligne il y aura « Date » et sur la seconde ligne « of Birth ». www.programmeur-pro.com 6 www.programmeur-pro.com Résumé des différentes RULES et FRAME rules= none group rows cols all frame= box void hsides vsides above below lhs rhs x y z x y z x y z x y z x y z 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 x y z x y z x y z x y z x y z 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 x y z x y z x y z x y z x y z 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 x y z x y z x y z x y z x y z 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 x y z x y z x y z x y z x y z 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 x y z x y z x y z x y z x y z 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 x y z x y z x y z x y z x y z 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 x y z x y z x y z x y z x y z 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 1 2 0 1 2 0 1 2 0 1 2 www.programmeur-pro.com 0 1 2 7 www.programmeur-pro.com ! Retrouvez-moi sur les réseaux sociaux! ! Viadeo : http://www.viadeo.com/fr/profile/veronique.bourcier1 Linkedin : https://www.linkedin.com/pub/véronique-bourcier/a/aa3/794 Xing : https://www.xing.com/profile/Veronique_Bourcier ! Blog : www.programmeur-pro.com ! www.programmeur-pro.com 8