【问题标题】:export to excel with excel tagsets.使用 excel 标签集导出到 excel。
【发布时间】:2023-04-04 07:38:01
【问题描述】:

我正在考虑通过 excel 标签集将数据集的内容导出到 excelsheet, 但是我为 5 个数据集编写了 5 次代码。

我想编写一个宏,它将库中的变量列表连接到数据集列表,这样我就不必编写 proc 内容 n 次了。

我写的基本代码是这样的:

    ods tagsets.excelxp file="c:\ECT2013_Mappning1.xls" style=statistical

      options( skip_space='3,2,0,0,1' sheet_interval='none' sheet_name='Datasets'     
suppress_bylines='no');

proc datasets library=work; quit;run;
 ods tagsets.excelxp options( skip_space='3,2,0,0,1' sheet_interval='none'    
sheet_name='Behtid' suppress_bylines='no');

Proc contents data=behtid varnum;run;
 ods tagsets.excelxp options( skip_space='3,2,0,0,1' sheet_interval='none' 
sheet_name='Biverk' suppress_bylines='no');

Proc contents data=biverk varnum;run;
 ods tagsets.excelxp options( skip_space='3,2,0,0,1' sheet_interval='none' 
sheet_name='Dosering' suppress_bylines='no');

ods tagsets.excelxp close;

我想编写一个宏,它会自动连接数据集,并根据库中可用数据集的数量执行带有 proc 内容的 excel 标记集。 我怎么做?

【问题讨论】:

  • 您知道如何编写宏和/或 SAS 宏如何工作吗?
  • 您是否考虑过改用 SASHELP.VCOLUMN 表?然后,您可以使用一些 ODS TAGSETS By 选项来自动命名工作表,而无需创建宏。

标签: sas sas-macro


【解决方案1】:

我们的宏应该可以在有或没有工作簿路径的情况下调用,因此工作簿路径必须是可选的。 Sas 宏知道两种类型的参数:位置强制(这里用于工作表)和名称可选(这里用于工作簿)。

%macro excelOds(sheet, workBook=_same_);
    ods tagsets.excelxp 
        options(sheet_name="&sheet." 
                skip_space='3,2,0,0,1' sheet_interval='none' suppress_bylines='no')
        %if &workBook. NE _same_ %then;
            &excelOds file="&workBook." 
        %end;
    ; %* Do not remove this semicolon: it closes the ods statement;
%mend;

第一次我们包含可选参数,后来我们不包含

%excelOds(Datasets,workBook=c:\ECT2013_Mappning1.xls);
proc datasets library=work; quit;run;

%excelOds(Behtid);
Proc contents data=behtid varnum;run;

** and so further **;

ods tagsets.excelxp close;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-15
    • 1970-01-01
    相关资源
    最近更新 更多