请选择 进入手机版 | 继续访问电脑版
楼主: 甲氟喹3
8479 14

[有偿编程] sas一次性导入一个excel文件 其中含有多张sheet [推广有奖]

  • 1关注
  • 0粉丝

大专生

1%

还不是VIP/贵宾

-

威望
0
论坛币
138 个
通用积分
9.7500
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
416 点
帖子
15
精华
0
在线时间
62 小时
注册时间
2015-12-22
最后登录
2022-8-28

甲氟喹3 发表于 2018-3-15 20:23:57 |显示全部楼层 |坛友微信交流群
50论坛币
急!
如何在sas里导入一个excel,这个excel里含有多张表格;之前看过一个宏程序,但是自己才疏学浅用不了,求大神指导!
文件的地址是C:\Users\hkpu\Downloads ,文件名称是newall_price,文件是excel格式,不是CSV;
谢谢!!

关键词:EXCEL sheet xcel exce SHE
saqing 发表于 2018-3-16 10:50:49 |显示全部楼层 |坛友微信交流群
也是小白来的...试了试自己电脑可以跑 不知道有没有更好的方法 大家一起学习
%macro test(sheetname,outfname);  /*创建一个macro 叫做test*/
proc import out=&outfname dbms=excel replace
  datafile="C:\Users\hkpu\Downloads\newall_price.xlsx";
  getnames=yes;
  sheet="&sheetname$";
  run;
%mend test;
%test (sheet1,out)     /*调用上面创建的macro
                               这里sheet1只是一个例子 可以换成你需要导入的sheet的名称
                               同样out也是 可以换成你需要输出的dataset的名字 */

使用道具

甲氟喹3 发表于 2018-3-16 15:31:31 |显示全部楼层 |坛友微信交流群
saqing 发表于 2018-3-16 10:50
也是小白来的...试了试自己电脑可以跑 不知道有没有更好的方法 大家一起学习
%macro test(sheetname,outfn ...
ok 我试试先 谢谢你!

使用道具

cashes93 发表于 2018-3-17 10:30:02 |显示全部楼层 |坛友微信交流群
关于多个sheet 的问题, 可以建立一个Excel引擎的逻辑,挺高数据字典、proc  contents获取里面的表名,做循环导入,这样就不用手动输入sheet名称了。当然还有一种方式,就是建立excel引擎的逻辑库后,直接利用set/copy 将数据集从逻辑库中复制到work下。

使用道具

甲氟喹3 发表于 2018-3-19 11:38:16 |显示全部楼层 |坛友微信交流群
saqing 发表于 2018-3-16 10:50
也是小白来的...试了试自己电脑可以跑 不知道有没有更好的方法 大家一起学习
%macro test(sheetname,outfn ...
ERROR: Connect: Class not registered
ERROR: Error in the LIBNAME statement

我试了一下,会出现这个报错,请问是什么原因呢?

使用道具

甲氟喹3 发表于 2018-3-19 11:41:50 |显示全部楼层 |坛友微信交流群
cashes93 发表于 2018-3-17 10:30
关于多个sheet 的问题, 可以建立一个Excel引擎的逻辑,挺高数据字典、proc  contents获取里面的表名,做循 ...
请问如何建立excel为引擎的逻辑库呢? 我把path选择为exel,生成的新逻辑库就是excel的上一个文件夹,并不是excel本身呀。

使用道具

甲氟喹3 发表于 2018-3-19 11:38
ERROR: Connect: Class not registered
ERROR: Error in the LIBNAME statement
以上宏是可以的,不知道你是不是在用宏的时候没用对,用的时候%test(sheet,out)语句中的sheet要改成你自己excel对用的sheet名,out是你自己要输出的SAS数据集名

使用道具

8112mmw 发表于 2019-6-8 10:12:32 |显示全部楼层 |坛友微信交流群
亚亚102717 发表于 2019-6-2 17:37
以上宏是可以的,不知道你是不是在用宏的时候没用对,用的时候%test(sheet,out)语句中的sheet要改成你自己 ...
应该只能导入一次excel,因为要导入的工作表很多,即sheet1、sheet2等等,所以此宏应该不能完成楼主的任务

使用道具

8112mmw 发表于 2019-6-8 10:12:37 |显示全部楼层 |坛友微信交流群
亚亚102717 发表于 2019-6-2 17:37
以上宏是可以的,不知道你是不是在用宏的时候没用对,用的时候%test(sheet,out)语句中的sheet要改成你自己 ...
应该只能导入一次excel,因为要导入的工作表很多,即sheet1、sheet2等等,所以此宏应该不能完成楼主的任务

使用道具

挞挞 发表于 2019-6-14 16:54:38 |显示全部楼层 |坛友微信交流群
你可以做成两部分,第一部分把你所有的需要导入的sheet名做成一个数据集。
第二步宏循环调取sheet名导入就行了。

使用道具

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

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

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

GMT+8, 2024-3-29 10:13