1

我正在尝试将 SAS Enterprise Guide 的输出导出到 Microsoft Excel 2010 (.xlsx),每个工作表输出多个表,每个工作簿输出多个工作表。我希望将多个 proc sql 输出导出到单个选项卡,以及将其他输出导出到同一工作表中的多个选项卡。我有允许我执行此操作的代码(见下文),但我无法将其导出到 SAS Enterprise Guide 中的多个程序中。理想情况下,我希望 SAS Enterprise Guide 流程的每个程序都将输出导出到同一个 Excel 文件中的不同选项卡。例如,以下代码在同一个程序中时有效,但我希望“ID 和年龄”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;
4

1 回答 1

1

不幸的是,无法ODS EXCEL在 Enterprise Guide 中的多个程序中保持目标打开状态。每个程序都以 开始和结束ODS _ALL_ CLOSE;,这会关闭目标,并且由于 ODS 无法就地更新电子表格(还没有?),因此排除了您建议的用法。

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

或者,您可以在单独的程序中执行所有计算,然后使用一个主输出程序来输出所有最终结果(保存在数据集或ODS DOCUMENT对象中)。

于 2015-09-28T15:33:21.180 回答