我正在尝试将SAS Enterprise Guide的输出导出到Microsoft Excel 2010(.xlsx),每张表输出多个表,每个工作簿输出几个表。我想将几个proc sql输出导出到单个选项卡,以及其他输出到同一工作表中的多个选项卡。我有代码允许我这样做(见下文),但我不能让它导出SAS Enterprise Guide中的多个程序。理想情况下,我希望SAS Enterprise Guide流程的每个程序都将输出导出到同一Excel文件中的不同选项卡。例如,下面的代码在全部在同一个程序中时起作用,但我希望“ID和Age”proc sql代码在不同的程序中,然后是“诊断和处理”代码,用于我自己的组织。
有办法做到这一点吗?
到目前为止,当我尝试将下面的代码分成两个程序时,它只是用第二个代码替换第一个输出,而不是创建两个单独的工作表。
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;
答案 0 :(得分:1)
遗憾的是,无法在“企业指南”中的多个程序中保持ODS EXCEL
目的地的开放状态。每个程序都以ODS _ALL_ CLOSE;
开头和结尾,关闭目的地,并且由于ODS不能更新电子表格(但是?),这就排除了您建议使用的用途。
但是,您可以将输出设置为宏。然后有一个程序在ods excel
块内调用所有这些宏。这样你就可以做你想要做的事情 - 代价是在一个最终输出程序中拥有所有这些数据集和输出而不是将它们放在单独的程序中。
或者,您可以在单独的程序中执行所有计算,但是然后有一个主输出程序输出所有最终结果(保存在数据集或ODS DOCUMENT
个对象中)。