全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
7860 2
2016-03-02
下面是我在网上盗的一道程序,能实现从excel中读取多个sheet的问题,原程序有错误,我改动了一下,但是输出的数据只有sheetname,其他的啥也没有,我想输出的是每个sheet存储的数据。
请各位英雄好汉 帮个忙吧!我用的是sas9.4版本,64位的。在d盘sas文件里存了一个cz.xlsx。
%let dir=d:\sas;
%macro ReadXls (name);
libname lb excel "&dir.\&name";
proc sql noprint;

create table sheetname as
select tranwrd(memname,"''","'") as sheetname
from sashelp.vstabvw
where libname= "lb";

select count(DISTINCT(sheetname)) into :number
from sheetname;
select DISTINCT(sheetname) into :sheet1- :sheet%left(&number)
from sheetname;
quit;

libname lb clear;
%do i=1 %to &number;
        proc import datafile= "&dir.\&name"
        out=sht&i replace;
        dbms=excel replace;
        sheet= &&sheet&i;
        getnames=yes;
        mixed=yes;
        run;

        data a&i;
        set lb.sht&i;
        run;
        proc print data=a&i;run;

        proc append base=master data=sht&i force;
        run;

%end ;
%mend ;
%ReadXls (cz.xlsx);

调试的数据 输出数据


二维码

扫码加我 拉你入群

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

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

全部回复
2017-7-28 10:51:21
程序有点小毛病,已帮你修改。另外,正好需要这段代码,感谢提供~
复制代码
二维码

扫码加我 拉你入群

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

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

2019-7-5 11:09:16
这里的程序需要知道表名人后再导入数据,建立的以Excel类型的数据库后,就可以直接读取数据集了。

libname lb excel "&dir.\&name";

proc sql noprint;

create table sheetname as
select tranwrd(memname,"''","'") as sheetname
from sashelp.vstabvw
where upcase(libname)= "LB";
quit;
data master;
set lb.'&sheetname'n;
run;

或是
data aaaa;
set lb.'发卡$'n;
run;


二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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