从 SAS Enterprise Guide 导出到 Excel (.xlsx) 中的多个选项卡
Exporting from SAS Enterprise Guide to multiple tabs in Excel (.xlsx)
我正在尝试将输出从 SAS Enterprise Guide 导出到 Microsoft Excel 2010 (.xlsx),每个 sheet 输出多个表,每个工作簿输出多个 sheets。我想将多个 proc sql 输出导出到单个选项卡,以及将其他输出导出到同一工作中的多个选项卡sheet。我有允许我执行此操作的代码(见下文),但我无法将其导出到 SAS Enterprise Guide 中的多个程序。理想情况下,我希望我的 SAS Enterprise Guide 流程的每个程序都将输出导出到同一 Excel 文件中的不同选项卡。例如,下面的代码在同一个程序中工作时有效,但我希望 "ID and Age" proc sql 代码与 "Diagnosis and Treatment" 代码在不同的程序中,出于目的我自己的组织。
有办法吗?
到目前为止,当我尝试将下面的代码拆分为两个程序时,它只是将第一个输出替换为第二个输出,而不是创建两个单独的 sheets。
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 _ALL_ CLOSE;
开始和结束,这会关闭目标,并且由于 ODS 无法就地更新电子表格(还没有?),这排除了您建议的用法。
但是,您可以将输出设置为宏。然后有一个程序在 ods excel
块内调用所有这些宏。这将允许你做你想做的事——代价是将所有这些数据集和输出放在一个最终输出程序中,而不是放在单独的程序中。
或者,您可以在单独的程序中执行所有计算,然后有一个主输出程序输出所有最终结果(保存在数据集或 ODS DOCUMENT
对象中)。
我正在尝试将输出从 SAS Enterprise Guide 导出到 Microsoft Excel 2010 (.xlsx),每个 sheet 输出多个表,每个工作簿输出多个 sheets。我想将多个 proc sql 输出导出到单个选项卡,以及将其他输出导出到同一工作中的多个选项卡sheet。我有允许我执行此操作的代码(见下文),但我无法将其导出到 SAS Enterprise Guide 中的多个程序。理想情况下,我希望我的 SAS Enterprise Guide 流程的每个程序都将输出导出到同一 Excel 文件中的不同选项卡。例如,下面的代码在同一个程序中工作时有效,但我希望 "ID and Age" proc sql 代码与 "Diagnosis and Treatment" 代码在不同的程序中,出于目的我自己的组织。
有办法吗?
到目前为止,当我尝试将下面的代码拆分为两个程序时,它只是将第一个输出替换为第二个输出,而不是创建两个单独的 sheets。
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 _ALL_ CLOSE;
开始和结束,这会关闭目标,并且由于 ODS 无法就地更新电子表格(还没有?),这排除了您建议的用法。
但是,您可以将输出设置为宏。然后有一个程序在 ods excel
块内调用所有这些宏。这将允许你做你想做的事——代价是将所有这些数据集和输出放在一个最终输出程序中,而不是放在单独的程序中。
或者,您可以在单独的程序中执行所有计算,然后有一个主输出程序输出所有最终结果(保存在数据集或 ODS DOCUMENT
对象中)。