Précédent   Forum des professionnels en informatique > Logiciels > Solutions d'entreprise > Business Intelligence > SAS > ODS et reporting
ODS et reporting Forum d'entraide sur les fonctionnalités de reporting de SAS : gérer les sorties et graphiques de SAS
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 23/11/2011, 14h27   #1
Membre à l'essai
 
Inscription : août 2010
Messages : 28
Détails du profil
Informations forums :
Inscription : août 2010
Messages : 28
Points : 22
Points : 22
Par défaut Ods tagsets.excelxp : proc report et call define

Bonjour,

J'ai un souci avec l'instruction call define de la proc report avec un export sous Excel grâce à l'ods tagsets.excelxp.

En effet, je souhaite appliquer sur mes variables de classification à la fois un style et un lien hypertexte.
Pour cela j'utilise la call define.
Si les résultats sont exportés sous format Word pas de souci les instructions sont respectées. Malheureusement je souhaite les exporter sous Excel. Pour cela j'utilise l'ods tagsets.excelxp. (Ce que je souhaite fonctionne avec l'ods msoffice mais je préférerai garder l’ods tagsets.excelxp).
J'utilise une vieille version du tagsets mais j'ai essayé avec le nouveau et le problème est le même. Sous Excel le style n'est pas défini alors que le lien hypertexte est crée. Par contre (j'utilise Sas guide) dans la fenêtre de résultat HTML, les instructions fonctionnent.
Est-ce du à l'ods tagsets.excelxp, faut-il bidouiller le code ?

Merci par avance.


Vous trouverez ci-dessous un exemple de code.
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
 
%LET CHEMIN=C:\temp;
 
DATA class;
SET sashelp.class;
url="http://www.google.fr";
run;
 
ods  Tagsets.excelxp file="&chemin\Exemple.xls" 
options(sheet_interval='none' embedded_footnotes='yes' sheet_name="EXEMPLE"	embedded_titles= 'yes' fittopage='yes'
ABSOLUTE_COLUMN_WIDTH='50,9,9,9,9,9,9' AUTOFIT_HEIGHT='yes');
proc report DATA=class missing;
	COLUMN url name  sex  age name2;
	define url /' ' noprint ;
	define name /'NOM' noprint  ;
	define name2 /'NOM'  computed;
	define sex /'SEXE' ;
	define age /'AGE'    ;
	compute name2/character length=200;
			IF sex="F" then do;
					name2=name;
					CALL DEFINE(_COL_, 'URL', url );
					call define(_col_, "style", "style=[background=yellow foreground=white font_size=10pt FONT_WEIGHT=bold]");	
			end;
			else do;
					name2=name;
					CALL DEFINE(_COL_, 'URL', url );
					call define(_col_, "style", "style=[background=red foreground=white font_size=10pt FONT_WEIGHT=bold]");
			end;
	endcomp;
run;
ods Tagsets.excelxp close;
ddijoux est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/11/2011, 15h48   #2
Expert Confirmé
 
Avatar de olivier.decourt
 
Homme Olivier Decourt
Formateur en informatique
Inscription : avril 2008
Messages : 1 467
Détails du profil
Informations personnelles :
Nom : Homme Olivier Decourt
Âge : 34
Localisation : France

Informations professionnelles :
Activité : Formateur en informatique
Secteur : Conseil

Informations forums :
Inscription : avril 2008
Messages : 1 467
Points : 2 828
Points : 2 828
Bonjour.
Sur SAS 9.2 et tagsets v1.127 ça fonctionne.
Sur SAS 9.1.3 et tagsets v1.28 ça fonctionne.
Sur SEG 4.3 branché sur SAS 9.2 et tagsets v1.94 ça fonctionne.
Du coup,
Je me suis permis de simplifier un peu le code (pourquoi NAME2 ?).
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
 
%LET CHEMIN=C:\temp;
 
