楼主: lizhewenbei
12276 18

请教各位:proc import 在导入EXCEL时,为何总出各种问题。 [推广有奖]

  • 15关注
  • 5粉丝

副教授

36%

还不是VIP/贵宾

-

威望
0
论坛币
309 个
通用积分
11.4770
学术水平
4 点
热心指数
13 点
信用等级
5 点
经验
9699 点
帖子
609
精华
0
在线时间
496 小时
注册时间
2008-2-6
最后登录
2024-1-9

相似文件 换一批

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
虽然各位老师给我指点了很多,但是我今天再导入EXCEL的时候还是出了问题,希望高手指点:


/*公司基本信息:注册地*/
proc import out=Regist_area
datafile='E:\DATA\企业注册地\IPO_Cobasic_A.xls'
dbms=excel replace;getnames=yes;
range="IPO_Cobasic$A4:D2675";run;


原始的EXCEL数据集
原始的eXCEL

导入后的数据集
导入SAS后 IPO_Cobasic_A.xls (374.5 KB)

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:import EXCEL Port xcel exce replace import 个人信息 excel EXCEL

QQ图片20141114120001.jpg (27.17 KB)

QQ图片20141114120001.jpg

5.jpg (115.5 KB)

5.jpg

沙发
mingfeng07 学生认证  发表于 2014-11-14 13:43:12 |只看作者 |坛友微信交流群
试试把scantext=yes去掉
已有 1 人评分论坛币 学术水平 热心指数 信用等级 收起 理由
lizhewenbei + 2 + 1 + 1 + 1 精彩帖子

总评分: 论坛币 + 2  学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

使用道具

藤椅
sniperhgy 发表于 2014-11-14 15:41:03 |只看作者 |坛友微信交流群
dbms = excel时,datarow不可用。datarow用于读取平面文件(比如文本格式的文件)。至于想指定excel的读取范围,可以使用range=选项,比如有一个tab叫“Sheet1”,楼主想读取A4:D8的话,就可以
  1. proc import
  2.   out = temp
  3.   datafile = "xxx\yyy\zzz.xls"
  4.   dbms = excel replace;
  5.   range = "Sheet1$A4:D8";
  6. run;
复制代码
已有 2 人评分论坛币 学术水平 热心指数 信用等级 收起 理由
微笑糖果 + 1 + 1 + 1 精彩帖子
lizhewenbei + 2 + 1 + 1 + 1 精彩帖子

总评分: 论坛币 + 2  学术水平 + 2  热心指数 + 2  信用等级 + 2   查看全部评分

使用道具

板凳
lizhewenbei 学生认证  发表于 2014-11-14 17:29:46 |只看作者 |坛友微信交流群
mingfeng07 发表于 2014-11-14 13:43
试试把scantext=yes去掉
哈哈,又是您在指点,特别感谢!

使用道具

报纸
lizhewenbei 学生认证  发表于 2014-11-14 17:30:54 |只看作者 |坛友微信交流群
sniperhgy 发表于 2014-11-14 15:41
dbms = excel时,datarow不可用。datarow用于读取平面文件(比如文本格式的文件)。至于想指定excel的读取范 ...
非常感谢sniperhgy,如果我想从第3行读到最后一行呢?(我并不知道每个文件有多少个OBS),该怎么做呢?

使用道具

地板
sniperhgy 发表于 2014-11-15 14:00:54 |只看作者 |坛友微信交流群
lizhewenbei 发表于 2014-11-14 17:30
非常感谢sniperhgy,如果我想从第3行读到最后一行呢?(我并不知道每个文件有多少个OBS),该怎么做呢?
这个也可以办到,先用libname将excel文件连接成一个library,之后,不就可以知道每个表有多少obs了吗
  1. libname myexcel excel "xxx\yyy\zzz.xls";
复制代码
其中myexcel是library的名字,后面那个excel是引擎的名字。

使用道具

7
lizhewenbei 学生认证  发表于 2014-11-15 15:17:39 |只看作者 |坛友微信交流群
sniperhgy 发表于 2014-11-15 14:00
这个也可以办到,先用libname将excel文件连接成一个library,之后,不就可以知道每个表有多少obs了吗[smi ...
感觉功能就是:把excel直接导入sas,但是拖动特别慢,也很难拖到底部,看有多少obs啊。

我导入第一个excel后,要想导入第二个excel,还要把之前的libname覆盖掉。

稍显有点麻烦哦

使用道具

8
sniperhgy 发表于 2014-11-15 16:23:26 |只看作者 |坛友微信交流群
lizhewenbei 发表于 2014-11-15 15:17
感觉功能就是:把excel直接导入sas,但是拖动特别慢,也很难拖到底部,看有多少obs啊。

我导入第一个e ...
`(*∩_∩*)′,不用拖动,直接用proc sql部来确定有多少obs
  1. proc sql;
  2.   select count(*) into :obs_count
  3.   from lib.xxx
  4.   ;
  5. quit;
复制代码
至于说那个libname需要重新写的问题,可以利用macro,写一个循环,方法的话,楼主先自行研究一下,实在研究不出来,我会给出代码
已有 1 人评分论坛币 学术水平 热心指数 信用等级 收起 理由
lizhewenbei + 1 + 1 + 1 + 1 精彩帖子

总评分: 论坛币 + 1  学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

使用道具

9
lizhewenbei 学生认证  发表于 2014-11-15 16:47:11 |只看作者 |坛友微信交流群
sniperhgy 发表于 2014-11-15 16:23
`(*∩_∩*)′,不用拖动,直接用proc sql部来确定有多少obs至于说那个libname需要重新写的问题,可以利用 ...
sniperhgy,感谢你的指点,我已经自己编写了一个宏程序,放在了原帖上(原帖可以更方便地放置图片和附件),请你看看为何日志还会报错?

使用道具

10
sniperhgy 发表于 2014-11-15 20:00:10 |只看作者 |坛友微信交流群
lizhewenbei 发表于 2014-11-15 16:47
sniperhgy,感谢你的指点,我已经自己编写了一个宏程序,放在了原帖上(原帖可以更方便地放置图片和附件) ...
嗯,不错,写出了一个宏来实现读取多个文件。

log里面的不是错误,而是warning,内容是告诉楼主“在隐式的连接操作中,SCAN_TEXT选项将被忽略。如果想启用SCAN_TEXT功能,请在libname中添加DIRECT_SQL=NO选项”。我觉得这个问题不大,可以不用理会。

有一点我疏忽了,其实可以在那个proc sql的时候添加noprint选项,这样就不会写入一个html文件了。
  1. proc sql noprint;
  2.   select count(*)
  3.   from myexcel.CG_Director&i.
  4.   ;
  5. quit;
复制代码
此外,一个excel文件可以放入多个tab,没有必要一个文件一个tab。

还有一点,libname之后,推荐用libname myexcel clear;清空一下。这样出错的机会小一些。

楼主写的已经可以得到3个tab的obs了,之后,就可以引用obs_count宏变量来做一些事情了。

使用道具

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

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

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

GMT+8, 2024-4-28 07:20