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

Documents pareils