【问题标题】:Exporting multiple sas datasets into multiple excel sheets with macro?使用宏将多个 sas 数据集导出到多个 excel 表中?
【发布时间】:2014-04-02 20:30:19
【问题描述】:

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

我可以按照以下常规方式进行操作,但我有 100 多个数据集要导出:

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

谢谢!

【问题讨论】:

    标签: excel sas export proc


    【解决方案1】:

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

    %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 数据驱动的宏需要更多信息。

    【讨论】:

      【解决方案2】:

      如果您拥有“SAS/PC 文件格式访问权限”许可,这个小宏可以轻松完成:

      %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);
      

      【讨论】:

      • 谢谢!!我正在将它添加到我的工具箱中:)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-15
      • 2015-08-19
      • 2016-12-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多