全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
5739 5
2009-04-02

小弟把excel导入到了sas中,但我的excel数据有好多个sheet的,但sas中只有第一页的数据。

这是导入后保存的程序。应该怎么改改,才能显示导入所有的sheet呢?

PROC IMPORT OUT= KENNY.sz800
            DATAFILE= "E:\data transact1\SZ000701-900.xls"
            DBMS=EXCEL REPLACE;
     SHEET="'000701$'";
     GETNAMES=YES;
     MIXED=YES;
     SCANTEXT=YES;
     USEDATE=YES;
     SCANTIME=YES;
RUN;

二维码

扫码加我 拉你入群

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

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

全部回复
2009-4-2 23:30:00

你可以写个 macro,循环的把每个sheet存入不同的SAS Data set.

假如你的sheet 名字是 A, B, C, D

%let sheetnamelist = A/B/C/D;

%macro import();

%do i = 1 %to 4;

  %let name = %scan(&sheetnamelist ,&i,"/");

    PROC IMPORT OUT= KENNY.sz800_&name 
            DATAFILE= "E:\data transact1\SZ000701-900.xls"
            DBMS=EXCEL REPLACE;
     SHEET="'&name$'";
     GETNAMES=YES;
     MIXED=YES;
     SCANTEXT=YES;
     USEDATE=YES;
     SCANTIME=YES;
RUN;

%end;

%mend;

大概的思路就是这样,但程序仍然需要调试以针对具体情况。


二维码

扫码加我 拉你入群

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

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

2009-4-6 01:04:00

因为楼主的表名是连续的,直接用do循环不可以做么?

%macro import;

  %do i = 701 %to 900;

     PROC IMPORT OUT= KENNY.sz800_&i
            DATAFILE= "E:\data transact1\SZ000701-900.xls"
            DBMS=EXCEL REPLACE;
     SHEET="'000&i$'";
     GETNAMES=YES;
     MIXED=YES;
     SCANTEXT=YES;
     USEDATE=YES;
     SCANTIME=YES;
     RUN;

  %end;

%mend;

%import;

请楼主自己测试下,建议测试时循环次数选少些,这样看起来方便

二维码

扫码加我 拉你入群

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

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

2009-4-7 18:02:00

恩,谢谢了楼上两位了。

二维码

扫码加我 拉你入群

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

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

2009-4-9 13:05:00

    libname xx "E:\data transact1\SZ000701-900.xls" ;

    然后从explorer窗口找到 xx, xx中应该会有所有的数据集吧。

    libname xx clear;*取消数据库xx,确保在相应的物理路径下可以打开SZ000701-900.xls;

    楼主不妨试一下

二维码

扫码加我 拉你入群

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

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

2009-4-9 21:24:00
Write another block of "proc import" and read the second sheet into another dataset. then write a block of "data" and merge all datasets if need.
二维码

扫码加我 拉你入群

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

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

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群