楼主: 李真LZ
5460 10

[问答] SAS批量导入同一文件下的excel表 [推广有奖]

  • 0关注
  • 0粉丝

大专生

55%

还不是VIP/贵宾

-

威望
0
论坛币
1050 个
通用积分
0
学术水平
1 点
热心指数
2 点
信用等级
0 点
经验
833 点
帖子
33
精华
0
在线时间
49 小时
注册时间
2015-8-13
最后登录
2021-3-18

50论坛币
请教诸位,我想用SAS批量导入同一文件下的excel表,如何编写程序?



微信图片_20170528161449.png


最佳答案

l1i2n3i4n5g 查看完整内容

execl文件的版本太老了!
关键词:Excel表 EXCEL 批量导入 xcel exce 编写程序 excel 如何
沙发
l1i2n3i4n5g 在职认证  发表于 2017-5-28 16:22:35 |只看作者 |坛友微信交流群
李真LZ 发表于 2017-5-29 14:27
提示是这样子的:
Spreadsheet isn't from Excel V5 or later.  Please open it in Excel and Save as V ...
execl文件的版本太老了!
  1. filename indata pipe 'dir "c:\documents and settings\administrator\桌面\test\*.xls" /b/s';
  2. data files;
  3. infile indata truncover;
  4. input char $200. ;
  5. char1=scan(scan(char,-1,'\'),1,'.');
  6. run;

  7. /*宏变量n,表示*.xls文件个数,用于宏程序循环判断*/
  8. proc sql noprint;
  9. select count(char) into : n  from files;
  10. run;
  11. quit;

  12. %macro import_xls_files;
  13. %do i=1 %to &n;
  14. /************************************/
  15. /*把每个具体文件名的路径存入宏变量char*/
  16. data _null_;
  17. set files;
  18. length char2 $20.;
  19. if _n_=&i then do;
  20. call symput('char',char);
  21. call symput('char1',char1);
  22. end;
  23. run;
  24. %put &char2;
  25. /************************************/
  26. proc import out=test_&char1
  27.             datafile= "&char"
  28.             dbms=excel4 replace;
  29. /*     getnames=yes;*/
  30. run;
  31. /************************************/
  32. %end;
  33. %mend import_xls_files;
  34. %import_xls_files
复制代码

使用道具

藤椅
wwang111 发表于 2017-5-28 17:03:34 |只看作者 |坛友微信交流群
可以把粗体的部分换成你自己的路径试一下这个:

filename mydir pipe 'dir "D:\" /b';
data content;
infile mydir lrecl=300 truncover;
input @1 content $200.;
if upcase(scan(content,-1,'.'))='XLS';
run;
filename mydir clear;

data _null_;
set content;
call execute("proc import datafile='D:/"||strip(content)||"' out=d"||scan(strip(content),1,'.')||" replace;run;");
run;
只有一个罗纳尔多

使用道具

板凳
李真LZ 发表于 2017-5-28 17:50:15 |只看作者 |坛友微信交流群
wwang111 发表于 2017-5-28 17:03
可以把粗体的部分换成你自己的路径试一下这个:

filename mydir pipe 'dir "D:\" /b';
刚运行了一下,提示如下:
ERROR: 连接: 外部表不是预期的格式。
ERROR: LIBNAME 语句出错。

使用道具

报纸
l1i2n3i4n5g 在职认证  发表于 2017-5-28 18:18:54 |只看作者 |坛友微信交流群
  1. filename indata pipe 'dir "d:\test\*.xls" /b/s';
  2. data files;
  3. infile indata truncover;
  4. input char $200. ;
  5. char1=scan(scan(char,-1,'\'),1,'.');
  6. run;

  7. /*宏变量n,表示*.xls文件个数,用于宏程序循环判断*/
  8. proc sql noprint;
  9. select count(char) into : n  from files;
  10. run;
  11. quit;

  12. %macro import_xls_files;
  13. %do i=1 %to &n;
  14. /************************************/
  15. /*把每个具体文件名的路径存入宏变量char*/
  16. data _null_;
  17. set files;
  18. if _n_=&i then do;
  19. call symput('char',char);
  20. call symput('char1',char1);
  21. end;
  22. run;
  23. /************************************/
  24. proc import out=test_&char1
  25. datafile="&char" dbms=xlsx replace;
  26. sheet='sheet1';
  27. getnames=no;
  28. run;
  29. /************************************/
  30. %end;
  31. %mend import_xls_files;
  32. %import_xls_files
复制代码

使用道具

地板
wwang111 发表于 2017-5-28 18:19:00 |只看作者 |坛友微信交流群
李真LZ 发表于 2017-5-28 17:50
刚运行了一下,提示如下:
ERROR: 连接: 外部表不是预期的格式。
ERROR: LIBNAME 语句出错。
把第二步改成这样试一下,有可能你的sas版本是支持xlsx格式

data _null_;
set content;
call execute("proc import datafile='D:/"||strip(content)||"' out=d"||scan(strip(content),1,'.')||" dbms=xls replace;run;");
run;

使用道具

7
李真LZ 发表于 2017-5-29 08:44:00 |只看作者 |坛友微信交流群
l1i2n3i4n5g 发表于 2017-5-28 18:18
你好~
运行结果提示:ERROR: 物理文件“F:\数据分析\M\1.xls.xlsx”不存在。
我的每一个sheet的名字和excel表的名字一致,且每一个Excel都只有一张sheet。
应该怎么修改呢?

使用道具

8
李真LZ 发表于 2017-5-29 08:45:44 |只看作者 |坛友微信交流群
wwang111 发表于 2017-5-28 18:19
把第二步改成这样试一下,有可能你的sas版本是支持xlsx格式

data _null_;
你好~
92  + proc import datafile='F:\数据分析\M/9.xls' out=d9 dbms=xls replace;
92  +                                                                    run;

Spreadsheet isn't from Excel V5 or later.  Please open it in Excel and Save as V5 or later
Requested Input File Is Invalid
ERROR: 导入失败。详细信息,请参阅“SAS 日志”。
NOTE: 由于出错,SAS 系统停止处理该步。
该怎么修改呢?

使用道具

9
l1i2n3i4n5g 在职认证  发表于 2017-5-29 12:39:10 |只看作者 |坛友微信交流群
李真LZ 发表于 2017-5-29 08:44
你好~
运行结果提示:ERROR: 物理文件“F:\数据分析\M\1.xls.xlsx”不存在。
我的每一个sheet的名字和e ...
相应部分改一下试试看
  1. proc import out=test_&char1
  2. datafile="&char" dbms=xls replace;
  3. sheet="&char1";
  4. getnames=no;
  5. run;
复制代码

使用道具

10
李真LZ 发表于 2017-5-29 14:27:21 |只看作者 |坛友微信交流群
l1i2n3i4n5g 发表于 2017-5-29 12:39
相应部分改一下试试看
提示是这样子的:
Spreadsheet isn't from Excel V5 or later.  Please open it in Excel and Save as V5 or later
Requested Input File Is Invalid
ERROR: 导入失败。详细信息,请参阅“SAS 日志”。
NOTE: 由于出错,SAS 系统停止处理该步。

我也试过其他的程序,别人可以导数据入进去,不知道为什么我就是无法导入

使用道具

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

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-26 20:24