楼主: priss111
9175 20

[问答] 请问各位大侠:如何通过proc export 语句一次性导出20多个数据集?谢谢! [推广有奖]

11
priss111 发表于 2011-4-6 13:32:25
6# edumetric

data 步的label生成好了
也能够print ,
但是 ods 生成22个excel(有label)数据集的macro 写出来运行不行。

能不能帮忙再看看ods这个Macro怎么写?谢谢!

12
edumetric 发表于 2011-4-6 14:37:19
试试下面的代码

%macro exportexcel;
%do i=1 %to 22;
ods html file="F:\data&i..xls";
proc print data=data&i label;
title ;
run;
ods html close;
%end;
%mend exportexcel;
%exportexcel;
priss111 发表于 2011-4-6 13:32
6# edumetric

data 步的label生成好了
也能够print ,
但是 ods 生成22个excel(有label)数据集的macro 写出来运行不行。

能不能帮忙再看看ods这个Macro怎么写?谢谢!

13
priss111 发表于 2011-4-6 14:48:14
12# edumetric


可以,非常谢谢!!

%macro exportexcel;
%do i=1 %to 22;
ods html file="F:\data&i..xls";
proc print data=data&i label;
run;
%end;
%mend exportexcel;
%exportexcel;

14
edumetric 发表于 2011-4-6 14:59:21
不客气。work就好。
另外,如果你不想你的excel数据集里面有title的话,就在print的时候用title;,这样你的excel数据集里面就没有一行title了。
priss111 发表于 2011-4-6 14:48
12# edumetric


可以,非常谢谢!!

%macro exportexcel;
%do i=1 %to 22;
ods html file="F:\data&i..xls";
proc print data=data&i label;
run;
%end;
%mend exportexcel;
%exportexcel;

15
priss111 发表于 2011-4-6 15:12:05
14# edumetric

哦,谢谢!

但是每个excel里的title是不同的,
那 还得重新生成一个&title的宏变量,加到%exportexcel里吧?

16
edumetric 发表于 2011-4-6 15:20:05
如果每个excel里面的title是不同的,但是可以通过宏变量来替代的话,是可以。

例如,如果data1.xls里面的title是”This is data1", data2.xls里面的title是“This is data2";
你可以在print的时候加一行
title "This is data&i";
就可以了
priss111 发表于 2011-4-6 15:12
14# edumetric

哦,谢谢!

但是每个excel里的title是不同的,
那 还得重新生成一个&title的宏变量,加到%exportexcel里吧?

17
priss111 发表于 2011-4-6 15:38:52
16# edumetric


好,谢谢!

比如data1里的title为‘意大利’
Data2title为‘法国’
Data3title为‘德国’

Title为国家的名称,
要生成一个title的宏变量,那生成这个宏变量的code怎么写?

18
edumetric 发表于 2011-4-6 16:05:07
你要知道哪一个数据对应哪一个国家就可以的把。因为手头在做其他事情,没有时间仔细想,只简单的想到一个用macro参数的方法重新些macro。你看看下面的代码是否可行。
%macro exportdata (dataset=, countryid=);
ods html file="F:\&dataset..xls";
print data=&dataset label;
title &countryid;
run;
%mend exportdata;

%exportdata(dataset=data1,countryid=Italy);
%exportdata(dataset=data2,countryid=Frace);
...
或许有更好的办法,我目前没有时间仔细取研究,呵呵。
priss111 发表于 2011-4-6 15:38
16# edumetric


好,谢谢!

比如data1里的title为‘意大利’
Data2title为‘法国’
Data3title为‘德国’

Title为国家的名称,
要生成一个title的宏变量,那生成这个宏变量的code怎么写?

19
edumetric 发表于 2011-4-6 16:37:33
还想到了另外一种方法,在Macro里面用条件语句%if %then,你可以试试看行否,我要准备开会去了。

%macro exportdata;
%do i=1 %to 22;
ods html file="F:\data&i..xls";
proc print data=data&i label;
%if &i=1 %then %do;
title Italy;
%end;
%else %if &i=2 %then %do;
title France;
%end;
%else %if &i=3 %hen %do;
...
%end;
...
%else %do;
...
%end;
run;
ods html close;
%end;
%mend exportdata;
%exportdata;
priss111 发表于 2011-4-6 15:38
16# edumetric


好,谢谢!

比如data1里的title为‘意大利’
Data2title为‘法国’
Data3title为‘德国’

Title为国家的名称,
要生成一个title的宏变量,那生成这个宏变量的code怎么写?

20
priss111 发表于 2011-4-6 17:24:09
18# edumetric

刚运行了,用宏参数的方法可以,谢谢!

%if  %then还要试试再说。

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-1 09:18