使用宏将多个sas数据集导出到多个excel表中?

时间:2014-04-02 20:30:20

标签: excel sas export proc

我正在寻找是否有一个宏可以将多个数据集导出到工作簿中的单独的Excel工作表中。如果每张工作簿可以有10张,那就太棒了。

我可以通常的方式执行以下操作,但我要导出100多个数据集:

PROC EXPORT DATA=HAVE;
OUTFILE= "S:\MYEXCEL.xlsx" 
        DBMS=EXCEL REPLACE;
SHEET="NEW_SHEET"; 
RUN;

谢谢!

2 个答案:

答案 0 :(得分:3)

一般的概念是你会做这样的事情:

%macro export_data(file=,data=,sheet=);
proc export data=&data.
outfile="&file."
dbms=excel replace;
sheet="&sheet.";
run;
%mend export_data;

然后,您需要根据需要构建导出宏调用。获取每个数据集一行的数据集(在SQL中使用dictionary.tables或在数据步骤中使用sashelp.vtable)然后计算出您需要的工作表名称逻辑和所需的工作簿数量。 Google数据驱动的宏需要更多信息。

答案 1 :(得分:0)

如果您拥有对PC FIle格式的SAS /访问权限'许可,这个小宏可以毫不费力地做到:

%macro SASToExcel(ImportLibrary=, ExportLocation=);

    ods output members = _Members;
    proc datasets lib = &ImportLibrary; run; quit;

    proc sql;
        select count(Name) into :NumOfDatasets from _Members;
        select Name into :Dataset1-:Dataset%trim(%left(&NumOfDatasets)) from _Members;
    quit;

    %do index = 1 %to &NumOfDatasets;
        proc export data=&ImportLibrary..&&Dataset&index.
        outfile="&ExportLocation"
        dbms=excel replace;
        sheet="&&Dataset&index";
        run;
    %end;

    proc datasets;
        delete _Members;
    quit;

%mend;

%SASToExcel(ImportLibrary=raw, ExportLocation = c:\test.xlsx);