DATA class;
SET sashelp.class;
url="http://www.google.fr";
run;
TITLE ;
ods  Tagsets.excelxp file="&chemin\Exemple.xls" 
options(sheet_interval='none' embedded_footnotes='yes' sheet_name="EXEMPLE"	embedded_titles= 'yes' fittopage='yes'
ABSOLUTE_COLUMN_WIDTH='50,9,9,9,9,9,9' AUTOFIT_HEIGHT='yes');
proc report DATA=class missing nowd ;
	COLUMN  name  sex  age url;
	define name /'NOM' ;
	define sex /'SEXE' ;
	define age /'AGE'    ;
	define url / noprint ;
	compute url ;
			IF sex="F" then do;
					CALL DEFINE("name", 'URL', url );
					call define("name", "style", "style=[background=yellow foreground=white font_size=10pt FONT_WEIGHT=bold]");	
			end;
			else do;
					CALL DEFINE("name", 'URL', url );
					call define("name", "style", "style=[background=red foreground=white font_size=10pt FONT_WEIGHT=bold]");
			end;
	endcomp;
run;
ods Tagsets.excelxp close;
???
Olivier
olivier.decourt est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 23/11/2011, 16h57   #3
Membre à l'essai
 
Inscription : août 2010
Messages : 28
Détails du profil
Informations forums :
Inscription : août 2010
Messages : 28
Points : 22
Points : 22
Bonjour Olivier,

Tout d'abord, merci pour la réponse, je ne savais pas que l'on pouvait mette le nom d'une des variables en premier attribut à un call define. Je croyais que l'on ne pouvait mettre que "_col_" ou "_row_".

J'ai essayé avec tous les tagsets disponibles sur le support sas, rien n'y fait l'instruction pour les couleurs ne fonctionne pas.

Pourriez-vous me fournir cette version 1.94?

Par avance merci.

Damien.
ddijoux est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/11/2011, 17h49   #4
Expert Confirmé
 
Avatar de olivier.decourt
 
Homme Olivier Decourt
Formateur en informatique
Inscription : avril 2008
Messages : 1 467
Détails du profil
Informations personnelles :
Nom : Homme Olivier Decourt
Âge : 34
Localisation : France

Informations professionnelles :
Activité : Formateur en informatique
Secteur : Conseil

Informations forums :
Inscription : avril 2008
Messages : 1 467
Points : 2 828
Points : 2 828
Damien, si tu as essayé avec une version plus récente que la 1.94 il n'y a pas de raison que les résultats diffèrent. Quelle version d'Excel as-tu ? Tu exécutes sur quelle version de SAS et sur quelle plateforme (Windows, Unix) ?
olivier.decourt est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/11/2011, 18h06   #5
Membre à l'essai
 
Inscription : août 2010
Messages : 28
Détails du profil
Informations forums :
Inscription : août 2010
Messages : 28
Points : 22
Points : 22
Habituellement, j'utilise la v1.86 je crois mais j'ai essayé avec la dernière la v1.127.
Je travaille sous windows xp, ma version de sas est sas enterprise guide 4.1 et ma version d'excel est celle de 2003.
ddijoux est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/11/2011, 18h13   #6
Expert Confirmé
 
Avatar de olivier.decourt
 
Homme Olivier Decourt
Formateur en informatique
Inscription : avril 2008
Messages : 1 467
Détails du profil
Informations personnelles :
Nom : Homme Olivier Decourt
Âge : 34
Localisation : France

Informations professionnelles :
Activité : Formateur en informatique
Secteur : Conseil

Informations forums :
Inscription : avril 2008
Messages : 1 467
Points : 2 828
Points : 2 828
J'ai fait mes essais avec Excel 2007 : c'est peut-être là la différence. Demain j'aurai un Excel 2003 pour tester.
Et le SEG 4.1 pointe vers un SAS 9.1 en local ? Sur un serveur ?
olivier.decourt est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/11/2011, 18h33   #7
Membre à l'essai
 
Inscription : août 2010
Messages : 28
Détails du profil
Informations forums :
Inscription : août 2010
Messages : 28
Points : 22
Points : 22
Sur un serveur.

