SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

查看: 1985|回复: 7
打印 上一主题 下一主题

请教如何从EXCEL里读取多个表?

[复制链接]

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
楼主
 楼主| 发表于 2007-8-14 10:24:04 | 只看该作者

请教如何从EXCEL里读取多个表?

一般读取一个表的格式如下:
PROC IMPORT OUT= win.LJY061
     DATAFILE= "F:\SAS程序\LJ-Y06.xls"
     DBMS=EXCEL2000 REPLACE;
     RANGE="sheet1$";
     GETNAMES=YES;

我想连续读取SHEET2,SHEET3,SHEET4,因为它们的数据格式是一样的,读取是没有问题,该怎么做呢?请指教!
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
沙发
 楼主| 发表于 2007-8-14 14:31:29 | 只看该作者

Re: 请教如何从EXCEL里读取多个表?

把输入文件和输出文件名改一下就行了.
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
板凳
 楼主| 发表于 2007-8-14 14:55:45 | 只看该作者

Re: 请教如何从EXCEL里读取多个表?

我是没有办法,数据量大,只能分到4个表里!
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
地板
 楼主| 发表于 2007-8-14 21:58:41 | 只看该作者

to winkon

最简单最爽的方法是:libname myxls 'c:\temp\sales.xls';
好像在SAS Programming I: Essentials就有介绍的,你可以找这本SAS培训教程来看看。
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
5#
 楼主| 发表于 2007-8-17 11:08:20 | 只看该作者

Re: 请教如何从EXCEL里读取多个表?

PROC IMPORT OUT= win.LJY061
DATAFILE= "F:\SAS程序\LJ-Y06.xls"
DBMS=EXCEL2000 REPLACE;
RANGE="sheet[color=#FF0000:f6601]2[/color:f6601]$";
GETNAMES=YES;
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
6#
 楼主| 发表于 2007-8-30 11:47:23 | 只看该作者

Re: 请教如何从EXCEL里读取多个表?

我是希望一次性读取ECXEL里的多个表到一个数据集里,上一楼的做法只是读取了sheet2
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
7#
 楼主| 发表于 2007-8-30 17:03:02 | 只看该作者

to winkon

写一个宏,就可以了,如
%macro rdata;
    %do i=1 %to 4;
            PROC IMPORT OUT= win.LJY06&i.
                     DATAFILE= "F:\SAS程序\LJ-Y06.xls"
                    DBMS=EXCEL2000 REPLACE;
                     RANGE="sheet&i.$";
                     GETNAMES=YES;
   %end;
%mend rdata;
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
8#
 楼主| 发表于 2007-9-7 09:51:16 | 只看该作者

Re: 请教如何从EXCEL里读取多个表?

%let dir=F:\SAS程序\;
%macro ReadXls (inf);
/*libname excellib excel "&dir.\&inf"; /* STEP 1 */
proc sql noprint; /* STEP 2 */
create table sheetname as
select tranwrd(memname, "''", "'") as sheetname
from sashelp.vstabvw
where libname="EXCELLIB";
select count(DISTINCT sheetname) into:cnt_sht
from sheetname;
select DISTINCT sheetname into :sheet1-:sheet%left(&cnt_sht)
from sheetname;
quit;
libname excellib clear; /* STEP 3 */
%do i=1 %to &cnt_sht;
proc import datafile="&dir.\&inf" /* STEP 4 */
out=sheet&i replace;
sheet="&&sheet&i";
getnames=yes;
mixed=yes;
run;
proc append base=master data=sheet&i force; /* STEP 5 */
run;
%end;
%mend ReadXls;
%ReadXls (data.xls)
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|小黑屋|手机版|Archiver|SAS中文论坛  

GMT+8, 2026-2-4 07:11 , Processed in 0.069321 second(s), 20 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表