流水不朽 发表于 2018-1-11 16:38
/*可以不用理会 文件名是否统一规范*/
/*读取文件夹下面所有文件,并将路径存放在 数据集path_file中*/
...
文件路径以及文件名成功读入,但是后面的import过程出错了,因为我的一个excel中有多个sheet,而且不同表中sheet个数不相同,sheet名称也不相同。提供的第一步 input 有错,已经改正。
下面是报错信息
95
96 %macro pub_ip(in_file,out_data);
97 %if %sysfunc(fileexist(&in_file.)) %then %do;
98 proc import datafile="&in_file."
99 out=&out_data.
100 dbms=excel replace;
101 SCANTIME=N;
102 USEDATE=N;
103 getnames=yes;
104 sheet="Sheet4"; /*sheet名字自己统一写好*/
105 run;
106 %end;
107 %mend pub_ip;
108 /*调用宏,循环导入excel*/
109 data _null_;
110 set path_file;
111 where index(path_name,'.xlsx');/*筛选指定文件*/
112 outname=cats('out_data',put(_n_,z2.));
113 call execute('%pub_ip('||path_name||','||outname||')');
114 run;
NOTE: 从数据集 WORK.PATH_FILE. 读取了 3 个观测
WHERE INDEX(path_name, '.xlsx');
NOTE: “DATA 语句”所用时间(总处理时间):
实际时间 0.00 秒
CPU 时间 0.00 秒
NOTE: CALL EXECUTE 生成了代码行。
1 + proc import datafile="E:\会员持仓结构\SAS分析\循环导入多个EXCEL中多个sheet\201301.xlsx"
out=out_data01
dbms=excel replace;
1 +
SCANTIME=N;
2 + USEDATE=N; getnames=yes;
sheet="Sheet4"; run;
ERROR: 文件“_IMEX_.'Sheet4$'n.DATA”不存在。
ERROR: 导入失败。详细信息,请参阅“SAS 日志”。
NOTE: 由于出错,SAS 系统停止处理该步。
NOTE: “PROCEDURE IMPORT”所用时间(总处理时间):
实际时间 0.10 秒
CPU 时间 0.09 秒
3 + proc import datafile="E:\会员持仓结构\SAS分析\循环导入多个EXCEL中多个sheet\201302.xlsx"
out=out_data02
dbms=excel replace;
3 +
SCANTIME=N;
4 + USEDATE=N; getnames=yes;
sheet="Sheet4"; run;
ERROR: 文件“_IMEX_.'Sheet4$'n.DATA”不存在。
ERROR: 导入失败。详细信息,请参阅“SAS 日志”。
NOTE: 由于出错,SAS 系统停止处理该步。
NOTE: “PROCEDURE IMPORT”所用时间(总处理时间):
实际时间 0.09 秒
CPU 时间 0.07 秒
5 + proc import datafile="E:\会员持仓结构\SAS分析\循环导入多个EXCEL中多个sheet\201303.xlsx"
out=out_data03
dbms=excel replace;
5 +
SCANTIME=N;
6 + USEDATE=N; getnames=yes;
sheet="Sheet4"; run;
ERROR: 文件“_IMEX_.'Sheet4$'n.DATA”不存在。
ERROR: 导入失败。详细信息,请参阅“SAS 日志”。
NOTE: 由于出错,SAS 系统停止处理该步。
NOTE: “PROCEDURE IMPORT”所用时间(总处理时间):
实际时间 0.09 秒
CPU 时间 0.06 秒