从SAS Enterprise Guide导出到Excel(.xlsx)中的多个选项卡

从SAS Enterprise Guide导出到Excel(.xlsx)中的多个选项卡,excel,sas,enterprise-guide,sas-ods,Excel,Sas,Enterprise Guide,Sas Ods,我正在尝试将输出从SAS Enterprise Guide导出到Microsoft Excel 2010.xlsx,每个工作表输出多个表,每个工作簿输出多个工作表。我希望将多个proc sql输出导出到单个选项卡,以及将其他输出导出到同一工作表中的多个选项卡。我有代码可以执行此操作,请参见下文,但我无法在SAS Enterprise Guide中跨多个程序导出它。理想情况下,我希望SAS Enterprise Guide流程的每个程序都能将输出导出到同一Excel文件中的不同选项卡。例如,下面的

我正在尝试将输出从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;

不幸的是,在《企业指南》中,无法在多个程序之间保持ODS EXCEL目标的打开状态。每个程序以ODS u ALL uu CLOSE;开始和结束;,这就关闭了目的地,而且由于ODS还不能在适当的地方更新电子表格,这就排除了您建议的使用

但是,您可以将输出设置为宏。然后,在ods excel块中有一个调用所有这些宏的程序。这将允许你做你想做的事情——代价是将所有这些数据集和输出放在一个最终输出程序中,而不是放在单独的程序中

或者,您可以在单独的程序中执行所有计算,但有一个主输出程序,输出保存在数据集或ODS文档对象中的所有最终结果