SAS 如何读取excel中所有sheetname

每次EDC系统升级,我们总需要对升级前后的excel数据集、SAS数据集进行一致性比对,以保证升级前后数据完全一致。
我做了相应的SAS比对工具,但每次都要手动将所有数据集名称手敲一遍,这样未免太蠢了吧。。。
所以,我们需要学习如何让SAS自动读取excel中所有sheetname。

思路

1、定义两个空的逻辑库(升级\改库前后)备用。
2、通过SASHELP.vstabvw将excel中的sheet放到"EXCEL"逻辑库中,但这时的sheet不可读且,表名具有特殊的格式(eg:AE ->'AE$')。
3、将"EXCEL"逻辑库中的所有数据集名称放到"sheetname"表中。
4、利用compress去掉"sheetname"中所有观测里的特殊符号。
5、通过"sheetname"的观测生成sheetname相对应的宏变量。
6、通过循环和第5步产生的宏变量,将所有sheet中内容导入第1步生成的逻辑库中。

实现
*****************************需要修改内容*****************************;
libname pre "E:\Your previous libname";
libname post "E:\Your post libname";

%let bef_dir=E:\Your Before Directory.xlsx;
%let aft_dir=E:\Your After Directory.xlsx;
%let PROTOCOL=Your protocol id;
********************************************************************;

libname excel excel "&bef_dir";
proc sql noprint; 

create table sheetname as
select memname
from sashelp.vstabvw
where upcase(libname)= "EXCEL";

data sheetname;
set sheetname;
memname=compress(memname,"'$ ");
run;

data _null_;
    set sheetname nobs=num;
    n = _n_;
    call symputx("num",num);
    call symputx("COL"||left(put(n,3.)),memname);
run;

%put &COL1;


/*两段宏分别读取两个excel中的所有sheet*/
%macro importFile1();
%let i=1;
%do i=1 %to &num.;
    %let sheetName=&&COL&i.;
    proc import out=pre.&sheetName. dbms=excel replace datafile="&bef_dir";
        getnames=yes;
        sheet=&sheetName.;
    run;
%end;
%mend;

%importFile1();
后记

后续比较则通过循环proc compare即可,与主题无关,这边不赘述了。按这个思路,解决了第一版工具80%的问题,但在仍然存在未解决的问题:
如果sheetname中有空格,则需要去excel中将空格删除掉,否则程序会报错。这点我这边的思路是可以不进行第四部的compress,在import程序的主体中做文章。
demo重点在于记录这个方法,写法比较naive。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,802评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,109评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,683评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,458评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,452评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,505评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,901评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,550评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,763评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,556评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,629评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,330评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,898评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,897评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,140评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,807评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,339评论 2 342

推荐阅读更多精彩内容