不服输的倔强 发表于 2019-8-8 15:01:18

SAS导出EXCEL文件的三种方法


SAS导出EXCEL文件的三种方法
以下基于SAS 9.3简体中文版
一、proc export
proc export data=a.dataname
outfile=‘D:\excelname’ /*excelname即为文件名,不需要附加后缀*/
dbms=xlsx replace label;
SHEET=“SHEET1” ;/* SHEET=“SHEET1” 可指定导出的文件名*/
run;
注意:
(一)DBMS使用xlsx配合replace参数将导致覆盖原有的EXCEL,即两个EXPORT不能在同一个EXCEL中建立多张sheet,但xlsx可以导出100万行的数据(即新版EXCEL文件的上限行数)。
(二)DBMS使用excel2000配合replace参数将不会覆盖原有的EXCEL,即两个EXPORT可以同一个EXCEL中建立多张sheet,但excel2000无法导出超过6.5行数据.
(三)从实际使用的经验看,export过程比使用libname导出的速度快,但libname excel可以对excel进行相关操作。

二、libname excel
/*libname excel 引擎基于excel2003,无法导出超过6.5万行数据*/
libname a excel “d:\excelname.xlsx”;
data a.sheet1;
set b.data;
run;
libname a clear; /* 必须清除逻辑名才能打开导出的EXCEL文件*/
注意,如果批量导出大量数据,如果导出的数据集为空,则libname不会建立一张空的sheet,示例如下:
libname a excel “d:\excelname.xlsx”;
%let number =1;
do number = 1 to 100;
data a.sheet&number;
set b.data;
where varname=&number;
run;
end;
若varname=14时,b.data不存在数据,则导出的excel表中没有名为14的sheet。

三、利用ODS结合proc report导出excel文件
ods tagsets.excelxp file=“D:\test.xlm” ;
/*SAS 9.3 使用XML才能正确导出数据,注意若使用xls导出的数据不能超过6.5万行*/
ods tagsets.excelxp options(sheet_name=‘text1’);
proc report data=dataname nowd;/* nowd选项才能输出到ODS,否则将输出到SAS的report窗口*/
column var1 var2;/*可以使用_all_一次性导出全部列*/
run;
ods tagsets.excelxp close;
注意:
(1)若SAS 9.4版本,可以直接使用ods excel file="D:\test.xlsx"导出excel文件,不必使用XML格式;
(2)ODS利用options(sheet_name=‘sheetname’)选项可以将数据导出到多张工作表。
页: [1]
查看完整版本: SAS导出EXCEL文件的三种方法