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



另一个问题。我有多个数据集可以生成输出,如何将这些输出到一个 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,因为这是真的吗

问候

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

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

你不能用SAS完全做到这一点(DDE可能是可能的)。 我建议看看SaviCells Pro。

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

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

您可以通过ODS TAGSETS.EXCELXP或新ODS EXCEL(9.4 TS1M1)完成您所要求的内容。 但是,您需要提前安排数据集(即,将它们合并在一起或转置或其他什么,以获得具有正确列的数据集),或者使用PROC REPORT或其他一些过程将它们以正确的格式获取。

最新更新