楼主: 甲氟喹3
9871 14

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

  • 1关注
  • 0粉丝

大专生

61%

还不是VIP/贵宾

-

威望
0
论坛币
190 个
通用积分
9.7500
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
104 点
帖子
51
精华
0
在线时间
62 小时
注册时间
2015-12-22
最后登录
2025-4-24

楼主
甲氟喹3 发表于 2018-3-15 20:23:57 |AI写论文
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本身呀。

7
亚亚102717 发表于 2019-6-2 17:37:42
甲氟喹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数据集名

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

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

10
挞挞 发表于 2019-6-14 16:54:38
你可以做成两部分,第一部分把你所有的需要导入的sheet名做成一个数据集。
第二步宏循环调取sheet名导入就行了。

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-30 21:03