全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
6930 24
2013-02-25
悬赏 888 个论坛币 已解决
遇到两个问题,望各位高手帮下忙

第一个问题,我的sas是9.2的,无法导入xlsx文件,每次可将其转换成2000xls才能导入,现在遇到一大批xlsx,每个都手动转换太麻烦, 怎么实现对某个文件夹内的所有xlsx全部转换成xls,同时不要改文件名字,不一定要用sas,用别的程序也可以


第二个问题,每个excel有多个sheet,举例(假设有三个):一年级, 二年级,三年级
这是三个sheet的名字,导入sas时,每次要打开看excel,并且在import中sheet=""; 填上相应的sheet名字
如何实现一下功能
假设一个excel有三个sheet,
在不打开excel的情况下,对三个sheet依次导入sas生成三个datasets,并且每个datasets中增加一个变量,值为sheet的名字。
总之就是用程序获取sheet名字


问题比较多,但确实需要解决,求高手

最佳答案

bobguy 查看完整内容

1) The first one can be done in a excel vba. 2) The second one can be done by using libname engine. BTW you don't really need to know the tab/sheet names. Here is an example. libname S EXCEL 'c:\temp\book1.xlsx'; proc sql noprint; select catt(trim(libname),'.',quote(trim(memname)),'n') into: namelist seperated by ' ' from dictionary.tables where libname in ('S'); quit; % ...
二维码

扫码加我 拉你入群

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

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

全部回复
2013-2-25 22:59:58
1) The first one can be done in a excel vba.

2) The second one can be done by using libname engine. BTW you don't really need to know the tab/sheet names. Here is an example.


libname S EXCEL 'c:\temp\book1.xlsx';

proc sql noprint;
  select catt(trim(libname),'.',quote(trim(memname)),'n') into: namelist seperated by ' '
  from dictionary.tables
  where libname in ('S');
  quit;

%put &namelist;

data all;
   set &namelist;
run;

proc print;run;

********************log*************;
89  libname S EXCEL 'c:\temp\book1.xlsx';
NOTE: Libref S was successfully assigned as follows:
      Engine:        EXCEL
      Physical Name: c:\temp\book1.xlsx
290
291  proc sql noprint;
292    select catt(trim(libname),'.',quote(trim(memname)),'n') into: namelist separated by ' '
293    from dictionary.tables
294    where libname in ('S');
295    quit;
NOTE: PROCEDURE SQL used (Total process time):
      real time           0.00 seconds
      cpu time            0.01 seconds


296
297  %put &namelist;
S."a$"n S."e$"n S."f$"n
298
299  data all;
300     set &namelist;
301  run;

NOTE: There were 1 observations read from the data set S.'a$'n.
NOTE: There were 1 observations read from the data set S.'e$'n.
NOTE: There were 1 observations read from the data set S.'f$'n.
NOTE: The data set WORK.ALL has 3 observations and 3 variables.
NOTE: DATA statement used (Total process time):
      real time           0.01 seconds
      cpu time            0.01 seconds


302
303  proc print;run;

NOTE: There were 3 observations read from the data set WORK.ALL.
NOTE: PROCEDURE PRINT used (Total process time):
      real time           0.00 seconds
      cpu time            0.00 seconds
二维码

扫码加我 拉你入群

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

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

2013-2-25 23:07:54
提示: 作者被禁止或删除 内容自动屏蔽
二维码

扫码加我 拉你入群

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

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

2013-2-25 23:12:51
贴一段davil大神以前写过的一段代码,程序可以控制电脑不断打开word,并将word内容填入到excel中

这段代码我不太懂,还请高人来改写一下,以实现:控制电脑自动打开excel,并自动另存为excel2000格式
复制代码
二维码

扫码加我 拉你入群

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

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

2013-2-26 00:27:07
用vba可以实现的
二维码

扫码加我 拉你入群

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

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

2013-2-26 09:09:06
如果SAS版本低于9.2 TS2M2 以下,是无法导入XLSX文件的。
你的意思是希望用SAS 调用EXCEL07 或10 的程序,另存为xls ,然后导入?或者类似DDE?
如果这个问题解决了,第二个问题就很好解决了。
二维码

扫码加我 拉你入群

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

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

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

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