将多个数据集输出到excel工作簿

时间:2014-01-09 02:48:20

标签: sas dde

另一个问题。我有多个生成输出的数据集如何将这些输出到一个excel工作表中并应用我自己的格式化。例如,我有数据集1,数据集2,数据集3

each data set has two coloumns, for example
Col 1 Col 2
1    2 
3    4 
5    6

我希望每个数据集都在一个工作表中并按列分隔,因此在excel中它应该看起来像

Col 1 Col 2 Blank Col Col 1 Col 2 Blank Col

Somone告诉我,我需要看看DDE这是真的

此致

3 个答案:

答案 0 :(得分:1)

你绝对可以使用DDE来做到这一点。它只是模拟用户在Excel菜单,按钮,单元格等处的点击次数。下面是一个示例,您可以通过宏循环为名称为has1,have2和have3的3个数据集执行此操作。如果您需要更通用的解决方案(未知数量的数据集,具有不同数量的变量,随机数据集的名称等),则应更新代码,但其“DDE-part”基本上是相同的。 还有一个假设 - 您的Excel工作簿应该在代码执行期间打开。虽然它也可以自动化 - 可以启动Excel并使用DDE本身打开文件。 您可以在DDE here中找到一个非常好的介绍,其中详细讨论了所有这些技巧。

data have1;
    input Col1 Col2;
datalines;
1 2
3 4
5 6
;
run;
data have2;
    input Col1 Col2;
datalines;
1 2
3 4
5 6
7 8
;
run;
data have3;
    input Col1 Col2;
datalines;
1 2
3 4
7 8
5 6
9 10
;
run;



%macro xlsout;

/*iterating through your datasets*/
%do i=1 %to 3;

    /*determine number of records in the current dataset*/
    proc sql noprint;
        select  count(*) into :noobs
        from have&i;
    quit;

    /*assign a range on the workbook spreadsheet matching to data in the current dataset*/
    filename range dde "excel|[myworkbook.xls]sas!r1c%eval((&i-1)*3+1):r%left(&noobs)c%eval((&i-1)*3+2)" notab;

    /*put data into selected range*/
    data _null_;
        set have&i;
        file range;
        put Col1 '09'x Col2;
    run;
%end;

%mend xlsout;
%xlsout

答案 1 :(得分:0)

你无法用SAS做到这一点(可能有DDE)。我建议看看SaviCells Pro。

http://www.sascommunity.org/wiki/SaviCells

http://www.savian.net/utilities.html

答案 2 :(得分:0)

您可能会通过ODS TAGSETS.EXCELXP或新ODS EXCEL(9.4 TS1M1)完成您所要求的内容。您需要提前排列数据集(即,将它们合并或转置或使用正确的列获取一个数据集),或者使用PROC REPORT或其他一些过程将它们放在右侧格式。