2015-09-28 5 views
1

J'essaie d'exporter la sortie de SAS Enterprise Guide vers Microsoft Excel 2010 (.xlsx), en affichant à la fois plusieurs tableaux par feuille et plusieurs feuilles par classeur. Je souhaite exporter plusieurs sorties proc sql vers un seul onglet, ainsi que d'autres sorties vers plusieurs onglets dans la même feuille de calcul. J'ai du code qui me permet de le faire (voir ci-dessous), mais je n'arrive pas à l'exporter à travers plusieurs programmes dans SAS Enterprise Guide. Idéalement, je voudrais que chaque programme de mon flux de processus SAS Enterprise Guide exporte la sortie vers un autre onglet dans le même fichier Excel. Par exemple, le code ci-dessous fonctionne quand tout est dans le même programme, mais je veux que le code proc "ID et Age" soit dans un autre programme que le code "Diagnostic et Traitement", pour les besoins de ma propre organisation .Exportation à partir de SAS Enterprise Guide de plusieurs onglets dans Excel (.xlsx)

Existe-t-il un moyen de le faire? Jusqu'à présent, lorsque j'essaie de diviser le code ci-dessous en deux programmes, il remplace simplement la première sortie par la seconde, au lieu de créer deux feuilles distinctes.

goptions device=actximg; /*suppresses Error*/ 
ods excel file="C:\Example.xlsx" 
style=htmlblue 
options(
    sheet_interval="none" 
    sheet_name="ID and Age" 
    embedded_titles='yes' 
); 

proc sql;title "Patient list"; 
select patient_id, date from data;run; 

proc sql;title "Patients under 2"; 
select patient_id, dob, age_in_years from data where age_in_years < 2;run; 


ods excel 
options(
    sheet_interval="none" 
    sheet_name="Diagnosis and Treatment" 
    embedded_titles='yes' 
); 

proc sql;title "Diagnosis for patients under 2"; 
select patient_id, diagnosis from data where age_in_years < 2;run; 

proc sql;title "Treatment for patients under 2"; 
select patient_id, treatment from data where age_in_years < 2;run; 

ods excel close; 

Répondre

1

Il ne sera pas possible de maintenir la destination ouverte ODS EXCEL sur plusieurs programmes dans Enterprise Guide, malheureusement. Chaque programme commence et se termine par ODS _ALL_ CLOSE;, ce qui ferme la destination, et puisque ODS n'est pas capable de mettre à jour une feuille de calcul en place (encore?), Cela exclut l'utilisation que vous suggérez.

Ce que vous pouvez faire, cependant, est de définir votre sortie comme macro (s). Puis avoir un seul programme qui appelle toutes ces macros, dans ods excel blocs. Cela vous permettrait de faire ce que vous cherchez - au prix d'avoir tous ces ensembles de données et extrants dans un seul programme de production final plutôt que de les avoir dans des programmes distincts. Vous pouvez également effectuer tous les calculs dans des programmes distincts, mais avoir un programme de sortie principal qui affiche tous les résultats finaux (enregistrés dans les jeux de données ou dans les objets).