另一个问题。我有多个生成输出的数据集如何将这些输出到一个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这是真的
此致
答案 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。
答案 2 :(得分:0)
您可能会通过ODS TAGSETS.EXCELXP
或新ODS EXCEL
(9.4 TS1M1)完成您所要求的内容。您需要提前排列数据集(即,将它们合并或转置或使用正确的列获取一个数据集),或者使用PROC REPORT
或其他一些过程将它们放在右侧格式。