Merci beaucoup de répondre aussi vite.
ddijoux est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/11/2011, 08h20   #8
Expert Confirmé
 
Avatar de olivier.decourt
 
Homme Olivier Decourt
Formateur en informatique
Inscription : avril 2008
Messages : 1 467
Détails du profil
Informations personnelles :
Nom : Homme Olivier Decourt
Âge : 34
Localisation : France

Informations professionnelles :
Activité : Formateur en informatique
Secteur : Conseil

Informations forums :
Inscription : avril 2008
Messages : 1 467
Points : 2 828
Points : 2 828
Bon, ça marche aussi avec Excel 2003.
Il y a un truc pas net là-dedans.
Comment récupères-tu le fichier produit par SEG sur ton PC pour l'ouvrir ?
olivier.decourt est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/11/2011, 09h30   #9
Membre à l'essai
 
Inscription : août 2010
Messages : 28
Détails du profil
Informations forums :
Inscription : août 2010
Messages : 28
Points : 22
Points : 22
Olivier,

J'exporte mon fichier sur un serveur. Ainsi, il est directement consultable pour ceux qui ont accès à ce serveur. Je l'ouvre donc directement à partir du serveur.

Une petite précision, il semble que je n'ai pas Excel 2003 mais 2002 (je ne savais pas qu'il existait celui-là). Si je regarde dans Excel la version il est indiqué Microsoft Excel 2002 SP-2.
ddijoux est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/11/2011, 10h53   #10
Expert Confirmé
 
Avatar de olivier.decourt
 
Homme Olivier Decourt
Formateur en informatique
Inscription : avril 2008
Messages : 1 467
Détails du profil
Informations personnelles :
Nom : Homme Olivier Decourt
Âge : 34
Localisation : France

Informations professionnelles :
Activité : Formateur en informatique
Secteur : Conseil

Informations forums :
Inscription : avril 2008
Messages : 1 467
Points : 2 828
Points : 2 828
Essaye d'ouvrir le .XLS avec le bloc-notes ou un équivalent. Tu devrais y trouver des indications de style au début : y a-t-il un bloc comme celui-ci (juste avant <worksheet> chez moi) ?
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
<Style ss:ID="data__l1" ss:Parent="data__l">
<Font ss:Size="10" ss:Bold="1" ss:Color="#FFFFFF" />
<Interior ss:Color="#FF0000" ss:Pattern="Solid" />
<Protection ss:Protected="1" />
<NumberFormat ss:Format="General" />
</Style>
<Style ss:ID="data__l_1" ss:Parent="data__l">
<Font ss:Size="10" ss:Bold="1" ss:Color="#FFFFFF" />
<Interior ss:Color="#FFFF00" ss:Pattern="Solid" />
<Protection ss:Protected="1" />
<NumberFormat ss:Format="General" />
</Style>
</Styles>
Si oui, normalement les couleurs devraient être affichées correctement. Et donc c'est un souci de ta version d'Excel. Si non, alors c'est un souci SAS qui n'écrit pas le XML correct.
olivier.decourt est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/11/2011, 11h36   #11
Membre à l'essai
 
Inscription : août 2010
Messages : 28
Détails du profil
Informations forums :
Inscription : août 2010
Messages : 28
Points : 22
Points : 22
En ouvrant le document crée avec bloc-notes j'ai comme bloc :

Code :
1
2
3
4
5
<Style ss:ID="data__l__c1" ss:Parent="data__l">
<Protection ss:Protected="1" />
<NumberFormat ss:Format="General" />
</Style>
</Styles>
Donc, il n'y a pas de définition de couleur. Cela serait dû à SAS? C'est étrange car en ods msoffice ça marche et si j'ouvre le document HTML crée automatiquement pas SAS dans l'explorateur de projet le code fonctionne.

Normalement je change de version Excel et de version SAS prochainement. Je pourrais alors retester.

Un grand merci pour ton aide.
ddijoux est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 14h40.


 
 
 
 
Partenaires

Hébergement Web